목차

□ 옮긴이 글 : 30분 안에 인터넷을 무력화할 수 있는 전문가?!    5
□ 추천사 : 남김없이 빨아들여 훌륭한 사냥꾼이 되길    15
□ 머리말 : 보안 검사의 패러다임을 전환하자    21
□ 감사의 글    37
□ 지은이 소개    41

제1부  개  론
01 공격 당하기 전에 자신의 약점을 먼저 면밀히 조사하라 : 
전통적 소프트웨어 검사를 벗어난 패러다임의 전환    47
◈ 보안 검사 대 전통적인 소프트웨어 검사    50
_ SQL 주입 공격 패턴    53
◈ 보안 검사의 패러다임 전환    53
◈ 고수준 보안 검사 전략    55
_ 오류 주입 공격형 검사 : 탐정으로서 검사자    55
◈ 공격자처럼 생각하라      57
_ 작업 우선순위 정하기    60
_ 손쉬운 길을 택하라 : 탐정작업에 도움이 되는 툴 사용    62
_ 취약점이란 지식나무에서 배워라    63
◈ 요약 : 검사 비법    66
02 취약점들은 모든 소프트웨어에 어떻게 스며드는가?     68
◈ 설계 취약점 대 구현 취약점    69
◈ 안전한 설계와 관련된 일반적인 이슈들    72
_ 빈약한 암호 작성법 사용     72
_ 사용자 및 사용허가 추적     75
_ 결함 있는 입력 유효성 검증    76
_ 빈약한 구조적 보안    78
_ 기타 설계와 관련된 결함들    81
◈ 프로그래밍 언어 구현 관련 이슈들    83
_ 컴파일러형 언어 : C와 C++    83
_ 해석형 언어들 : 셸 스크립팅과 PHP    96
_ PHP    99
_ 가상 컴퓨터 언어 : 자바와 C#    101
◈ 플랫폼 구현 이슈들    103
_ 문제점 : 기호 연결    104
_ 문제점 : 디렉터리 접근 공격    105
_ 문제점 : 문자 변환    106
◈ 애플리케이션 보안 구현과 연관된 일반적인 이슈들     108
_ SQL 주입 공격    108
_ 크로스사이트 스크립팅    110
◈ 개발 과정에서 생기는 문제점들    111
_ 빈약하게 문서로 만들어진 보안 요구사항들과 가정들    111
_ 빈약한 의사소통과 문서화    112
_ 개발과정에서 보안 프로세스 결여    113
◈ 취약한 배포    114
◈ 취약점의 근본 원인들에 대한 분류작업    115
◈ 요약 : 검사 비망록    116

03 안전한 소프트웨어 개발 생명주기     118
◈ 보안 검사를 소프트웨어 개발 생명주기에 맞추기    119
◈ SSDL 1단계 : 보안 지침, 규칙, 규제    123
◈ SSDL 2단계 : 보안 요구사항 : 공격 유스 케이스    125
_ 보안 요구사항 샘플    127
◈ SSDL 3단계 : 아키텍처 및 설계 리뷰와 위협 모델링    129
◈ SSDL 4단계 : 안전한 코드작업 지침    130
◈ SSDL 5단계 : 블랙박스/그레이박스/화이트박스 검사    131
◈ SSDL 6단계 : 악용 가능성 판단    132
◈ 애플리케이션의 안전한 배포    133
◈ 패치 관리 : 취약점 관리    134
◈ 역할과 책임    135
◈ SSDL과 시스템 개발 생명주기의 관계    136
◈ 요약    138

04 위험 기반의 보안 검사 : 위협 모델링을 이용한 보안 검사 우선순위     140
◈ 정보 수집    141
_ 설계사들과 회의    141
_ 런타임 검사    143
◈ 윈도우 플랫폼    144
◈ 유닉스 족적 추적    149
◈ 정보 수집 종결    152
◈ 모델링 프로세스    153
_ 위협 경로 식별    154
_ 위협 식별    158
_ 취약점 식별    160
_ 취약점과 연관된 위험 등급 매기기    161
◈ 악용 가능성 판단    162

05 세 가지 분석의 미묘한 차이 : 화이트박스, 그레이박스, 블랙박스 검사    164
◈ 화이트박스 검사    164
◈ 블랙박스 검사      165
◈ 그레이박스 검사    167
◈ 검사를 위한 실험실 설정    168
_ 퓨저              169
_ 스나이퍼    170
_ 디버거     170
_ 하드웨어    171
_ 상용 검사용 툴들    171
_ 네트워크 하드웨어    172
◈ 계획적으로 실시하는 애플리케이션 공격    172
_ 실험실 환경    172
_ 네트워크 공격    175
제2부  공격 수행
06 일반적인 네트워크 장애 주입 공격    183
◈ 네트워크    183
◈ 포트 탐색    184
_ netstat와 로컬 툴    185
_ 포트 주사    189
◈ 프록시    190
_ 가장 간단한 프록시 : 임의의 TCP/UDP 오류 주입기    192
_ 오류 주입 공격용 데이터 세트 작성법    198
_ 끼어들기 프록시    202
◈ 결론    204
◈ 요약    204

07 웹 애플리케이션 : 세션 공격    205
◈ 목표 애플리케이션 겨냥        205
◈ 인증 대 인가    205
◈ 세션과 자원 ID에 대한 주먹구구식 공격    207
◈ 쿠키 수집    212
◈ SID 견고성 판단 : 위상 공간 분석    215
◈ 크로스사이트 스크립팅 공격    219
◈ 결론    222
◈ 요약    223
08 웹 애플리케이션 : 일반적인 이슈들    224
◈ 인가 회피    224
◈ SQL 주입 공격    227
_ 기본사항    228
_ 데이터베이스 스키마 찾기    234
_ SQL 서버에서 명령 실행하기    239
◈ 실행 코드(ASP, PHP, 배치 파일) 올리기    243
◈ 파일 나열하기    245
◈ 소스코드 노출 취약점    250
◈ HTTP의 숨은 필드    253
◈ 결론    257
◈ 요약    257

09 웹 프록시 : 웹스카랩 사용하기    259
◈ 웹스카랩 프록시    259
◈ 결론    276
◈ 요약    276

10 맞춤형 퓨즈 유틸리티 구현    278
◈ 프로토콜 찾아내기    278
◈ SOAP와 WSDL    283
◈ SOAPpy 라이브러리    285
◈ 결론    295
◈ 요약    296

11 로컬 애플리케이션 장애 주입 공격    297
◈ 로컬 자원 그리고 프로세스 간 통신    297
_ 윈도우NT 객체    299
_ 유닉스의 set-user-id 프로세스 그리고 프로세스 간 통신    302
◈ 로컬 애플리케이션 위협 모델링    304
_ 윈도우 애플리케이션 자원 나열    305
_ 유닉스 애플리케이션 자원 나열    306
◈ 스크립팅 가능한 액티브엑스 객체 인터페이스 검사    308
◈ 스크립팅해도 되는 ‘안전한’ 객체 식별    310
◈ 객체 인터페이스 검사    313
_ 인터페이스 수동 검사    313
_ 액티브엑스 인터페이스 자동 검사    315
_ 충돌 평가    316
◈ 파일 형식 퓨징    317
◈ 파일 훼손 검사    319
◈ 파일 훼손 자동화    319
◈ 명령행 퓨징 유틸리티    321
◈ 셰어퓨즈    322
◈ 브루트-포스 이진 검사기    324
◈ CLI 퓨즈    325
◈ 공유 메모리    329
◈ 요약    333

제3부  분  석
12 악용 가능성 판단    337
◈ 취약점 등급 정하기    337
_ 시간    338
_ 신빙성과 재현 가능성    338
_ 접근방법    339
_ 위치 선정    341
◈ 메모리 침해와 임의의 코드 실행    342
◈ 컴퓨터 아키텍처    344
_ 스택    346
_ 스택 버퍼 초과    347
_ 힙    348
◈ 악용 가능성 판단    351
_ 프로세스 충돌 덤프    351
_ 공격자의 수중에 들어간 메모리와 레지스터    353
_ 취약점을 경감시켜주는 요소들 : 스택과 힙 보호    358
◈ 더 참고할 만한 자료들    358
◈ 찾아보기    361