book.jayu.org
x64dbg 디버거를 활용한 리버싱과 시스템 해킹의 원리

x64dbg 디버거를 활용한 리버싱과 시스템 해킹의 원리

김민수 (지은이)

Infinitybooks(인피니티북스)·2020-03-18

  • 287쪽
  • 188×235mm
  • 총류
  • KDC 004.67

로그인하면 내 서재에 추가할 수 있어요.

책 소개

리버싱이나 시스템 해킹에 대한 책은 많이 나와 있습니다. 기초 수준으로 풀어서 설명되어 있는 것도 있고, 꽤 난이도가 있는 내용을 다루는 것도 있습니다. 악성코드 분석과 시스템 해킹을 수행하기 위해서는 리버싱 기술이 필요합니다. 그러나 이러한 부분을 모두 다루고 있으면서, 학생들의 수준에 맞게 설명된 책은 찾기 어렵습니다. 더구나 기존의 책에서 다루는 예제 코드는 특정 환경에서 동작되는 경우가 많습니다. 앞에서 언급하였듯이 실행파일은 운영체제 환경에 영향을 받기 때문에 실습환경이 바뀌면 원하는 결과를 얻지 못할 수가 있습니다. 즉 이전 버전에서 가능했던 방법이 다음 버전에는 불가능한 경우가 많습니다. 이러한 결과로 학생들이 실습할 때 책의 내용과 다른 결과에 당황하는 상황이 발생합니다. 이러한 이유로 본 책에서는 소스 형태로 프로그램을 제공하고 원리 위주로 풀어서 설명하려고 노력하였습니다.

목차펼치기

CHAPTER 01 리버싱과 해킹의 이해1.1 해킹의 이해1.1.1 해커의 의미1.1.2 해킹 학습 방법1.1.3 해킹의 절차1.2 리버스 엔지니어링1.2.1 리버싱 적용 분야1.2.2 리버싱 방법1.2.3 리버싱의 위험도CHAPTER 02 컴퓨터 시스템의 명령어 처리 구조2.1 데이터 표현 방식2.1.1 데이터 표현 단위2.1.2 숫자의 표현2.1.3 문자의 표현2.2 프로그램의 생성2.2.1 프로그램의 생성2.2.2 컴파일러의 역할2.3 프로세스2.3.1 프로세스 상태2.3.2 프로세스의 실행2.3.3 프로세스 실행정보의 확인2.4 레지스터의 구성과 역할2.4.1 레지스터 종류2.4.2 컴퓨터 명령어 코드CHAPTER 03 디버거의 활용 방법3.1 프로그램 디버깅3.1.1 프로그래밍 오류3.1.2 프로그래밍 오류가 자주 발생하는 지점3.1.3 프로그래밍 오류 찾기3.2 디버거 종류3.3 디버거 사용법 (x64dbg)3.3.1 x64dbg 설치하기3.3.2 x64dbg 주요 기능3.3.3 디버거를 사용하여 프로그램 따라가기3.3.4 원하는 코드 위치로 찾아가는 방법CHAPTER 04 어셈블리어의 이해4.1 어셈블리어 명령어4.2 프로그램 코드의 어셈블리어 표현4.2.1 어셈블리어 코드의 이해4.2.2 디컴파일러 기능 활용CHAPTER 05 코드 분석과 패치5.1 문자열 패치5.1.1 문자열 패치 방법5.1.2 원본보다 더 긴 문자열 패치5.1.3 메모리 변경 내용을 파일로 보관5.2 코드 패치5.2.1 제어 흐름 찾아가기5.2.2 제어 흐름의 변경5.2.3 패치 공간의 부족5.3 실행 파일의 코드 분석 연습5.3.1 패스워드 찾기5.3.2 시리얼번호 찾기5.3.3 리버싱 문제 풀이CHAPTER 06 윈도우 실행 파일 구조6.1 윈도우 PE 파일6.1.1 윈도우 PE(Portable Executable) 파일이란?6.1.2 PE 파일 관련 도구6.2 윈도우 PE 파일 구조6.2.1 윈도우 실행 파일 형식6.2.2 MS-DOS 정보6.2.3 Windows NT 정보6.2.4 섹션 정보6.2.5 메모리 로딩 시 주소 변환6.3 IAT(Import Address Table)6.4 EAT(Export Address Table)CHAPTER 07 파일 패킹과 언패킹7.1 PE 파일 패킹(packing)7.1.1 패커의 주요 기능7.1.2 패커 종류7.1.3 UPX 패커7.1.4 패킹의 증상7.1.5 패커 시그니처 탐지7.2 PE파일 언패킹(unpacking)7.2.1 언패킹의 목표7.2.2 언패킹 방법7.2.3 도구를 이용한 자동 언패킹7.3 수동 언패킹(manual unpacking)7.3.1 UPX 패커의 언패킹 과정 디버깅7.3.2 디버거와 IAT 복구 도구를 이용한 수동 언패킹CHAPTER 08 안티 리버싱8.1 디버거 탐지8.1.1 프로세스 정보 확인8.1.2 디버깅 관련 API 활용8.1.3 브레이크 포인트 탐지8.2 난독화(Obfuscation)CHAPTER 09 메모리 오염 공격9.1 시스템 메모리 영역9.1.1 시스템 메모리 영역9.1.2 함수 호출 시의 스택 구조9.1.3 버퍼 오버플로우9.1.4 포맷 문자열9.2 스택 오버플로우 공격9.2.1 스택 오버플로우9.2.2 스택 오버플로우 공격 실습9.2.3 공격 코드 작성9.3 데이터 공간 오버플로우 공격9.3.1 힙 오버플로우9.3.2 데이터 공간의 오버플로우 공격9.4 UAF 공격9.4.1 힙 메모리 영역 관리 방법9.4.2 UAF (Use After Free) 공격CHAPTER 10 방패와 창10.1 스택 오버플로우 공격의 특징10.2 데이터 공간 실행 방지10.2.1 DEP (Data Execution Protection) 기능10.3 데이터 공간 오염 방지10.3.1 카나리아(Canary) 기능10.3.2 ASLR (Address Space Layout Randomization)10.4 공격 방지 기법의 회피 방법10.4.1 RTL (Return To Library)10.4.2 ROP (Return Oriented Programming)10.4.3 ASLR 우회CHAPTER 11 코드 인젝션11.1 PE 재배치와 코드 패치 원리11.1.1 PE 재배치(relocation)11.1.2 재배치 정보11.3 PE 코드 패치11.2 코드 인젝션 (Code Injection)11.2.1 코드 인젝션 정의11.2.2 코드 인젝션 주요 동작 흐름11.2.3 코드 인젝션 관련 주요 API 정보11.2.4 API 후킹11.3 DLL 인젝션11.3.1 DLL 영역11.3.2 SetWindowHookEx()를 이용한 DLL 인젝션11.3.3 원격 쓰레드를 이용한 DLL 인젝션11.4 쓰레드 인젝션(Thread Injecrion)11.4.1 CreateRemote Thread() API를 이용한 쓰레드 인젝션11.4.2 쓰레드 EIP 변경을 이용한 쓰레드 인젝션11.4.3 스텁 코드 삽입11.5 프로세스 인젝션(Process Injection)11.5.1 프로세스 할로잉11.5.2 프로세스 도플갱잉CHAPTER 12 악성코드 분석12.1 학성코드 분석 준비12.1.1 정적 분석 도구12.1.2 동적 분석 도구12.1.3 상세 분석 도구12.2 악성코드 샘플 분석12.2.1 정적 분석 진행12.2.2 동적 분석 진행12.2.3 상세 분석 진행12.2.4 안티 디버깅과 안티 가상화12.2.5 인코딩된 PE 바이너리 얻어 오기12.3 정보 유출형 악성코드12.3.1 정적 분석하기12.3.2 동적 분석하기12.3.3 상세 분석하기12.3.4 악성코드 분석할 때 주의사항

출처: 국립중앙도서관 서지정보

리뷰 남기기

로그인하면 리뷰를 남길 수 있어요.

리뷰 0개

아직 리뷰가 없어요.