HOME > Detail View

Detail View

해킹의 꽃 디스어셈블링 : 보완 분석에 유용한 리버스 엔지니어링 기술 (Loan 16 times)

Material type
단행본
Personal Author
Kaspersky, Kris 서준석, 역
Title Statement
해킹의 꽃 디스어셈블링 : 보완 분석에 유용한 리버스 엔지니어링 기술 / 크리스 카스퍼스키 지음 ; 서준석 옮김
Publication, Distribution, etc
의왕 :   에이콘,   2014  
Physical Medium
709 p. : 삽화 ; 25 cm
Series Statement
에이콘 해킹ㆍ보안 시리즈 = Hacking security series ; 47
Varied Title
Hacker disassembling uncovered (2nd ed.)
ISBN
9788960775039 9788960771048 (Set)
General Note
색인수록  
Subject Added Entry-Topical Term
Computer security Computer programming Debugging in computer science
000 01057camcc2200337 c 4500
001 000045814006
005 20141028171742
007 ta
008 131216s2014 ggka 001c kor
020 ▼a 9788960775039 ▼g 94000
020 1 ▼a 9788960771048 (Set)
035 ▼a (KERIS)BIB000013355721
040 ▼d 211009
041 1 ▼a kor ▼h eng
082 0 4 ▼a 005.8 ▼2 23
085 ▼a 005.8 ▼2 DDCK
090 ▼a 005.8 ▼b 2014z7
100 1 ▼a Kaspersky, Kris
245 1 0 ▼a 해킹의 꽃 디스어셈블링 : ▼b 보완 분석에 유용한 리버스 엔지니어링 기술 / ▼d 크리스 카스퍼스키 지음 ; ▼e 서준석 옮김
246 1 9 ▼a Hacker disassembling uncovered ▼g (2nd ed.)
260 ▼a 의왕 : ▼b 에이콘, ▼c 2014
300 ▼a 709 p. : ▼b 삽화 ; ▼c 25 cm
440 0 0 ▼a 에이콘 해킹ㆍ보안 시리즈 = ▼x Hacking security series ; ▼v 47
500 ▼a 색인수록
650 0 ▼a Computer security
650 0 ▼a Computer programming
650 0 ▼a Debugging in computer science
700 1 ▼a 서준석, ▼e
900 1 0 ▼a 카스퍼스키, 크리스, ▼e
945 ▼a KLPA

No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.8 2014z7 Accession No. 111788004 Availability Available Due Date Make a Reservation Service B M
No. 2 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.8 2014z7 Accession No. 121231140 Availability Available Due Date Make a Reservation Service B M
No. 3 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.8 2014z7 Accession No. 121248857 Availability Available Due Date Make a Reservation Service B M
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.8 2014z7 Accession No. 111788004 Availability Available Due Date Make a Reservation Service B M
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.8 2014z7 Accession No. 121231140 Availability Available Due Date Make a Reservation Service B M
No. 2 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.8 2014z7 Accession No. 121248857 Availability Available Due Date Make a Reservation Service B M

Contents information

Book Introduction

에이콘 해킹 보안 시리즈 47권. 이 책은 고급 해커의 필수 능력인 디스어셈블링 기법을 집중적으로 다룬다. 분석에 필요한 기본 도구와 어셈블리어 분석을 시작으로 각종 보안 메커니즘을 우회할 수 있는 방법을 설명한다.

1부 '해킹 툴의 소개', 2부 '기본 해킹 기술', 3부 '고급 디스어셈블링 기법', 4부 '실제 코드 연구'의 네 부분으로 구성되어 있으며, 디버깅, 디스어셈블링에 대한 기본 지식부터 커널 분석, 고급 패치 기술 등 분석 과정에서 마주칠 수 있는 깊이 있는 주제들을 다양한 관점과 예제를 통해 학습할 수 있는 훌륭한 분석 길잡이가 되어 줄 것이다.

★ 요약 ★

이 책은 고급 해커의 필수 능력인 디스어셈블링 기법을 집중적으로 다룬다. 분석에 필요한 기본 도구와 어셈블리어 분석을 시작으로 각종 보안 메커니즘을 우회할 수 있는 방법을 설명한다. 디버깅, 디스어셈블링에 대한 기본 지식부터 커널 분석, 고급 패치 기술 등 분석 과정에서 마주칠 수 있는 깊이 있는 주제들을 다양한 관점과 예제를 통해 학습할 수 있는 훌륭한 분석 길잡이가 되어 줄 것이다.

★ 이 책에서 다루는 내용 ★

디스어셈블이 필요한 상황, 특정 언어 구조체를 분석하기 위한 시작점, 보호 메커니즘 개발자가 숨겨 놓은 트랩에 빠지지 않고 수백 메가에 육박하는 코드 밀림에서 길을 잃지 않는 방법을 알려주는 책이다. 특히 이 개정2판에서는 실제 디스어셈블링 기법에 관련된 내용이 추가됐다. 특히 메모리 덤프 분석, 합법적인 소프트웨어 보호 메커니즘, 악성 프로그램 관련 내용이 새로운 단원으로 추가됐다. 또한 관련 예제와 원리들은 최신 동향에 맞춰 수정했다. 안티디버깅 기법 우회, 패킹, 암호화, 다형성, 간단한 난독화 코드 극복과 관련된 내용에 주안점을 두고 작성했다.

★ 이 책의 구성 ★

1부 '해킹 툴의 소개', 2부 '기본 해킹 기술', 3부 '고급 디스어셈블링 기법', 4부 '실제 코드 연구'의 네 부분으로 구성되어 있다.

이 책은 다음과 같은 단원들로 구성된다.

■ 1장 '해킹 툴 입문'에서는 디버거, 디스어셈블러, 디컴파일러, 헥스 에디터, 언패커, 덤퍼 등의 대표적인 윈도우 해킹 툴을 개략적으로 다룬다. 또한 해킹 세계로 뛰어드는 데 필요한 최소한의 지식을 습득하기 위한 필독 도서들을 소개한다.
■ 2장 '유닉스용 해킹 툴'에서는 유닉스와 리눅스 환경에서 사용할 수 있는 해킹 툴을 소개한다.
■ 3장 '디버거 에뮬레이션과 에뮬레이터'에서는 유명하고 흥미로운 주제인 디버거 에뮬레이팅과 에뮬레이터 관련 내용을 다룬다. 코드 분석가들은 에뮬레이팅 기법을 활용해 거의 무한대의 가능성을 확보할 수 있다. 유명한 에뮬레이터와 애플리케이션 영역에 대한 설명뿐만 아니라, 현존하는 에뮬레이터의 비교 분석, 관련 분야의 최신 기술을 소개한다.
■ 4장 '어셈블러 소개'에서는 어셈블러의 개괄적인 내용과 함께 각 언어의 장단점을 다룬다. 어셈블리 언어를 능숙하게 다루지 못하면 진정한 해커라고 볼 수 없기 때문에 4장의 내용은 매우 중요하다고 볼 수 있다. 고급 프로그래밍 언어 지식만으로는 그 어떤 것도 디스어셈블할 수 없다. 초보자와 전문 프로그래머 모두의 신중한 접근이 요구되는 어셈블리 변환기를 선택하는 문제도 다룬다.

■ 2부의 첫 번째 단원인 5장 '기본 해킹 기술 익히기'에서는 보호 메커니즘에 대한 간략한 소개와 함께 여러 메커니즘의 강점과 약점, 현존하는 보호 메커니즘들이 공통적으로 갖는 구현상 결함을 다룬다. 또한 합법적인 사용자들의 편의성을 해치지 않으면서 보호 메커니즘을 강화하는 데 도움이 될 만한 보호 메커니즘 개발 권고 내용도 제공한다.
■ 6장 '시작 준비'에서는 해커가 보호 메커니즘을 크랙할 때 사용하는 기본 기법들을 소개한다. 헥스 데이터, API 스파이, 디스어셈블러를 다루는 기본 기법뿐만 아니라 간단한 해킹 예제도 제공한다.
■ 7장 '애플리케이션 디버깅 익히기'에서는 애플리케이션 디버깅을 소개한다. 이 책이 디스어셈블링에 초점이 맞춰져 있긴 하지만, 때로는 전체 프로그램의 디스어셈블 리스트를 분석하는 것이 비효율적인 경우가 있다. 디버거는 가장 인기 있는 해킹 도구이며, 종종 디스어셈블러와 함께 사용된다. 7장에서는 디버거를 사용해 효율적으로 보호 메커니즘 코드를 찾아내는 기법의 설명과 예제를 제공한다.
■ 8장 '유닉스와 리눅스 환경에서의 디버깅 특성'에서는 내용상 7장과 이어지는 부분이라고 할 수 있다. 여기서는 유닉스와 리눅스 환경에서 부딪힐 수 있는 특정 디버깅 기능을 다룬다. 유닉스 세계에서 가장 강력한 디버거로 꼽히는 GDB를 효율적으로 사용하는 방법도 설명한다. 특히 심볼 정보 없이 바이너리 파일을 디버깅하는 방법에 초점이 맞춰져 있다.
■ 9장 'Linice로 수행하는 커널 디버깅의 기초'에서는 보호된 애플리케이션 해킹에 최적화된 디버거인 Linice 예제를 통해 커널 디버깅 관련 주제를 다룬다.
■ 10장 '고급 디버깅 주제'에서는 2부의 마지막 단원으로, 고급 디버깅 주제와 상급 난이도의 코드 분석에 필요한 내용을 다룬다. 구체적으로 10장에서는 소프트아이스(SoftICE)를 로거로 사용하거나, 디버거와 디스어셈블러 조합을 사용해 효율적으로 브레이크 포인트를 다루는 기법과 큰 크기의 프로그램에서 보호 메커니즘 코드를 재빨리 찾아내는 기법 등 좀 더 효율적인 해킹을 수행하기 위한 다양한 트릭을 학습할 수 있는 계기를 제공한다.

■ 11장 '32비트 PE 파일 디스어셈블링'에서는 32비트 PE 파일을 디스어셈블링하는 방법을 중점적으로 다룬다. PE 파일 구조와 해당 형식의 파일에 외부 코드를 삽입하는 다양한 기법도 다룬다. 대부분의 웜, 바이러스, 셸코드와 보호 메커니즘이 코드 삽입 기법을 사용하기 때문에 이 책의 뒷부분을 이해하려면 11장의 내용을 반드시 숙지해야 한다.
■ 12장 '리눅스와 BSD에서 ELF 파일 디스어셈블링'에서는 ELF 파일에 외부 코드를 삽입하는 기법과 실제 디스어셈블링 예제를 포함해 ELF 파일을 디스어셈블링할 때 필요한 여러 이슈를 소개한다.
■ 13장 'x86-64 아키텍처에서 수행하는 디스어셈블링'에서는 AMD 64 아키텍처상에서 64비트 실행 파일을 디스어셈블링하는 방법과 관련된 내용을 다룬다.
■ 14장 '리눅스 커널 디스어셈블링과 해킹'에서는 운영체제 커널 디스어셈블링 기법을 설명하며, 리눅스 커널에 초점을 맞췄다. 커널을 분석하는 기법과 함께 간단한 커널 해킹 예제를 제공한다.
■ 15장 '고급 패칭 기법'에서는 온라인 패칭과 스텔스 기법의 비밀을 포함한 고급 패칭 기법을 다룬다. 윈도우 NT/2000/XP 커널 수정 예제를 통해 패칭 기법을 설명한다. 또한 온라인 패칭에 대항하는 커널 보호 메커니즘을 제거하기 위한 문서화되거나 문서화되지 않은 기능과 함수를 사용하는 방법도 설명한다. BSOD를 극복하기 위한 소프트아이스 사용 방법을 포함해 정교하지 못한 커널 패칭으로 인한 부작용을 극복하는 방법도 설명한다.
■ 16장 '기타 형식의 파일 디스어셈블링'은 3부의 마지막 단원으로, 다양한 형식의 파일을 디스어셈블링하는 방법을 다룬다. 32비트와 64비트 PE 파일, ELF 파일 디스어셈블링 관련 내용을 다뤘던 이전 단원들과 달리 16장에서는 PDF 파일 예제를 통해 다른 형식의 파일을 디스어셈블하는 기법을 설명한다.
■ 17장 '윈도우에서의 숨바꼭질'은 윈도우 환경에서 안티디버깅 기법과 스텔스 기법을 활용하는 방법을 다룬다. 동일 주제를 유닉스와 리눅스 환경에서 구현하는 방법에 대한 내용은 이 책의 소스코드에서 찾아볼 수 있다.
■ 18장 '패커 극복법'에서는 윈도우 환경에서 패킹됐거나 보호된 프로그램을 조사하는 방법을 다룬다. 패킹이 적용된 형태로 배포되는 프로그램의 수는 증가 추세에 있다. 패커의 주목표는 코드 분석을 어렵게 만드는 것이다. 이러한 일환으로 패커는 프로텍터 형태로 빠르게 진화한다. 해커와 합법적인 사용자에게 같은 무기가 사용된다. 웜, 바이러스, 트로이 목마는 안티바이러스 프로그램으로부터 자신의 존재를 숨기기 위해 패커와 프로텍터를 사용한다.
■ 19장 '난독화 극복법'에서는 코드 난독화를 극복하는 방법을 다룬다. 코드 난독화는 소프트웨어 코드 분석을 복잡하게 만드는 일련의 기법과 방법을 총칭한다. 아직까지 해커가 만든 이 무기에 대응할 수 있는 효과적인 기법은 소개되지 않았다. 하지만 이런 기법을 구현하려는 시도는 여러 방면에서 이뤄지고 있다.
■ 20장 '리눅스와 BSD에서의 패커 극복법'에서는 유닉스와 리눅스 환경에서 동작하는 패커, 프로텍터, 난독화 수행기를 극복하는 방법을 다룬다. 아직까지 이런 유닉스 기반 보호 메커니즘은 해커의 기술 연마를 위해 사용되는 크랙미 예제 형태로만 존재한다. 대부분 유닉스 프로그램이 소스코드 형태로 배포되는 오픈소스 프로젝트인 것이 그 이유로 손꼽힌다. 하지만 상용 유닉스 프로그램은 점차 증가하는 추세에 있다. 그러므로 해커는 이런 강력한 적에 대항할 수 있는 준비를 해야 한다.
■ 21장 '악성코드 디버깅과 디스어셈블링'에서는 웜, 바이러스, 악성코드 감시, 검출, 디스어셈블링 관련 주제를 다룬다. 안티바이러스 소프트웨어(모든 업데이트가 적용된 제품이라 할지라도)가 항상 악성코드를 탐지하지 못하기 때문에 이런 주제를 이해하는 것은 매우 중요하다. 숙련된 해커는 분석 대상이 어떤 내용을 담고 있더라도 자신의 경험과 강력한 무기인 디버거(보통 소프트아이스와 같은 도구를 사용)와 기타 도구를 사용해 악성 코드의 정체를 찾아낼 수 있다.


Information Provided By: : Aladin

Author Introduction

크리스 카스퍼스키(지은이)

기술 서적 저자로서, Hacker Uncovered 시리즈 도서들과, , , 등의 저서, 그리고 리눅스, BSD 해킹, 디스어셈블링, 코드 최적화 등과 관련한 다양한 기고문을 발표했다. 주로 컴파일러 개발, 최적화 기술, 보안 메커니즘 연구, 실시간 OS 커널 개발, 소프트웨어 보호 메커니즘, 안티 바이러스 프로그램 개발과 관련된 보안 및 시스템 프로그래밍을 주로 다룬다.

서준석(옮긴이)

대학교에서 컴퓨터 공학을, 대학원에서는 정보보호를 전공했으며, 한국정보보호교육센터, 삼성SDS, 보안 프로젝트에서 다양한 보안 업무와 기술 분석을 담당했다. 현재는 혁신 IT 교육 프로그램인 구공팩토리를 운영하는 ㈜흥미랩 대표를 맡고 있으며, 초등학생부터 현업 실무자들까지 다양한 수강생을 대상으로 하는 재미있고 흥미로운 IT 전문 기술 교육 콘텐츠 개발에 힘쓰고 있다. 다양한 분야 중에서도 특히 정보 보안과 인공지능 전문 기술에 관심이 많다. 저서로는 『인공지능, 보안을 배우다』(비제이퍼블릭, 2019)와 공저한 『NMAP NSE를 활용한 보안 취약점 진단』(에이콘, 2013)이 있으며, 번역서로는 『Hacking Exposed 7 한국어판』(에이콘, 2014), 『해킹의 꽃 디스어셈블링 Hacker Disassembling Uncovered』(에이콘, 2013)가 있다.

Information Provided By: : Aladin

Table of Contents

1부 해킹 툴의 소개

1장 해킹 툴 입문
___디버거
___디스어셈블러
___디컴파일러
___헥스 편집기
___언패커
___덤퍼
___리소스 편집기
___스파이
___감시 프로그램
___수정 프로그램
___보호 CD 복사기

2장 유닉스용 해킹 툴
___디버거
___디스어셈블러
___스파이
___헥스 편집기
___덤퍼
___자동화된 보호 툴

3장 디버거 에뮬레이션과 에뮬레이터
___에뮬레이터 소개
___역사적 개요
___대표적인 에뮬레이터
___에뮬레이터 선택

4장 어셈블러 소개
___어셈블리어의 철학
___C 예제로 어셈블리 개념 설명
___작업공간으로서 어셈블리 삽입
___사용 가능한 툴
___어셈블리 번역기의 개요와 비교

2부 기본 해킹 기술

5장 기본 해킹 기술 익히기
___비밀 키 유형에 따른 보호 메커니즘 분류
___보호 강도
___상용 솔루션의 단점
___사용 기술의 구현 에러
___심각한 결과를 야기하는 사소한 오류의 정리

6장 시작 준비
___보호 기술 제작과 크랙
___디스어셈블러 익히기
___실전 크랙 예제
___정리

7장 애플리케이션 디버깅 익히기
___디버깅 소개
___디스어셈블러와 디버거를 같이 사용
___API 함수에 브레이크 포인트 설정
___메시지에 브레이크 포인트 설정
___데이터에 브레이크 포인트 설정
___스택 추적
___DLL 디버깅
___정리

8장 유닉스와 리눅스 환경에서의 디버깅 특성
___GDB 기반의 Ptrace
___GDB에서 바이너리 파일 디버깅

9장 Linice로 수행하는 커널 디버깅의 기초
___시스템 요구 사항
___Linice 컴파일과 설정
___시스템 부팅과 디버거 실행
___Linice로 작업할 때 지켜야 할 기본 원칙
___정리

10장 고급 디버깅 주제
___소프트아이스를 로그 수집기로 사용
___무작위 브레이크 포인트로 해킹 트릭 사용
___범위 설정을 통한 크래킹
___정리

3부 고급 디스어셈블링 기술

11장 32비트 PE 파일 디스어셈블링
___다양한 실행 환경에서 PE 파일 구조의 특징
___일반적인 개념과 PE 파일의 요구 사항
___PE 파일 구조
___PE 파일에 코드를 삽입하거나 제거하는 기술
___정리

12장 리눅스와 BSD에서 ELF 파일 디스어셈블링
___필요한 도구
___ELF 파일 구조
___ELF 파일에 외부 코드 삽입
___리눅스에서 간단한 크랙미 프로그램을 디스어셈블링
___정리

13장 x86-64 아키텍처에서 수행하는 디스어셈블링
___소개
___필요한 도구
___x86-64 아키텍처의 개요
___64비트 모드로 전환
___x86-64 환경에서 만드는 ‘Hello, World’ 프로그램
___정리

14장 리눅스 커널 디스어셈블링과 해킹
___디스어셈블링 리눅스 커널
___커널 해킹의 비밀

15장 고급 패칭 기법
___온라인 패칭의 비밀과 트릭
___클라이언트 프로그램을 크래킹하는 잘 알려지지 않은 방법
___윈도우 NT/2000/XP 커널 핵
___BSOD 이후의 세계가 존재하는가?
___참고 사이트
___정리

16장 기타 형식의 파일 디스어셈블링
___PDF 파일 디스어셈블링
___정리

4부 실제 코드 연구

17장 윈도우에서의 숨바꼭질
___윈도우 환경을 위한 안티디버깅 기법
___윈도우 환경에서 사용되는 스텔스 기법
___정리

18장 패커 극복법
___예비 분석
___언패킹과 대체 방안
___언패킹 알고리즘
___오리지널 진입점 검색
___보호된 애플리케이션을 덤프
___정리

19장 난독화 극복법
___난독화 도구의 작동 원리
___난독화된 프로그램을 크랙하는 방법
___블랙박스 접근법
___가상머신 지하 감옥
___정리

20장 리눅스와 BSD에서의 패커 극복법
___패커가 성능에 미치는 영향
___UPX
___Burneye
___Shiva
___패커 비교
___정리

21장 악성코드 디버깅과 디스어셈블링
___디버거를 활용한 방첩 활동
___공격 코드 감사와 디스어셈블링
___참고 자료
___정리

찾아보기

New Arrivals Books in Related Fields

Ramamurthy, Bina (2021)
윤관식 (2020)