책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > OS/Networking > 네트워크 보안/해킹
· ISBN : 9788993827545
· 쪽수 : 280쪽
· 출판일 : 2013-02-12
책 소개
목차
CHAPTER 1 버그 사냥
1.1 재미와 금전적 이득
1.2 일반적인 기술들
저자가 선호하는 기법들
잠재적으로 취약한 코드의 위치
퍼징
추가 자료
1.3 메모리 오류
1.4 도구
디버거
디스어셈블러
1.5 EIP = 41414141
1.6 이것만은 알아두자
참고자료
CHAPTER 2 응답하라 1990년대
2.1 취약점 발견
1단계: VLC의 디먹서 목록을 나열한다.
2단계: 입력 데이터를 분석한다.
3단계: 입력 데이터를 추적한다.
2.2 익스플로잇
1단계: TiVo 미디어 파일 샘플을 확보한다.
2단계: 취약점 코드가 실행되기 위한 코드 경로를 찾는다.
3단계: VLC 프로그램에서 충돌이 발생하도록 TiVo 동영상 파일을 조작한다.
4단계: EIP의 제어권을 얻을 수 있도록 TiVo 동영상 파일을 조작한다.
2.3 취약점 해결
2.4 교훈
2.5 추가 정보
참고자료
CHAPTER 3 WWW 존에서 탈출하기
3.1 취약점 발견
1단계: 커널의 IOCTL 목록을 구한다.
2단계: 입력 데이터를 파악한다.
3단계: 입력 데이터를 추적한다.
3.2 익스플로잇
1단계: NULL 포인터 역참조를 발생시켜 서비스를 거부한다.
2단계: EIP/RIP를 제어하기 위해 제로 페이지를 사용한다.
3.3 취약점 해결
3.4 교훈
3.5 추가 정보
참고자료
CHAPTER 4 널 포인터 FTW
4.1 취약점 발견
1단계: FFmpeg의 디먹서 목록을 나열한다.
2단계: 입력 데이터를 분석한다.
3단계: 입력 데이터를 추적한다.
4.2 익스플로잇
1단계: strk 청크 값이 정상적인 4X 동영상 샘플 파일을 구한다.
2단계: strk 청크의 레이아웃을 파악한다.
3단계: FFmpeg가 충돌하도록 strk 청크를 조작한다.
4단계: EIP를 제어하기 위해서 strk 청크를 조작한다.
4.3 취약점 해결
4.4 교훈
4.5 추가 정보
참고자료
CHAPTER 5 웹 사이트에 접속하면 게임 끝
5.1 취약점 발견
1단계: 등록된 WebEx 객체와 각 객체에서 외부로 공개된 함수들을 나열한다.
2단계: 브라우저에서 외부로 공개된 함수들을 시험한다.
3단계: 바이너리에서 객체 메서드를 찾는다.
4단계: 사용자 지정 입력값을 찾는다.
5단계: 객체 메서드를 역공학한다.
5.2 익스플로잇
5.3 취약점 해결
5.4 교훈
5.5 추가 정보
참고자료
CHAPTER 6 전지전능하신 커널님
6.1 취약점 발견
1단계: 커널 디버깅을 위해 VMware 게스트 머신을 준비한다.
2단계: avast!가 생성하는 드라이버와 디바이스 객체 목록을 구한다.
3단계: 디바이스 보안 설정을 검사한다.
4단계: IOCTL 목록을 구한다.
5단계: 사용자 지정 입력값을 찾는다.
6단계: IOCTL 핸들러를 역공학한다.
6.2 익스플로잇
6.3 취약점 해결
6.4 교훈
6.5 추가 정보
참고자료
CHAPTER 7 4.4BSD보다도 더 오래된 버그
7.1 취약점 발견
1단계: 커널의 IOCTL 목록을 나열한다.
2단계: 입력 데이터를 식별한다.
3단계: 입력 데이터를 추적한다.
7.2 익스플로잇
1단계: 시스템을 충돌시켜(서비스 거부) 버그를 발생시킨다.
2단계: 커널 디버깅 환경을 준비한다.
3단계: 디버거를 대상 시스템에 연결한다.
4단계: EIP에 대한 제어권을 얻는다.
7.3 취약점 치료
7.4 교훈
7.5 추가 정보
참고자료
CHAPTER 8 죽음의 벨소리
8.1 취약점 발견
1단계: iPhone의 오디오 기능 파악하기
2단계: 간단한 퍼저를 만들어 iPhone 퍼징하기
8.2 충돌 분석과 익스플로잇
8.3 취약점 해결
8.4 교훈
8.5 추가 정보
참고자료
APPENDIX A 디버깅
A.1 스택 버퍼 오버플로우
예제: Linux에서의 스택 버퍼 오버플로우
예제: Windows에서의 스택 버퍼 오버플로우
A.2 NULL 포인터 역참조
A.3 C언어에서의 형변환
A.4 GOT 덮어쓰기
참고자료
APPENDIX B 디버깅
B.1 Solaris 모듈 디버거(mdb)
mdb 실행하고 종료하기
일반 명령
중단점
디버기 실행
데이터 살펴보기
정보 출력하기
다른 명령들
B.2 Windows 디버거(WinDbg)
디버깅 세션 실행하고 종료하기
일반 명령
중단점
디버기 실행
데이터 표시하기
정보 명령
다른 명령들
B.3 Windows 커널 디버깅
1단계: 원격 커널 디버깅을 위해 VMWare 게스트 시스템을 구성한다.
2단계: 게스트 시스템의 boot.ini를 변경한다.
3단계: Windows 커널 디버깅을 위해 VMWare 호스트에 WinDbg를 구성한다.
B.4 GNU 디버거(gdb)
gdb 실행하고 종료하기
일반 명령
중단점
디버기 실행
데이터 살펴보기
정보 출력하기
다른 명령들
B.5 Linux를 Mac OS X 커널 디버깅 호스트로 사용하기
1단계: Red Hat 7.3 Linux 운영체제를 설치한다.
2단계: 필요한 소프트웨어 패키지를 구한다.
3단계: Linux 호스트에 Apple용 디버거를 빌드한다.
4단계: 디버깅 환경을 준비한다.
참고 자료
APPENDIX C 위험 완화 기법
C.1 위험 완화 기법들
주소 공간 무작위 재배치 기법(ASLR)
보안 쿠키(/GS), 스택 스매싱 보호(SSP), 스택 카나리
데이터 실행 보호(DEP), 실행 불가(NX: No eXecute)
익스플로잇 완화 기법 탐지하기
C.2 RELRO
부분 RELRO
전체 RELRO
테스트 사례 1: 부분 RELRO
테스트 사례 2: 전체 RELRO
결론
C.3 Solaris Zone
용어
Solaris 지역 영역 구성하기
참고자료