목차
추천의 글 ... 4
감사의 글 ... 6
저자 소개 ... 7
옮긴이의 말 ... 8
들어가며 ... 19
1장 흔적을 남기지 말라 ... 23
   공격자의 동기 이해 ... 24
      은닉의 역할 ... 24
      은닉이 필요 없는 경우 ... 25
   <B><FONT color ... #0000
   왜 <B><FONT color ... #0000
      원격 명령 실행과 제어 ... 27
      소프트웨어 감청 ... 27
      <B><FONT color ... #0000
   <B><FONT color ... #0000
   <B><FONT color ... #0000
      패치 ... 30
      이스터 에그 ... 31
      스파이웨어 ... 31
      소스 코드 조작 ... 31
      소프트웨어 변경의 합법성 ... 32
   무엇이 <B><FONT color ... #0000
      <B><FONT color ... #0000
      <B><FONT color ... #0000
   <B><FONT color ... #0000
      왜 공격 코드가 여전히 문제인가? ... 37
   공격을 위한 <B><FONT color ... #0000
      HIPS ... 38
      NIDS ... 39
      IDS/IPS 우회하기 ... 40
      포렌식 툴 우회하기 ... 40
   결론 ... 41
2장 커널 조작 ... 43
   커널의 중요 요소 ... 44
   <B><FONT color ... #0000
   커널 레벨 코드 소개 ... 48
   윈도우 디바이스 드라이버 개발 ... 49
      Device Driver Development Kit ... 49
      빌드 환경 ... 50
      파일 ... 50
      Build 툴 ... 52
      언로드 루틴 ... 53
   드라이버 로드, 언로드 ... 54
   디버그 메시지 로그하기 ... 54
   유저 모드와 커널 모드 요소를 모두 포함하는 <B><FONT color ... #0000
      IPR ... 56
      파일 핸들 생성 ... 60
      심볼릭 링크 추가 ... 61
   <B><FONT color ... #0000
      드라이버 로드를 위한 비정상적인 방법 ... 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 <B><FONT color ... #0000
   파일 필터 드라이버 ... 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를 이용한 <B><FONT color ... #0000
      어드레스 스트럭처 생성 ... 277
      로컬 어드레스 오브젝트 생성 ... 279
      TDI 엔드 포인트 생성 ... 283
      엔드 포인트와 로컬 어드레스 연결 ... 286
      리모트 서버로 연결 - TCP 핸드쉐이크 전송 ... 288
      리모트 서버로 데이터 전송 ... 290
   네트워크 패킷 변경 ... 293
      윈도우XP에서의 로우 소켓 구현 ... 293
      인터페이스에 바인딩 ... 294
      로우 소켓 스니핑 ... 295
      로우 소켓을 이용한 무차별적인 스니핑 ... 296
      로우 소켓을 이용한 패킷 전송 ... 297
      소스 포트, 주소 위조 ... 297
      바운싱 패킷 ... 298
   NDIS를 이용한 <B><FONT color ... #0000
      프로토콜 등록 ... 299
      프로토콜 드라이버 콜백 ... 304
      패킷 전체 이동 ... 309
   호스트 에뮬레이션 ... 317
      자체 MAC 주소 생성 ... 317
      ARP 처리 ... 317
      IP 게이트웨이 ... 320
      패킷 전송 ... 320
   결론 ... 325
10장 <B><FONT color ... #0000
   존재 탐지 ... 328
      출입문 보호 ... 328
      메모리 스캐닝 ... 331
      후킹 탐지 ... 331
   행동 탐지 ... 341
      숨겨진 파일과 레지스트리 키 탐지 ... 341
      숨겨진 프로세스 탐지 ... 342
   결론 ... 345
찾아보기 ... 347
닫기