19
Windows SystemRootkit 2009.10.20 ㈜ 안철수연구소 ASEC (AhnLab Security Emergency response Center) Anti-Virus Researcher, CISSP 장 영 준 주임 연구원

3. windows system과 rootkit

Embed Size (px)

DESCRIPTION

2009년 10월 서울여대 강연 자료

Citation preview

Page 1: 3. windows system과 rootkit

Windows System과 Rootkit

2009.10.20

㈜ 안철수연구소

ASEC (AhnLab Security Emergency response Center)

Anti-Virus Researcher, CISSP

장 영 준 주임 연구원

Page 2: 3. windows system과 rootkit

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

목 차

1. Hardware와 Operating System

2. Rootkit과 User Mode Hooking

3. Rootkit과 Kernel Mode Hooking

Page 3: 3. windows system과 rootkit

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

1. Hardware와 Operating System

Page 4: 3. windows system과 rootkit

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

Page 5: 3. windows system과 rootkit

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 GateGDT와 LDT에 포함되어 있으며 이를 통해 far call 을 수행할 수 있으며 call 발생 시새로운 Ring 레벨이 할당

[윈도우 2000의 GDT]

5

Page 6: 3. windows system과 rootkit

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에서 해당 시스템 콜의 루틴을 찾음

Page 7: 3. windows system과 rootkit

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

2. Rootkit과 User Mode Hooking

Page 8: 3. windows system과 rootkit

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

1) Rootkit

2. Rootkit과 User Mode Hooking

1) Rootkit – 컴퓨터 관리자 계정인 Root 계정의 권한을 획득하기 위해 사용되는 프로그램

Rootkit은 영구적 또는 일관적으로 탐지 되는 않는 형태로 컴퓨터에 존재할 수 있게해주는 프로그램들과 코드로 이루어진 세트

Rootkit은 User Mode와 Kernel Mode 요소를 모두 포함 할 수 있음

Page 9: 3. windows system과 rootkit

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

2) Hooking

1) Hooking – 어플리케이션의 정상적인 실행 흐름을 중간에서 가로채어 원하는 정보에 대한 수정을 가하는 것

2) API Hooking – 특정 어플리케이션의 메모리 주소 공간에 접근하여 Kernel32.dll 안의 함수를 변경시키거나 어플리케이션의 Import Table을 변경

2. Rootkit과 User Mode Hooking

Page 10: 3. windows system과 rootkit

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의 함수가 대신 실행

Page 11: 3. windows system과 rootkit

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

2. Rootkit과 User Mode Hooking

1) Inline Function Hooking – 후킹 대상 함수 바이너리의 처음 몇 바이트를 교체하는방식으로 구현

함수의 처음 5바이트를 Jump를 수행하는 5바이트 명령으로 교체 한 후 이 전 5바이트 명령은 별도로 저장

후킹 된 함수가 호출되면 Jump 명령에 따라 Rootkit 함수가 호출

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

4) Inline Function Hooking

Page 12: 3. windows system과 rootkit

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

3. Rootkit과 Kernel Mode Hooking

Page 13: 3. windows system과 rootkit

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 서비스에 대한 서비스 주소 변경으로 프로세스를 은폐

Page 14: 3. windows system과 rootkit

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의 커널 함수가 호출되기 전에 먼저 후킹 함수가 호출

Page 15: 3. windows system과 rootkit

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을 후킹

Page 16: 3. windows system과 rootkit

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의 오브젝트 정보를 직접적으로 수정하거나 조작하는 방식

Page 17: 3. windows system과 rootkit

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

3. Rootkit과 Kernel Mode Hooking

Page 18: 3. windows system과 rootkit

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

Page 19: 3. windows system과 rootkit

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

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.

AhnLabThe Joy of Care-Free Your Internet World