logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

실전 바이너리 분석

실전 바이너리 분석

(자동화 취약점 탐지를 위한)

데니스 앤드리스 (지은이), 박재유 (옮긴이)
  |  
에이콘출판
2021-03-30
  |  
43,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
알라딘 38,700원 -10% 0원 2,150원 36,550원 >
yes24 로딩중
교보문고 로딩중
영풍문고 로딩중
인터파크 로딩중
11st 로딩중
G마켓 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
로딩중

e-Book

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

실전 바이너리 분석

책 정보

· 제목 : 실전 바이너리 분석 (자동화 취약점 탐지를 위한)
· 분류 : 국내도서 > 컴퓨터/모바일 > OS/Networking > 네트워크 보안/해킹
· ISBN : 9791161755069
· 쪽수 : 616쪽

책 소개

사람이 다양한 종류의 컴퓨터 언어를 습득해 이해하는 것은 결코 쉽지 않다. 바이너리 분석이란 결국 이 둘 사이의 간극을 해결하는 일종의 '번역' 또는 '통역' 작업이라고 볼 수 있다. 이 책이 설명하는 여러 가지 기술을 통해, 컴퓨터와 심층적으로 소통할 수 있게 될 것이다.

목차

1부. BINARY FORMATS

1장. 바이너리란 무엇인가
1.1 C언어로 작성된 프로그램의 컴파일 과정
1.1.1 전처리 단계
1.1.2 컴파일 단계
1.1.3 어셈블 단계
1.1.4 링킹 단계
1.2 심벌과 스트립 바이너리
1.2.1 심벌 정보 확인하기
1.2.2 바이너리 스트립: 관련 정보 은닉하기
1.3 바이너리 디스어셈블
1.3.1 목적 파일
1.3.2 단독으로 실행가능한 바이너리 파일 분석하기
1.4 바이너리 로딩과 실행
1.5 이 장의 요약
연습 문제

2장. ELF 바이너리 포맷
2.1 ELF 파일 헤더
2.1.1 e_ident 배열
2.1.2 e_type, e_machine, e_version 필드
2.1.3 e_entry 필드
2.1.4 e_phoff와 e_shoff 필드들
2.1.5 e_flags 필드
2.1.6 e_ehsize 필드
2.1.7 e_*entsize 와 e_*num 필드
2.1.8 e_shstrndx 필드
2.2 섹션 헤더
2.2.1 sh_name 필드
2.2.2 sh_type 필드
2.2.3 sh_flags 필드
2.2.4 sh_addr, sh_offset, sh_size 필드
2.2.5 sh_link 필드
2.2.6 sh_info 필드
2.2.7 sh_addralign 필드
2.2.8 sh_entsize 필드
2.3 섹션
2.3.1 .init 과 .fini 섹션
2.3.2 .text 섹션
2.3.3 .bss, .data, .rodata 섹션들
2.3.4 지연 바인딩과 .plt, .got, .got.plt 섹션
2.3.5 .rel.* 과 .rela.* 섹션
2.3.6 .dynamic 섹션
2.3.7 .init_array와 .fini_array 섹션
2.3.8 .shstrtab, .symtab, .strtab, .dynsym, .dynstr 섹션
2.4 프로그램 헤더
2.4.1 p_type 필드
2.4.2 p_flags 필드
2.4.3 p_offset, p_vaddr, p_paddr, p_filesz, p_memsz 필드
2.4.4 p_align 필드
2.5 요약
연습 문제

3장. PE 바이너리 포맷요약 정리
3.1 MS-DOS 헤더와 MS-DOS 스텁
3.2 PE 시그니처, 파일 헤더, 옵션 헤더
3.2.1 PE 시그니처
3.2.2 PE 파일 헤더
3.2.3 PE 옵션 헤더
3.3 섹션 헤더 테이블
3.4 섹션
3.4.1 .edata와 .idata 섹션
3.4.2 PE코드 섹션의 패딩
3.5 요약
연습문제

4장. LIBBFD를 이용한 바이너리 로더 제작
4.1 libbfd란 무엇인가?
4.2 바이너리 로더의 기본 인터페이스
4.2.1 바이너리 클래스
4.2.2 섹션 클래스
4.2.3 심벌 클래스
4.3 바이너리 로더 구현하기
4.3.1 libbfd 초기화하고 바이너리 열기
4.3.2 바이너리 기본 정보 분석하기
4.3.3 심벌 정보 불러오기
4.3.4 섹션 정보 불러오기
4.4 바이너리 로더 테스트하기
4.5 요약
연습문제

2부. BINARY ANALYSIS FUNDAMENTALS

5장 리눅스 바이너리 분석 기초
5.1 file 명령어를 사용해 식별하기
5.2 ldd 명령어를 사용해 의존성 점검하기
ASCII 코드 신속하게 찾기
5.3 xxd 명령어를 사용해 파일 내부 내용 확인하기
5.4 readelf 명령어를 사용해 ELF 파일 형식 추출하기
5.5 nm 명령어를 사용해 심벌 정보 분석하기
5.6 strings 명령어를 사용해 단서 찾기
5.7 strace와 ltrace 명령어를 사용해 시스템콜 및 라이브러리 호출 추적하기
5.8 ojdump 명령어를 사용해 기계어 수준 동작 확인하기
5.9 gdb 명령어를 사용해 동적으로 문자열 버퍼 덤프하기
5.10 요약
연습문제

6장. 디스어셈블과 바이너리 분석 방법론
6.1 정적 디스어셈블
6.1.1 선형 디스어셈블
6.1.2 재귀적 디스어셈블
6.2 동적 디스어셈블
6.2.1 예제: gdb로 바이너리 실행 추적하기
6.2.2 코드 커버리지 전략
6.3 디스어셈블된 코드와 데이터를 구조화하기
6.3.1 코드 구조화
.eh_frame 섹션을 이용한 함수 탐지
6.3.2 데이터 구조화
6.3.3 디컴파일
6.3.4 중간 언어 표현식
6.4 주요 분석 방법론
6.4.1 바이너리 분석 요소
6.4.2 제어 흐름 분석
6.4.3 데이터 흐름 분석
6.5 디스어셈블시 컴파일러 설정 효과
6.6 요약
연습문제

7장. ELF 바이너리 코드 인젝션 기법
7.1 헥스 에디터를 이용한 원초적 수정 방법
정확한 opcode 찾기
7.1.1 한 바이트 버그 탐구하기
7.1.2 한 바이트 버그 수정하기
7.2 LD_PRELOAD를 사용해 공유 라이브러리 동작 변경하기
7.2.1 힙 오버플로 취약점
7.2.2 힙 오버플로 탐지하기
7.3 코드 섹션 끼워넣기
7.3.1 ELF 섹션 끼워넣기: 전체적 맥락
7.3.2 elfinject 를 사용해 ELF 섹션 삽입하기
7.4 삽입된 코드 호출하기
7.4.1 엔트리 포인트 개조
7.4.2 생성자와 소멸자 탈취하기
7.4.3 GOT 엔트리 탈취하기
7.4.4 PLT 엔트리 탈취하기
7.4.5 직접 및 간접 호출 조작하기
7.5 요약
연습문제

3부. ADVANCED BINARY ANALYSIS

8장. 자체 제작 디스어셈블 도구 구현
8.1 굳이 디스어셈블 과정을 자체 제작할 필요성은?4
8.1.1 자체 제작 디스어셈블 도구 사례: 난독화된 코드
난독화되지 않은 바이너리에서도 코드 겹침 기법이 적용될 수 있다
8.1.2 자체 제작 디스어셈블 도구를 개발할 또 다른 필요성
8.2 캡스톤 살펴보기
8.2.1 캡스톤 설치하기
8.2.2 캡스톤으로 선형 디스어셈블 도구 제작하기
8.2.3 캡스톤 C API 살펴보기
8.2.4 캡스톤으로 재귀적 디스어셈블 도구 제작하기
8.3 ROP 가젯 스캐너 구현
8.3.1 ROP 개요
8.3.2 ROP 가젯 탐색하기
8.4 요약
연습문제

9장. 바이너리 계측
9.1 바이너리 계측이란 무엇인가?
9.1.1 바이너리 계측 API
9.1.2 정적 및 동적 바이너리 계측 비교
9.2 정적 바이너리 계측
9.2.1 int 3 방법
9.2.2 트램펄린 방법
위치 독립 코드에 대한 트램펄린 적용
9.3 동적 바이너리 계측
9.3.1 DBI 시스템 구조
9.3.2 Pin 개요
9.4 Pin을 사용한 프로파일링
9.4.1 프로파일링 도구의 자료구조 및 초기 설정을 위한 코드
9.4.2 함수 심벌 분석하기
9.4.3 기본 블록 계측하기
9.4.4 제어 흐름 명령어 계측하기
9.4.5 명령어 개수, 제어 흐름 변경 및 시스템 콜 횟수 측정하기
9.4.6 프로파일링 프로그램 테스트하기
9.5 Pin을 사용한 자동화 바이너리 패킹 해제
9.5.1 바이너리 패킹 개요
9.5.2 언패킹 도구의 자료구조 및 설정 코드
9.5.3 메모리 사용 기록 계측하기
9.5.4 제어 흐름 명령어 계측하기
9.5.5 메모리 사용 기록 추적하기
9.5.6 OEP 탐지 및 언패킹된 바이너리 덤프하기
9.5.7 언패킹 프로그램 테스트하기
9.6 요약
연습문제

10장. 동적 오염 분석 원리
10.1 DTA란 무엇인가?
10.2 DTA의 세가지 단계: DTA의 세 가지 요소: 오염원, 오염 지역, 오염 전파
10.2.1 오염원 정의하기
10.2.2 오염 지역 설정하기
10.2.3 오염 전파 추적하기
10.3 DTA를 사용해 Heartbleed 버그 탐지하기
10.3.1 Heartbleed 취약점에 대한 간략한 요약
10.3.2 오염 분석 방법을 통해 Heartbleed 탐지하기
10.4 DTA 설계 요소: 오염 단위, 오염 색깔, 오염 정책
10.4.1 오염 단위
10.4.2 오염 색깔
10.4.3 오염 전파 정책
10.4.4 과잉 오염 및 과소 오염
10.4.5 제어 의존성
10.4.6 섀도 메모리
10.5 요약
연습문제

11장. LIBDFT를 이용한 동적 오염 분석 도구 개발
11.1 libdft 소개
11.1.1 libdft 내부 구조
11.1.2 오염 정책
11.2 DTA를 사용해 원격 제어 탈취 탐지하기
11.2.1 오염 정보 확인하기
11.2.2 오염원: 수신된 바이트의 오염
11.2.3 오염 지역: execve 함수의 매개 변수 점검하기
11.2.4 제어권 탈취 시도 탐지하기
11.3 암시적 제어 흐름을 통해 DTA 우회하기
11.4 DTA를 사용해 데이터 유출 탐지하기
11.4.1 오염원: 파일 열기 작업에 대한 오염 추적
11.4.2 오염 지역: 데이터 유출을 시도하는 네트워크 송신 감시
11.4.3 데이터 유출 시도 탐지하기
11.5 요약
연습문제

12장. 기호 실행 원리
12.1 기호 실행 개요
12.1.1 기호적 vs 구체적 실행
12.1.2 기호 실행의 다양한 방법론 분류 및 각 한계점
12.1.3 기호 실행의 확장 용이성 향상하기
12.2 Z3을 이용한 제약조건 풀이
12.2.1 명령어의 도달 가능성 증명
12.2.2 명령어의 도달 불가능성 증명
12.2.3 수식의 유효성 증명
12.2.4 표현식 간소화
12.2.5 비트 벡터를 사용해 기계어 코드의 제약 조건 모델링하기
12.2.6 비트 벡터로 표현된 모호한 표현식 풀이하기
12.3 요약
연습문제

13장. Triton을 이용한 기호 실행 실습
13.1 Triton 개요
13.2 추상 구문 트리를 이용해 상태 정보 관리하기
13.3 Triton을 이용한 백워드 슬라이싱
13.3.1 Triton 헤더 파일 및 Triton 환경 설정
13.3.2 심벌 환경 설정 파일
13.3.3 명령어 에뮬레이팅
13.3.4 Triton의 아키텍처 설정
13.3.5 백워드 슬라이스 계산
13.4 Triton을 이용한 코드 충족도 확대
13.4.1 기호 변수 생성
13.4.2 새로운 경로를 위한 모델 찾기
13.4.3 코드 충족도 도구 실행
13.5 자동으로 취약점 익스플로잇하기
13.5.1 취약한 프로그램
13.5.2 취약한 호출 지점의 주소 찾기
13.5.3 익스플로잇 생성 도구 구현
13.5.4 루트 셸 획득
13.6 요약
연습문제

4부. 부록

부록 A. 인텔 64비트 어셈블리 요점 정리
부록 B. LIBELF를 이용한 PT_NOTE 덮어쓰기 구현
부록 C. 바이너리 분석 도구 추천
부록 D. 참고 문헌

저자소개

데니스 앤드리스 (지은이)    정보 더보기
시스템 및 네트워크 보안 분야에서 박사학위를 취득했으며, 현재 바이너리 분석 관련 연구를 수행하고 있다. ROP 등의 제어 흐름 탈취 공격으로부터 방어하기 위한 제어 흐름 무결성 보호 체계인 PathArmor의 핵심 개발자다. 또한 GameOver Zeus P2P botnet에 대한 진압 작전에 투입된 개발 요원이기도 했다.
펼치기
박재유 (옮긴이)    정보 더보기
한국항공대학교에서 컴퓨터 정보공학을 전공하고, 공군 정보통신 장교로 복무하며 정보 보안에 입문했다. 전역 후 한국정보기술연구원(KITRI)의 Best of the Best 4기 디지털 포렌식 과정을 수료하고, 한국과학기술원(KAIST) 대학원에 입학해 소프트웨어 보안을 연구했다. 석사 졸업 후 현재는 LG전자 소프트웨어 공학연구소에서 보안 기술(퍼즈 테스팅과 바이너리 취약점 분석)을 연구하고 있다. 정보처리기사, 전자계산기조직응용기사, 정보보안기사, ACE, 디지털 포렌식 전문가 2급 등을 보유하고 있다. 또한 2016년 한국정보기술연구원 주관 정보 보안 스타트업 프로젝트 그랑프리 우승, 2018년 한국 디지털 포렌식 학회 주관 챌린지에서 장려상을 수상했다. 『APT 악성코드와 메모리 분석 첼린지 풀이 사례』(비팬북스, 2016), 『VolUtility 리뷰와 첼린지 문제 풀이 사례』(비팬북스, 2016), 『리눅스 시스템의 메모리 포렌식』(브이메이커스, 2018) 등 메모리 포렌식 관련 전자책을 집필했고, 『모의 침투 입문자를 위한 파이썬 3 활용』(에이콘, 2020)을 공저로 저술했다. 번역서로는 『실전 바이너리 분석』(에이콘, 2021)이 있다.
펼치기

추천도서

이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책