상세 컨텐츠

본문 제목

역공학: X86, X64, ARM, 윈도우 커널, 역공학 도구, 그리고 난독화

전체 출간 도서

by 비제이퍼블릭 2015. 7. 22. 16:17

본문

 역공학

: X86, X64, ARM, 윈도우 커널, 역공학 도구, 그리고 난독화

 

시리즈명 철통보안 시리즈-027

저자 브루스 댕, 알렉산더 가제트, 엘리어스 바찰러니

역자 김종덕

출판사 비제이퍼블릭

 

출간일 201587 ()

정가 28,000

페이지 412

판형 188*245

 

ISBN 979-11-86697-01-6 (93000) 

원서정보 PRACTICAL REVERSE ENGINEERING

 

 

 

책 소개

 

해커와 루트킷에 대항할 역공학의 과학과 기법을 배우자!

 

악성코드(공격코드, 바이러스, 루트킷 등)를 이용한 사기, 서비스-거부, 침투 및 스파이 활동 범죄가 점점 늘어나고 있다. 역공학이야말로 이러한 소프트웨어를 면밀히 분석하고 이해하는 유일한 방법이다. 그렇기 때문에, 역공학이 정보보호 분야에서 가장 중요한 과목 중 하나인 것도 놀라운 일이 아니다. 하지만 안타깝게도, 역공학은 종종 불가사의하고 복잡한 어둠의 기술정도로 인지되곤 한다. 역공학이 어려운 주제이긴 해도, 저자들은 과학적으로 접근할 수 있다고 믿는다. 이 책의 역공학 실무는 역공학 기술의 수수께끼를 풀고 역공학 절차를 시스템화하는데 초점을 맞추고 있다.

 

- 고유의 시스템적인 역공학 접근방법을 통해 실제 악성코드를 구체적으로 분석한다.

- 가장 대중적인 프로세서 아키텍처인 x86, x64 ARM을 상세하게 다룬다.

- 실제의 루트킷을 대상으로 한, 걸어서 지나가기와 연습문제를 통해 윈도우 커널과 커널-모드 드라이버를 간결하고 구조적으로 다룬다.

- 가상 머신을 보호할 때 쓰는 복잡한 코드-난독화 기법을 익혀서, 프로그램-분석 기술로 난독화 해제하는 방법을 배운다.

- 역공학 공정을 자동화하고 더 좋게 하기 위해 앞선 디버깅 기법을 배운다.

- 실제의 악성코드를 사용한 걸어서 지나가기 및 연습문제를 통해 새롭게 배운 개념을 적용한다.

 

 

이 책의 구성

 

이 책은 실제 악성 바이러스와 루트킷에 바탕을 두고 연습문제와 걸어서 통과하기를 제공하고 있다. 그렇게 한 이유는 독자가 새롭게 배운 기법을 즉시 적용할 수 있게 하기 위해서이다. 악성코드 예제는 알파벳 순으로 (예제 A, B, C, ...와 같이) 정리되었으며 대응되는 SHA1 해시 값은 부록에서 찾아볼 수 있다. 예제의 다수는 세계적인 뉴스가 된 유명한 해킹 사건으로 선정되었으므로 흥미로울만하다. 추가로, Metasm에 익숙해지기 위한 두 가지 연습문제용 스크립트를 준비했다. 이를 통해 Metasm 내부 속으로 여행을 떠나게 될 것이다. 연습문제가 이 책에서 가장 핵심적인 부분이라는 것을 깨닫는 것이 중요하다. 이 책은 의도적으로 그런 식으로 쓰여졌다. 만일 연습문제를 처리하지 않고 단순하게 책을 읽어나간다면, 이해하거나 유지할 만한 것이 많지 않을 것이다.

 

 

독자대상

초중급

 

 

저자 소개

 

브루스 댕

 

마이크로소프트에서 보안개발공학을 주도하며 출시되지 않은 마이크로소프트 제품의 보안기술과 관련된 일을 하고 있다. 이전에는 보안 취약점을 연구하여 마이크로소프트에 보고하고, 오피스 문서를 겨냥한 공격을 분석하는 기법을 공개적으로 나누는데 선구적인 역할을 했다. 그와 그의 팀은 이란우라늄농축프로세스를 공격한 것으로 알려져 더욱 유명해진 악성코드 스턱스넷(Stuxnet)을 분석하기도 했다. RSA, 라스베가스에서 열린 블랙햇, 동경에서 열린 블랙햇, Chaos Computer Club, REcon 및 다수의 다른 콘퍼런스에서 발표했다.

 

알렉산더 가제트

 

쿽스랩(Quarkslab)에서 근무하는 보안 연구가이다. 그의 관심 분야는 역공학, 소프트웨어 보호 및 취약점 연구이다. 알렉산더는 HITB 쿠알라룸프르(2009) REcon 몬트리올(2010, 2011)을 포함한 여러 콘퍼런스에서 발표한 바 있다.

 

엘리어스 바찰러니

 

지난 14년간 컴퓨터 프로그래머, 역공학자, 프리랜서 기술분야 작가였으며 때때로 역공학 코치로 일해왔다. 긴 경력 기간 동안 엘리어스는 스크립트 작성, 해박한 웹 개발, 데이터베이스 디자인 및 프로그래밍, 디바이스 드라이버 및 부트로더나 최소한의 운영체제 같은 낮은-차원 코드 만들기, 관리된 코드 작성, 소프트웨어 보호 평가, 역공학과 데스크톱 보안도구 작성 등 다양한 기술을 연구했다. 또한 REcon 몬트리올(2012, 2013)에서 두 번 발표한 바 있다. 벨기에 Hex-Rays SA에서 일하는 동안, IDA Pro에 새로운 기능을 추가하고 발전시키는데 도움을 주기도 했다. 그 기간 동안, 다양한 기술 블로그에 포스팅하고, IDA Pro 트레이닝도 했으며, 여러 디버깅 플러그인을 개발했다. 또한 IDA Pro 스크립트 편의성을 향상시키고, 버전 1.2.0 이후부터 IDAPython 프로젝트에도 기여했다. 현재는 마이크로소프트에서 재능 있는 소프트웨어 보안 엔지니어와 함께 일하고 있다.

 

 

기여자 소개

 

세바스티앙 조스 Sebastien Josse

 

프랑스 국방성(Direction Generale de l’Armement)에서 보안 연구가로 일하고 있다. 그는 정보시스템 보안분야에서 민간인과 방어자 모두의 관점에서 교육가, 연구자 및 컨설턴트로 10년 이상 일해왔다. 그의 박사학위(Ecole Polytechnique, 2009) 논문 주제는 역공학에 내성이 있는 암호학적 메커니즘과 가상화 시스템을 써서 보호된 프로그램을 끝까지 분석하는 것에 초점을 맞춰, 보호된 프로그램을 동적으로 분석했다. 저널 JICV 뿐만 아니라 ECRYPT(2004), EICAR(2006, 2008, 2011), AVAR(2007) HICSS(2012, 2013 2014) 등 몇 군데의 콘퍼런스에도 기고했다.

 

 

역자 소개

 

김종덕

 

고려대학교에서 수학을 공부했고, 현재 SK 커뮤니케이션즈에서 암호화 보안기술 업무를 담당하고 있다.

 

 

목차

 

1. x86 x64

- 레지스터 집합과 데이터 유형

- 명령어 집합

- 연습문제

- 연습문제

- 시스템 메커니즘

- 걸어서 통과하기

- 연습문제

- X64

- 연습문제

 

2. ARM

- 기본 특징

- 데이터 유형과 레지스터

- 시스템 레벨 제어와 설정

- 명령어 집합 소개

- 데이터 로드 및 저장하기

- 함수와 함수의 호출

- 산술 연산

- 분기와 조건부 실행

- 기타사항

- 걸어서 통과하기

- 다음 단계

- 연습문제

 

3. 윈도우 커널

- 윈도우의 기초

- 리스트

- 비동기 및 애드 혹 실행

- I/O 요청 패킷

- 드라이버의 구조

- 걸어서 통과하기

- 다음 단계

- 연습문제

 

4. 디버깅과 자동화

- 디버깅 툴과 기본 명령

- 디버거 툴에서 스크립트 사용하기

- SDK 사용하기

- 유용한 확장 코드와 툴과 자원

 

5. 난독화

- 난독화 기법 둘러보기

- 난독화 해제 기법에 대한 연구

- 사례 연구

- 연습문제

 

 

출판사 리뷰

 

역공학을 배우는 과정은 외국어를 배우는 것과 비슷하다. 외국어를 배우는 첫 번째 단계는 알파벳 글자를 익히는 것인데, 이는 잘 정의된 의미구조를 갖춘 단어를 만드는데 이용된다. 그다음 단계는 문법적인 규칙을 이해함으로써 단어를 함께 결합하여 올바른 문장을 만드는 것이다. 이러한 규칙에 익숙해진 다음엔 여러 개의 문장으로 복잡한 생각을 이어 붙이는 방법을 배우게 된다. 그 결과, 학습자는 서로 다른 스타일로 쓰여진 많은 책을 읽고 그 안에 담긴 사상을 이해할 수 있는 단계에 이르게 된다. 바로 이러한 지점에서 사람들은 (옛 표현, 음성학 같은) 언어의 난해한 측면을 다루는 책을 참고하기도 한다.

 

역공학 분야의 언어는 아키텍처와 어셈블리어이다. 단어는 어셈블리 명령이다. 문단은 일련의 어셈블리 명령이다. 책은 프로그램이다. 하지만, 책을 완전하게 이해하기 위해서 독자는 단순히 단어와 문법보다 훨씬 더 많은 것을 알아야 한다. 그러한 추가 요소 중에는 산문의 구조와 스타일, 말로 쓰여지지 않은 글쓰기 규칙 같은 것들이 있다. 컴퓨터 프로그램을 이해하려면 어셈블리 명령을 넘어선 개념을 완전하게 통달해야 한다.

 

효과적인 역공학자가 되기 위한 여정은 길뿐만 아니라 시간이 걸리는 일로써 참을성과 인내를 요한다. 이러한 과정에서 (이 책에 나오는 개념을 이해하지 못하거나, 연습문제를 해결할 수 없어서) 여러 번 실패할지도 모르지만, 포기하지 않기를 바란다. 실패는 성공의 일부임을 기억해야 한다. 이러한 안내와 본격적인 내용을 바탕으로 배우는 여정을 위해 잘 준비해야 한다.

 

'전체 출간 도서' 카테고리의 다른 글

당신이 몰랐던 통계 오류  (0) 2015.08.12
누구나 쉽게 배우는 루비  (0) 2015.07.02
모바일 결제 UX 디자인  (0) 2015.06.19

관련글 더보기

댓글 영역