SlideShare a Scribd company logo
1 of 19
Download to read offline
Windows System과 Rootkit

2009.10.20

㈜ 안철수연구소
ASEC (AhnLab Security Emergency response Center)
Anti-Virus Researcher, CISSP

장 영 준 주임 연구원
목 차
1. Hardware와 Operating System
2. Rootkit과 User Mode Hooking

3. Rootkit과 Kernel Mode Hooking

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
1. Hardware와 Operating System

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
1. Hardware와 Operating System
1) 인텔 x86 Micro Process의 Ring Level
1) 인텔 x86 마이크로 프로세서에서는 접근 제어를 위해 Ring 이라는 개념을 통해 프
로세스간의 독립성을 구현
2) Ring은 Ring 0에서 3까지 4단계의 레벨이 있으며 Ring 0가 가장 권한이 높은 특권
모드이며 Ring 3가 가장 낮은 모드
3) 윈도우 운영체제의 모든 커널 코드는 Ring 0에서 동작하며 일반 어플리케이션은
Ring 3에서 동작
4) 일반적으로 모든 어플리케이션은 Ring
레벨을 할당 받으며 할당 받은 Ring 보다
낮은 영역은 접근 할 수 없음

4

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
1. Hardware와 Operating System
2) 인텔 x86 Micro Process의 Memory Descriptor Table
1) GDT (Global Descriptor Table)
인텔 x86 CPU는 메모리 페이지 접근시 GDT의 Segment Descriptor를 검사로
Segment Descriptor의 DPL (Descriptor Privilege Level)의 접근 Ring 레벨 확인
2) LDT (Local Descriptor Table)
LDT에 의해 각 작업들의 고유 Descriptor Set을 가질 수 있음.
3) Gall Gate
GDT와 LDT에 포함되어 있으며 이를 통해 far call 을 수행할 수 있으며 call 발생 시
새로운 Ring 레벨이 할당

[윈도우 2000의 GDT]
5

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
1. Hardware와 Operating System
3) Operating System의 Descriptor Table
1) IDT (Interrupt Descriptor Table)
Interrupt Hander를 찾기 위해서 사용되며 인터럽트를 처리하는 함수들의 위치를
알아 낼 수 있음
인터럽트는 각종 로우 레벨 기능을 수행하기 위해 사용
IDT는 256개의 엔트리로 이루어진 배열이며 엔트리 하나당 하나의 인터럽트에 대
응, 하나의 프로세서에 최고 256개의 인터럽트가 사용 될 수 있음
2) SSDT (System Service Dispatch Table)
시스템 콜을 처리 하기 위한 함수를 찾을 때 사용
어플리케이션이 시스템 콜 호출 방법에는 INT 2E를 이용하거나 Sysenter 명령을 이
용
시스템 콜을 호출하면 커널에서 KisystemService 함수가 호출되며 이 함수는 EAX
레지스터에서 시스템 콜 번호를 읽어 SSDT에서 해당 시스템 콜의 루틴을 찾음

6

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Rootkit과 User Mode Hooking

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Rootkit과 User Mode Hooking
1) Rootkit
1) Rootkit – 컴퓨터 관리자 계정인 Root 계정의 권한을 획득하기 위해 사용되는 프로
그램
Rootkit은 영구적 또는 일관적으로 탐지 되는 않는 형태로 컴퓨터에 존재할 수 있게
해주는 프로그램들과 코드로 이루어진 세트
Rootkit은 User Mode와 Kernel Mode 요소를 모두 포함 할 수 있음

8

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Rootkit과 User Mode Hooking
2) Hooking
1) Hooking – 어플리케이션의 정상적인 실행 흐름을 중간에서 가로채어 원하는 정보
에 대한 수정을 가하는 것
2) API Hooking – 특정 어플리케이션의 메모리 주소 공간에 접근하여 Kernel32.dll 안
의 함수를 변경시키거나 어플리케이션의 Import Table을 변경

9

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Rootkit과 User Mode Hooking
3) IAT (Import Address Table) Hooking
1) IAT Hooking – 메모리상에 존재하는 대상 어플리케이션 이미지의 PE 포맷을 분석해
서 IAT의 함수 주소를 Rootkit의 후킹 함수 주소로 교체
주소가 교체된 함수가 호출 될 때 원래의 함수가 아닌 Rootkit의 함수가 대신 실행

10

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Rootkit과 User Mode Hooking
4) Inline Function Hooking
1) Inline Function Hooking – 후킹 대상 함수 바이너리의 처음 몇 바이트를 교체하는
방식으로 구현
함수의 처음 5바이트를 Jump를 수행하는 5바이트 명령으로 교체 한 후 이 전 5바이
트 명령은 별도로 저장
후킹 된 함수가 호출되면 Jump 명령에 따라 Rootkit 함수가 호출

호출된 Rootkit 함수는 자신의 작업을 완료하고 원래의 5바이트 데이터를 해당 함
수를 다시 써넣어서 후킹 되기 이전 상태로 복구

11

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
3. Rootkit과 Kernel Mode Hooking

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
3. Rootkit과 Kernel Mode Hooking
1) SSDT (System Service Dispatch Table) Hooking
1) SSDT Hooking – SSDT (System Service Dispatch Table)는 Subsystem인
Ntoskrnl.exe가 관리하는 서비스 호출 주소 테이블 구조체임
이 주소 테이블은 각 서비스의 주소를 담고 있기 때문에 테이블 변조로 간단히 서비
스 내용에 대한 조작이 가능
SSDT의 NtQuerySystemInformation 서비스에 대한 서비스 주소 변경으로 프로세
스를 은폐

13

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
3. Rootkit과 Kernel Mode Hooking
2) IDT (Interrupt Descriptor Table) Hooking
1) IDT Hooking – IDT (Interrupt Descriptor Table)은 인터럽트를 처리하는데 사용되
는 테이블임
SSDT (System Service Dispatch Table)의 시스템 서비스 함수가 호출(IDT 0x2E 번
째 엔트리)되는 경우에 각각 어떤 처리가 이뤄져야 하는지에 대한 정보가 포함
0x2E 벡터를 후킹하면 SSDT의 커널 함수가 호출되기 전에 먼저 후킹 함수가 호출

14

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
3. Rootkit과 Kernel Mode Hooking
3) Device Driver Object의 Major Function Hooking
1) Major Function Hooking – 각 IRP (I/O Request Packet)의 종류에 따라서 IRP를 처
리하는 함수를 Major Function이라고 하며 이 Major Function들의 주소를 관리하
는 것을 Major Function Table 이라고 함
디바이스 드라이버는 로드 되면서 여러 형태의 IRP를 처리하기 위한 함수 리스트를
초기화 함.
특정 디바이스 드라이버의 Major Function을 후킹

15

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
3. Rootkit과 Kernel Mode Hooking
4) DKOM (Direct Kernel Object Manipulation)
1) DKOM (Direct Kernel Object Manipulation) - 윈도우 커널 레벨의 Object
Manager는 시스템을 구성하는 다양한 오브젝트 객체에 대한 정보를 관리함
여기 Object Manager의 오브젝트 정보를 직접적으로 수정하거나 조작하는 방식

16

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
3. Rootkit과 Kernel Mode Hooking

17

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
* Reference

1) MICROSOFT WINDOWS INTERNALS (제4판)
2) WINDOWS VIA C/C++
3) 루트킷 - 윈도우 커널 조작의 미학
4) The Rootkit Arsenal : Escape and Evasion in the Dark Corners of the System

18

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
AhnLab
The Joy of Care-Free Your Internet World

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
AhnLab, the AhnLab logo, and V3 are trademarks or registered trademarks of AhnLab, Inc.,
in Korea and certain other countries. All other trademarks mentioned in this document are the property of their respective owners.

19

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.

More Related Content

What's hot

3.ahn report를 이용한 악성코드 대응
3.ahn report를 이용한 악성코드 대응3.ahn report를 이용한 악성코드 대응
3.ahn report를 이용한 악성코드 대응Youngjun Chang
 
2.악성코드와 분석 방안
2.악성코드와 분석 방안2.악성코드와 분석 방안
2.악성코드와 분석 방안Youngjun Chang
 
3. 악성코드 분석 사례
3. 악성코드 분석 사례3. 악성코드 분석 사례
3. 악성코드 분석 사례Youngjun Chang
 
2. 악성코드 분석 방법론과 기법
2. 악성코드 분석 방법론과 기법2. 악성코드 분석 방법론과 기법
2. 악성코드 분석 방법론과 기법Youngjun Chang
 
1. 악성코드 진단 기법 개론
1. 악성코드 진단 기법 개론1. 악성코드 진단 기법 개론
1. 악성코드 진단 기법 개론Youngjun Chang
 
Windows Vista Security
Windows Vista SecurityWindows Vista Security
Windows Vista SecurityYoungjun Chang
 
4. reverse engineering basic
4. reverse engineering basic4. reverse engineering basic
4. reverse engineering basicYoungjun Chang
 
악성코드 분석 도구
악성코드 분석 도구악성코드 분석 도구
악성코드 분석 도구Youngjun Chang
 
악성코드와 시스템 복구
악성코드와 시스템 복구악성코드와 시스템 복구
악성코드와 시스템 복구Youngjun Chang
 
악성코드와 분석 방법
악성코드와 분석 방법악성코드와 분석 방법
악성코드와 분석 방법Youngjun Chang
 
보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법Youngjun Chang
 
2007년 6월 악성코드 최신 동향과 대응
2007년 6월 악성코드 최신 동향과 대응2007년 6월 악성코드 최신 동향과 대응
2007년 6월 악성코드 최신 동향과 대응Youngjun Chang
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법Youngjun Chang
 
악성코드와 기업의 악성코드 대응
악성코드와 기업의 악성코드 대응악성코드와 기업의 악성코드 대응
악성코드와 기업의 악성코드 대응Youngjun Chang
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안Youngjun Chang
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안Youngjun Chang
 
우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기Hoyoung Jung
 
악성코드 최신 동향과 분석 방안
악성코드 최신 동향과 분석 방안악성코드 최신 동향과 분석 방안
악성코드 최신 동향과 분석 방안Youngjun Chang
 
악성 코드와 보안 위협 동향
악성 코드와 보안 위협 동향악성 코드와 보안 위협 동향
악성 코드와 보안 위협 동향Youngjun Chang
 

What's hot (20)

3.ahn report를 이용한 악성코드 대응
3.ahn report를 이용한 악성코드 대응3.ahn report를 이용한 악성코드 대응
3.ahn report를 이용한 악성코드 대응
 
2.악성코드와 분석 방안
2.악성코드와 분석 방안2.악성코드와 분석 방안
2.악성코드와 분석 방안
 
3. 악성코드 분석 사례
3. 악성코드 분석 사례3. 악성코드 분석 사례
3. 악성코드 분석 사례
 
2. 악성코드 분석 방법론과 기법
2. 악성코드 분석 방법론과 기법2. 악성코드 분석 방법론과 기법
2. 악성코드 분석 방법론과 기법
 
1. 악성코드 진단 기법 개론
1. 악성코드 진단 기법 개론1. 악성코드 진단 기법 개론
1. 악성코드 진단 기법 개론
 
Windows Vista Security
Windows Vista SecurityWindows Vista Security
Windows Vista Security
 
4. reverse engineering basic
4. reverse engineering basic4. reverse engineering basic
4. reverse engineering basic
 
악성코드 분석 도구
악성코드 분석 도구악성코드 분석 도구
악성코드 분석 도구
 
악성코드와 시스템 복구
악성코드와 시스템 복구악성코드와 시스템 복구
악성코드와 시스템 복구
 
악성코드와 분석 방법
악성코드와 분석 방법악성코드와 분석 방법
악성코드와 분석 방법
 
보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법
 
2007년 6월 악성코드 최신 동향과 대응
2007년 6월 악성코드 최신 동향과 대응2007년 6월 악성코드 최신 동향과 대응
2007년 6월 악성코드 최신 동향과 대응
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
 
악성코드와 기업의 악성코드 대응
악성코드와 기업의 악성코드 대응악성코드와 기업의 악성코드 대응
악성코드와 기업의 악성코드 대응
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안
 
악성코드와 웜
악성코드와 웜악성코드와 웜
악성코드와 웜
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안
 
우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기
 
악성코드 최신 동향과 분석 방안
악성코드 최신 동향과 분석 방안악성코드 최신 동향과 분석 방안
악성코드 최신 동향과 분석 방안
 
악성 코드와 보안 위협 동향
악성 코드와 보안 위협 동향악성 코드와 보안 위협 동향
악성 코드와 보안 위협 동향
 

Viewers also liked

1.악성코드 최신 동향과 기법
1.악성코드 최신 동향과 기법1.악성코드 최신 동향과 기법
1.악성코드 최신 동향과 기법Youngjun Chang
 
2.악성 코드와 최근의 동향
2.악성 코드와 최근의 동향2.악성 코드와 최근의 동향
2.악성 코드와 최근의 동향Youngjun Chang
 
1. 2009년 상반기 보안 위협 동향
1. 2009년 상반기 보안 위협 동향1. 2009년 상반기 보안 위협 동향
1. 2009년 상반기 보안 위협 동향Youngjun Chang
 
악성코드 최신 동향과 기법
악성코드 최신 동향과 기법악성코드 최신 동향과 기법
악성코드 최신 동향과 기법Youngjun Chang
 
1. 보안 위협 동향과 주요 보안 위협 특징
1. 보안 위협 동향과 주요 보안 위협 특징1. 보안 위협 동향과 주요 보안 위협 특징
1. 보안 위협 동향과 주요 보안 위협 특징Youngjun Chang
 
악성코드와 개인 정보 보호
악성코드와 개인 정보 보호악성코드와 개인 정보 보호
악성코드와 개인 정보 보호Youngjun Chang
 
보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안Youngjun Chang
 
중국 It문화와 해커
중국 It문화와 해커중국 It문화와 해커
중국 It문화와 해커Youngjun Chang
 

Viewers also liked (8)

1.악성코드 최신 동향과 기법
1.악성코드 최신 동향과 기법1.악성코드 최신 동향과 기법
1.악성코드 최신 동향과 기법
 
2.악성 코드와 최근의 동향
2.악성 코드와 최근의 동향2.악성 코드와 최근의 동향
2.악성 코드와 최근의 동향
 
1. 2009년 상반기 보안 위협 동향
1. 2009년 상반기 보안 위협 동향1. 2009년 상반기 보안 위협 동향
1. 2009년 상반기 보안 위협 동향
 
악성코드 최신 동향과 기법
악성코드 최신 동향과 기법악성코드 최신 동향과 기법
악성코드 최신 동향과 기법
 
1. 보안 위협 동향과 주요 보안 위협 특징
1. 보안 위협 동향과 주요 보안 위협 특징1. 보안 위협 동향과 주요 보안 위협 특징
1. 보안 위협 동향과 주요 보안 위협 특징
 
악성코드와 개인 정보 보호
악성코드와 개인 정보 보호악성코드와 개인 정보 보호
악성코드와 개인 정보 보호
 
보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안
 
중국 It문화와 해커
중국 It문화와 해커중국 It문화와 해커
중국 It문화와 해커
 

Similar to 3. windows system과 rootkit

Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법Youngjun Chang
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은jieun kim
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driverjumiss
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은jieun kim
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KOGangSeok Lee
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇Seungyong Lee
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)Ubuntu Korea Community
 
오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기Jaehwa Park
 
Linux Kernel 101 for Beginner
Linux Kernel 101 for BeginnerLinux Kernel 101 for Beginner
Linux Kernel 101 for BeginnerInfraEngineer
 
Seoul Conference - Iotivity 오픈소스 기술 r2
Seoul Conference - Iotivity 오픈소스 기술 r2Seoul Conference - Iotivity 오픈소스 기술 r2
Seoul Conference - Iotivity 오픈소스 기술 r2Open Interconnect Consortium
 
IoTivity 오픈소스 기술
IoTivity 오픈소스 기술IoTivity 오픈소스 기술
IoTivity 오픈소스 기술Wonsuk Lee
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1Jinkyoung Kim
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoMario Cho
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)Ubuntu Korea Community
 
[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemd[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemdJi-Woong Choi
 
Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?유명환 FunFun Yoo
 
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹GangSeok Lee
 
Multithread pattern 소개
Multithread pattern 소개Multithread pattern 소개
Multithread pattern 소개Sunghyouk Bae
 
Data-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTSData-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTSSukwoo Lee
 

Similar to 3. windows system과 rootkit (20)

Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driver
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
 
오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기
 
Linux Kernel 101 for Beginner
Linux Kernel 101 for BeginnerLinux Kernel 101 for Beginner
Linux Kernel 101 for Beginner
 
Seoul Conference - Iotivity 오픈소스 기술 r2
Seoul Conference - Iotivity 오픈소스 기술 r2Seoul Conference - Iotivity 오픈소스 기술 r2
Seoul Conference - Iotivity 오픈소스 기술 r2
 
IoTivity 오픈소스 기술
IoTivity 오픈소스 기술IoTivity 오픈소스 기술
IoTivity 오픈소스 기술
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 
[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemd[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemd
 
Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?
 
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
 
Multithread pattern 소개
Multithread pattern 소개Multithread pattern 소개
Multithread pattern 소개
 
Data-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTSData-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTS
 

More from Youngjun Chang

IT보안과 사회공학(Social Engineering)
IT보안과 사회공학(Social Engineering)IT보안과 사회공학(Social Engineering)
IT보안과 사회공학(Social Engineering)Youngjun Chang
 
Volatility를 이용한 memory forensics
Volatility를 이용한 memory forensicsVolatility를 이용한 memory forensics
Volatility를 이용한 memory forensicsYoungjun Chang
 
Apt(advanced persistent threat) 공격의 현재와 대응 방안
Apt(advanced persistent threat) 공격의 현재와 대응 방안Apt(advanced persistent threat) 공격의 현재와 대응 방안
Apt(advanced persistent threat) 공격의 현재와 대응 방안Youngjun Chang
 
2011년 보안 이슈와 2012년 보안 위협 예측
2011년 보안 이슈와 2012년 보안 위협 예측2011년 보안 이슈와 2012년 보안 위협 예측
2011년 보안 이슈와 2012년 보안 위협 예측Youngjun Chang
 
클라우드 서비스를 이용한 APT 대응
클라우드 서비스를 이용한 APT 대응클라우드 서비스를 이용한 APT 대응
클라우드 서비스를 이용한 APT 대응Youngjun Chang
 
보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안Youngjun Chang
 
SNS 보안 위협 사례
SNS 보안 위협 사례SNS 보안 위협 사례
SNS 보안 위협 사례Youngjun Chang
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법Youngjun Chang
 
보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안Youngjun Chang
 
2010년 상반기 보안 위협 동향과 주요 보안 위협
2010년 상반기 보안 위협 동향과 주요 보안 위협2010년 상반기 보안 위협 동향과 주요 보안 위협
2010년 상반기 보안 위협 동향과 주요 보안 위협Youngjun Chang
 
악성코드와 개인 정보 보호
악성코드와 개인 정보 보호악성코드와 개인 정보 보호
악성코드와 개인 정보 보호Youngjun Chang
 
중국 보안 위협 동향
중국 보안 위협 동향중국 보안 위협 동향
중국 보안 위협 동향Youngjun Chang
 

More from Youngjun Chang (13)

IT보안과 사회공학(Social Engineering)
IT보안과 사회공학(Social Engineering)IT보안과 사회공학(Social Engineering)
IT보안과 사회공학(Social Engineering)
 
Volatility를 이용한 memory forensics
Volatility를 이용한 memory forensicsVolatility를 이용한 memory forensics
Volatility를 이용한 memory forensics
 
Apt(advanced persistent threat) 공격의 현재와 대응 방안
Apt(advanced persistent threat) 공격의 현재와 대응 방안Apt(advanced persistent threat) 공격의 현재와 대응 방안
Apt(advanced persistent threat) 공격의 현재와 대응 방안
 
2011년 보안 이슈와 2012년 보안 위협 예측
2011년 보안 이슈와 2012년 보안 위협 예측2011년 보안 이슈와 2012년 보안 위협 예측
2011년 보안 이슈와 2012년 보안 위협 예측
 
클라우드 서비스를 이용한 APT 대응
클라우드 서비스를 이용한 APT 대응클라우드 서비스를 이용한 APT 대응
클라우드 서비스를 이용한 APT 대응
 
APT Case Study
APT Case StudyAPT Case Study
APT Case Study
 
보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안
 
SNS 보안 위협 사례
SNS 보안 위협 사례SNS 보안 위협 사례
SNS 보안 위협 사례
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
 
보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안보안 위협 동향과 대응 방안
보안 위협 동향과 대응 방안
 
2010년 상반기 보안 위협 동향과 주요 보안 위협
2010년 상반기 보안 위협 동향과 주요 보안 위협2010년 상반기 보안 위협 동향과 주요 보안 위협
2010년 상반기 보안 위협 동향과 주요 보안 위협
 
악성코드와 개인 정보 보호
악성코드와 개인 정보 보호악성코드와 개인 정보 보호
악성코드와 개인 정보 보호
 
중국 보안 위협 동향
중국 보안 위협 동향중국 보안 위협 동향
중국 보안 위협 동향
 

3. windows system과 rootkit

  • 1. Windows System과 Rootkit 2009.10.20 ㈜ 안철수연구소 ASEC (AhnLab Security Emergency response Center) Anti-Virus Researcher, CISSP 장 영 준 주임 연구원
  • 2. 목 차 1. Hardware와 Operating System 2. Rootkit과 User Mode Hooking 3. Rootkit과 Kernel Mode Hooking Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 3. 1. Hardware와 Operating System Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 4. 1. Hardware와 Operating System 1) 인텔 x86 Micro Process의 Ring Level 1) 인텔 x86 마이크로 프로세서에서는 접근 제어를 위해 Ring 이라는 개념을 통해 프 로세스간의 독립성을 구현 2) Ring은 Ring 0에서 3까지 4단계의 레벨이 있으며 Ring 0가 가장 권한이 높은 특권 모드이며 Ring 3가 가장 낮은 모드 3) 윈도우 운영체제의 모든 커널 코드는 Ring 0에서 동작하며 일반 어플리케이션은 Ring 3에서 동작 4) 일반적으로 모든 어플리케이션은 Ring 레벨을 할당 받으며 할당 받은 Ring 보다 낮은 영역은 접근 할 수 없음 4 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 5. 1. Hardware와 Operating System 2) 인텔 x86 Micro Process의 Memory Descriptor Table 1) GDT (Global Descriptor Table) 인텔 x86 CPU는 메모리 페이지 접근시 GDT의 Segment Descriptor를 검사로 Segment Descriptor의 DPL (Descriptor Privilege Level)의 접근 Ring 레벨 확인 2) LDT (Local Descriptor Table) LDT에 의해 각 작업들의 고유 Descriptor Set을 가질 수 있음. 3) Gall Gate GDT와 LDT에 포함되어 있으며 이를 통해 far call 을 수행할 수 있으며 call 발생 시 새로운 Ring 레벨이 할당 [윈도우 2000의 GDT] 5 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 6. 1. Hardware와 Operating System 3) Operating System의 Descriptor Table 1) IDT (Interrupt Descriptor Table) Interrupt Hander를 찾기 위해서 사용되며 인터럽트를 처리하는 함수들의 위치를 알아 낼 수 있음 인터럽트는 각종 로우 레벨 기능을 수행하기 위해 사용 IDT는 256개의 엔트리로 이루어진 배열이며 엔트리 하나당 하나의 인터럽트에 대 응, 하나의 프로세서에 최고 256개의 인터럽트가 사용 될 수 있음 2) SSDT (System Service Dispatch Table) 시스템 콜을 처리 하기 위한 함수를 찾을 때 사용 어플리케이션이 시스템 콜 호출 방법에는 INT 2E를 이용하거나 Sysenter 명령을 이 용 시스템 콜을 호출하면 커널에서 KisystemService 함수가 호출되며 이 함수는 EAX 레지스터에서 시스템 콜 번호를 읽어 SSDT에서 해당 시스템 콜의 루틴을 찾음 6 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 7. 2. Rootkit과 User Mode Hooking Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 8. 2. Rootkit과 User Mode Hooking 1) Rootkit 1) Rootkit – 컴퓨터 관리자 계정인 Root 계정의 권한을 획득하기 위해 사용되는 프로 그램 Rootkit은 영구적 또는 일관적으로 탐지 되는 않는 형태로 컴퓨터에 존재할 수 있게 해주는 프로그램들과 코드로 이루어진 세트 Rootkit은 User Mode와 Kernel Mode 요소를 모두 포함 할 수 있음 8 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 9. 2. Rootkit과 User Mode Hooking 2) Hooking 1) Hooking – 어플리케이션의 정상적인 실행 흐름을 중간에서 가로채어 원하는 정보 에 대한 수정을 가하는 것 2) API Hooking – 특정 어플리케이션의 메모리 주소 공간에 접근하여 Kernel32.dll 안 의 함수를 변경시키거나 어플리케이션의 Import Table을 변경 9 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 10. 2. Rootkit과 User Mode Hooking 3) IAT (Import Address Table) Hooking 1) IAT Hooking – 메모리상에 존재하는 대상 어플리케이션 이미지의 PE 포맷을 분석해 서 IAT의 함수 주소를 Rootkit의 후킹 함수 주소로 교체 주소가 교체된 함수가 호출 될 때 원래의 함수가 아닌 Rootkit의 함수가 대신 실행 10 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 11. 2. Rootkit과 User Mode Hooking 4) Inline Function Hooking 1) Inline Function Hooking – 후킹 대상 함수 바이너리의 처음 몇 바이트를 교체하는 방식으로 구현 함수의 처음 5바이트를 Jump를 수행하는 5바이트 명령으로 교체 한 후 이 전 5바이 트 명령은 별도로 저장 후킹 된 함수가 호출되면 Jump 명령에 따라 Rootkit 함수가 호출 호출된 Rootkit 함수는 자신의 작업을 완료하고 원래의 5바이트 데이터를 해당 함 수를 다시 써넣어서 후킹 되기 이전 상태로 복구 11 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 12. 3. Rootkit과 Kernel Mode Hooking Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 13. 3. Rootkit과 Kernel Mode Hooking 1) SSDT (System Service Dispatch Table) Hooking 1) SSDT Hooking – SSDT (System Service Dispatch Table)는 Subsystem인 Ntoskrnl.exe가 관리하는 서비스 호출 주소 테이블 구조체임 이 주소 테이블은 각 서비스의 주소를 담고 있기 때문에 테이블 변조로 간단히 서비 스 내용에 대한 조작이 가능 SSDT의 NtQuerySystemInformation 서비스에 대한 서비스 주소 변경으로 프로세 스를 은폐 13 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 14. 3. Rootkit과 Kernel Mode Hooking 2) IDT (Interrupt Descriptor Table) Hooking 1) IDT Hooking – IDT (Interrupt Descriptor Table)은 인터럽트를 처리하는데 사용되 는 테이블임 SSDT (System Service Dispatch Table)의 시스템 서비스 함수가 호출(IDT 0x2E 번 째 엔트리)되는 경우에 각각 어떤 처리가 이뤄져야 하는지에 대한 정보가 포함 0x2E 벡터를 후킹하면 SSDT의 커널 함수가 호출되기 전에 먼저 후킹 함수가 호출 14 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 15. 3. Rootkit과 Kernel Mode Hooking 3) Device Driver Object의 Major Function Hooking 1) Major Function Hooking – 각 IRP (I/O Request Packet)의 종류에 따라서 IRP를 처 리하는 함수를 Major Function이라고 하며 이 Major Function들의 주소를 관리하 는 것을 Major Function Table 이라고 함 디바이스 드라이버는 로드 되면서 여러 형태의 IRP를 처리하기 위한 함수 리스트를 초기화 함. 특정 디바이스 드라이버의 Major Function을 후킹 15 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 16. 3. Rootkit과 Kernel Mode Hooking 4) DKOM (Direct Kernel Object Manipulation) 1) DKOM (Direct Kernel Object Manipulation) - 윈도우 커널 레벨의 Object Manager는 시스템을 구성하는 다양한 오브젝트 객체에 대한 정보를 관리함 여기 Object Manager의 오브젝트 정보를 직접적으로 수정하거나 조작하는 방식 16 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 17. 3. Rootkit과 Kernel Mode Hooking 17 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 18. * Reference 1) MICROSOFT WINDOWS INTERNALS (제4판) 2) WINDOWS VIA C/C++ 3) 루트킷 - 윈도우 커널 조작의 미학 4) The Rootkit Arsenal : Escape and Evasion in the Dark Corners of the System 18 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 19. AhnLab The Joy of Care-Free Your Internet World Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved. AhnLab, the AhnLab logo, and V3 are trademarks or registered trademarks of AhnLab, Inc., in Korea and certain other countries. All other trademarks mentioned in this document are the property of their respective owners. 19 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.