CodeEngn Logo

Book


국내 리버스엔지니어링 관련 서적을 쉬어가기, 초급, 중급, 고급으로 분류 하였습니다.

추가 및 변경 신청은 Contact 메뉴에서 요청 해주세요.



버그 헌터‘s 다이어리


정보

저자 : 토비아스 클라인 저/서우석 역
출판사 : 지앤선
출간일 : 2013년 02월 12일
페이지 : 280
ISBN-13 : 9788993827545
ISBN-10 : 8993827540
정가 : 20,000원


책소개

누군가에게 익스플로잇 하나를 주면 그는 하루 동안 해커가 될 수 있다. 그러나 버그를 익스플로잇할 수 있는 방법을 가르치면 그를 평생 해커로 만들 수 있다. 이 책은 우리가 자주 사용하고 널리 알려진 소프트웨어들을 대상으로 취약점 공격 기법을 알려준다. VLC 미디어 플레이어, iOS의 웹 브라우저, ActiveX 플러그인, 심지어는 백신 소프트웨어까지 저자의 분석 대상에는 불가능이란 없어 보인다. 저자는 소프트웨어의 복잡한 논리 속에 내포된 버그를 무서울 만큼 완벽하게 이해하고 있으며 마치 당연하다는 듯이 버그를 찾고 익스플로잇을 만들어 낸다. 그리고 각 단원에서 제시하는 일기는 비교적 내용이 길지 않고 분석 과정에서 필요한 핵심 정보만 소개하고 있어 보안 전문가가 아니더라도 이해하는 데 어려움이 없을 것이다. 저자가 대상을 선정하고 버그를 찾아내고 익스플로잇을 만들어내는 과정을 읽다보면 마치 물의 흐름에 따라 유유하게 이동하는 한 마리의 물고기가 생각날 정도로 자연스럽고 간결하다. 물론 저자가 이러한 내공을 갖기까지 얼마나 많은 밤을 지새웠는지를 잘 알고 있기에 그의 분석 기법이 더욱 빛을 발한다.


저자소개

저자 : 토비아스 클라인

정보 보안 컨설팅과 연구를 수행하는 NESO Security Labs의 창업자이자 보안 연구원이다. 두 권의 정보 보안 서적을 집필하였다.

역자 : 서우석

파인드스티브 대표이사, 지경부 소프트웨어 마에스트로 멘토이다. 안철수 연구소 엔진팀, 국가기관 보안 연구원에 근무했으며 디버깅 전문 사이트, 디버그랩 운영을 했다.


목차

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 지역 영역 구성하기
참고자료

Linode is a privately owned virtual private server provider based in Galloway, New Jerse