2. 목 차
1. Hardware와 Operating System
2. Rootkit과 User Mode Hooking
3. Rootkit과 Kernel Mode Hooking
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.