본문 바로가기

추천도서/보유서적

루트킷(윈도우 커널 조작의 미학)


지은이  그렉 호글런드/윤근용  출판사 에이콘  |   발행일 2007년 11월 30일

발행일 2007-11-30
ISBN 9788960770256
기타정보 번역서 | 360쪽

윈도우 커널 조작의 미학!

'에이콘 해킹ㆍ보안' 시리즈, 제15권 『루트킷』. 해커들이 공격하고자 하는 시스템에 지속적이면서도 탐색되지 않은 채로 교묘히 접근할 수 있는 최고의 백도어인 '루트킷(ROOTKITS)'에 대한 전문서다.

이 책은 '루트킷'에 대해 세세하게 설명하면서, 그것을 제작하는 방법, 작동하는 방법 등에 대해 가르쳐준다. '루트킷'에 관한 최고의 전문가라고 할 수 있는 두 저자가 현재까지 쌓아온 기술을 총망라했다.

또한 윈도우 XP와 윈도우 2000의 커널 조작 방법을 보여준 후, 윈도우 서버 2003뿐 아니라, 리눅스, 유닉스에 쉽게 적용할 수 있는 공격 방법을 설명한다.

1장 흔적을 남기지 말라 23
공격자의 동기 이해 24
- 은닉의 역할 24
- 은닉이 필요 없는 경우 25
루트킷이란? 26
왜 루트킷이 존재하는가? 26
- 원격 명령 실행과 제어 27
- 소프트웨어 감청 27
- 루트킷의 합법적인 이용 28
루트킷의 역사 29
루트킷은 어떻게 동작하는가? 30
- 패치 30
- 이스터 에그 31
- 스파이웨어 31
- 소스 코드 조작 31
- 소프트웨어 변경의 합법성 32
무엇이 루트킷이 아닌가? 32
- 루트킷은 공격툴이 아니다 33
- 루트킷은 바이러스가 아니다 34
루트킷과 소프트웨어 공격 35
- 왜 공격 코드가 여전히 문제인가? 37
공격을 위한 루트킷 기술 38
- HIPS 38
- NIDS 39
- IDS/IPS 우회하기 40
- 포렌식 툴 우회하기 40
결론 41

2장 커널 조작 43
커널의 중요 요소 44
루트킷 설계 45
커널 레벨 코드 소개 48
윈도우 디바이스 드라이버 개발 49
- Device Driver Development Kit 49
- 빌드 환경 50
- 파일 50
- Build 툴 52
- 언로드 루틴 53
드라이버 로드, 언로드 54
디버그 메시지 로그하기 54
유저 모드와 커널 모드 요소를 모두 포함하는 루트킷 55
- IPR 56
- 파일 핸들 생성 60
- 심볼릭 링크 추가 61
루트킷 로딩 63
- 드라이버 로드를 위한 비정상적인 방법 63
- 드라이버 로드를 위한 정상적인 방법 65
리소스에서 .sys 파일 추출하기 67
재부팅시 자동 시작 69
결론 71

3장 하드웨어 레벨의 지식 73
링 제로 74
테이블, 테이블 그리고 또 테이블 76
메모리 페이지 77
- 메모리 접근 검사 78
- 페이징과 주소 변환 79
- 페이지 테이블 81
- 페이지-디렉토리 엔트리 83
- 페이지-테이블 엔트리 83
- 페이지 테이블의 읽기 전용 속성 84
- 멀티 프로세스와 멀티 페이지 디렉토리 84
- 프로세스와 스레드 85
메모리 디스크립터 테이블 86
- 글로벌 디스크립터 테이블 87
- 로컬 디스크립터 테이블 87
- 코드 세그먼트 87
- 콜 게이트 87
인터럽트 디스크립터 테이블 88
- 다른 형태의 게이트 91
시스템 서비스 디스패치 테이블 91
컨트롤 레지스터 92
- 컨트롤 레지스터 0 92
- 그 밖의 컨트롤러 레지스터들 93
- EFlags 레지스터 93
멀티 프로세서 시스템 93
결론 95

4장 전통적인 후킹 기술 97
애플리케이션 레벨의 후킹 97
- 임포트 어드레스 테이블 후킹 99
- 인라인 함수 후킹 100
- 사용자 프로세스 영역으로 DLL 인젝션하기 103
커널 후킹 108
- 시스템 서비스 디스크립터 테이블 후킹 109
- 인터럽트 디스크립터 테이블 후킹 118
- 디바이스 드라이버 오브젝트의 Major Function 후킹 123
하이브리드 후킹 133
- 프로세스의 주소 공간으로 진입하기 134
- 후킹을 위한 메모리 공간 138
결론 140

5장 런타임 패치 141
우회 패치 142
- MigBot을 이용한 실행 흐름 변경 143
- 함수의 바이트 코드 검사 145
- 원래의 명령어 바이트 146
- NonPagedPool 메모리 이용 149
- 런타임 주소 결정 149
점프 템플릿 153
- 인터럽트 후킹 예제 154
기타 유사한 방법들 161
결론 162

6장 계층 드라이버 163
키보드 스니퍼 164
- IRP와 스택 로케이션 166
KLOG 루트킷 169
파일 필터 드라이버 183
결론 197

7장 커널 오브젝트 직접 변경 199
DKOM의 장점과 단점 200
운영체제 버전 판단하기 202
- 유저 모드에서 운영체제 버전 판단 202
- 커널 모드에서 운영체제 버전 판단 204
- 레지스트리를 이용한 운영체제 버전 판단 204
유저 모드 프로세스에서 디바이스 드라이버로의 통신 206
DKOM을 이용한 은닉 210
- 프로세스 은닉 210
- 디바이스 드라이버 은닉 216
- 동기화 이슈 220
DKOM을 이용한 토큰의 권한과 그룹 변경 224
- 프로세스 토큰 변경 225
- 윈도우 이벤트 뷰어 속이기 239
결론 241

8장 하드웨어 조작 243
왜 하드웨어인가? 245
펌웨어 변경 246
하드웨어 접근 247
- 하드웨어 주소 지정 247
- 하드웨어 접근은 RAM에 접근하는 것과 다르다 248
- 타이밍 249
- I/O 버스 249
- BIOS에 접근 251
- PCI, PCMCIA 디바이스 접근 252
예 : 키보드 컨트롤러 접근 252
- 8259 키보드 컨트롤러 253
- 키보드 LED 변경 253
- 하드 리부팅 260
- 키보드 모니터링 260
마이크로코드 업데이트 267
결론 268

9장 은닉 채널 269
원격 명령 및 제어 그리고 데이터 빼내기 270
TCP/IP 프로토콜 위장 271
- 트래픽 패턴의 인지 272
- 데이터를 있는 그대로 전송하지 말라 273
- 시간을 이용하라 274
- DNS 패킷 안에 숨겨라 274
- 아스키 문자 숨기기 274
- 다른 TCP/IP 채널 이용 275
TDI를 이용한 루트킷 276
- 어드레스 스트럭처 생성 277
- 로컬 어드레스 오브젝트 생성 279
- TDI 엔드 포인트 생성 283
- 엔드 포인트와 로컬 어드레스 연결 286
- 리모트 서버로 연결 - TCP 핸드쉐이크 전송 288
- 리모트 서버로 데이터 전송 290
네트워크 패킷 변경 293
- 윈도우XP에서의 로우 소켓 구현 293
- 인터페이스에 바인딩 294
- 로우 소켓 스니핑 295
- 로우 소켓을 이용한 무차별적인 스니핑 296
- 로우 소켓을 이용한 패킷 전송 297
- 소스 포트, 주소 위조 297
- 바운싱 패킷 298
NDIS를 이용한 루트킷 299
- 프로토콜 등록 299
- 프로토콜 드라이버 콜백 304
- 패킷 전체 이동 309
호스트 에뮬레이션 317
- 자체 MAC 주소 생성 317
- ARP 처리 317
- IP 게이트웨이 320
- 패킷 전송 320
결론 325

10장 루트킷 탐지 327
존재 탐지 328
- 출입문 보호 328
- 메모리 스캐닝 331
- 후킹 탐지 331
행동 탐지 341
- 숨겨진 파일과 레지스트리 키 탐지 341
- 숨겨진 프로세스 탐지 342
결론 345

아직 못보고있음.