메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

리버스 엔지니어링 기드라 실전 가이드

유사 멀웨어로 익히는 소프트웨어 정적 분석

한빛미디어

번역서

판매중

  • 저자 : 나카지마 쇼타 , 고타케 다이치 , 하라 히로아키 , 가와바타 고헤이
  • 번역 : 이창선 , 임재용
  • 출간 : 2022-01-10
  • 페이지 : 920 쪽
  • ISBN : 9791162245071
  • 물류코드 :10507
  • 초급 초중급 중급 중고급 고급
4.9점 (20명)
좋아요 : 30

실전 예제와 함께 순서대로 경험하고 익히는 리버스 엔지니어링 

 

소프트웨어 리버스 엔지니어링은 주로 소스코드가 없는 환경에서 타깃 프로그램을 분석할 때 사용된다. 리버스 엔지니어링 도구 기드라(Ghidra)는 디컴파일러 이외에도 다양한 아키텍처나 실행 파일 등을 제공하여 악성 프로그램 분석, 펌웨어 분석, 취약점 진단 등 다양한 분야에서 활용될 수 있다. 그러나 기드라를 제대로 활용하기 위해서는 풍부한 경험이 필요하다. 이 책은 실습을 중심으로 조작 방법이나 분석 방법을 효과적으로 배울 수 있도록 구성했다. 기드라를 사용해 다양한 연습용 프로그램을 분석하며 정체를 밝혀가는 묘미를 느껴보길 바란다.

 

 

[한국어판 특별 부록 수록]

기드라 활용법에 더욱 익숙해질 수 있는 CTF 형식의 실습 문제와 예제 파일 제공

나카지마 쇼타 저자

나카지마 쇼타

㈜사이버디펜스(cyberdefense) 연구소에서 Cyber Threat Intelligence Analyst로 일하며 멀웨어 분석, 사고 대응, 위협 정보 수집·분석 업무를 맡고 있다. 기술 분야 서클 올세이프(Allsafe)의 관리자이기도 하다. JSAC, HITCON CMT, AVAR, CPRCon, Black Hat EUROPE Arsenal, CodeBlue BlueBox 등에서 연설했다.

고타케 다이치 저자

고타케 다이치

㈜아카쓰키(Akatsuki Inc.)에서 보안 엔지니어로 일하며 스마트폰 게임이나 웹 애플리케이션 취약점 진단, 사내 네트워크 침투 테스트 업무를 맡고 있다. 치트 대책 도구나 진단 도구 등의 개발도 좋아한다. Black Hat USA 2020 Arsenal에서 연설했다.

하라 히로아키 저자

하라 히로아키

㈜트렌드마이크로(Trend Micro Inc.)에서 멀웨어 분석이나 위기 대응, 위협 정보 수집·분석 업무를 맡아 레드팀에서 일한다. 기술 분야 서클 올세이프의 아트디렉터이기도 하다.

가와바타 고헤이 저자

가와바타 고헤이

㈜트렌드마이크로에서 사이버 범죄나 표적형 공격에 이용되는 멀웨어 분석과 더불어 취약점 연구를 한다. 기술 분야 그룹 올세이프의 CTO이기도 하다. RSA 콘퍼런스 APJ와 초대 손님으로만 운영되는 프라이빗 콘퍼런스에서 연설했다.

이창선 역자

이창선

1998년 리눅스를 처음 시작했다. 이후 각종 CTF 대회에서 입상했고 다양한 보안 콘퍼런스 및 보안 관련 세미나에서 발표했다. 현재 기아에서 차량 보안을 담당하고 있다.

임재용 역자

임재용

2012년 처음 보안 공부를 시작했다. 이후 각종 CTF 대회 등을 참여했고 보안 컨설팅 업무를 맡았었다. 현재는 일본 LINE에서 근무하며 코인 거래소 보안 업무를 맡고 있다.

CHAPTER 1 리버스 엔지니어링 입문

1.1 리버스 엔지니어링

1.2 프로그램 실행

1.3 호출 규약

1.4 C 언어와 어셈블리 언어

1.5 PE 포맷

1.6 x64 아키텍처

 

CHAPTER 2 기드라 입문

2.1 기드라란

2.2 설치

2.3 프로젝트

2.4 임포트 

2.5 CodeBrowser

 

CHAPTER 3 리버스 엔지니어링 연습

3.1 downloader.exe

3.2 분석 접근법

3.3 함수 인수 분석

3.4 독자적인 구조체 수동 정의

3.5 downloader.exe 분석을 마치며

 

CHAPTER 4 Ghidra Script/Extension으로 기능 확장 

4.1 기드라 기능 확장

4.2 Ghidra Script 

4.3 Ghidra API

4.4 Headless Analyzer

4.5 Ghidra Extension

 

CHAPTER 5 Ghidra vs. Crackme - ELF 크랙미 분석

5.1 크랙미란

5.2 Level1: XOR을 통한 단순한 인코더

5.3 Level2: 커스텀 인코더

5.4 Level3: 버퍼 오버플로

5.5 Level4: Go로 구현된 바이너리 해석

 

CHAPTER 6 Ghidra vs. MOTHRA - 윈도우 백도어 분석 

6.1 분석 준비

6.2 main 함수

6.3 C2 서버에서 명령어 검색

6.4 명령어 분기

6.5 MOTHRA RAT 분석을 마치며

 

CHAPTER 7 Ghidra vs. BlackBicorn - 윈도우 패커 분석

7.1 패커란

7.2 BlackBicorn 개요

7.3 BlackBicorn 분석(스테이지 0)

7.4 BlackBicorn 분석(스테이지 1)

7.5 BlackBicorn 분석(스테이지 2)

7.6 BlackBicorn 분석을 마치며

 

CHAPTER 8 Ghidra vs. Godzilla Loader - 윈도우 멀웨어 분석

8.1 멀웨어계의 고질라 Godzilla Loader

8.2 분석 대상 파일

8.3 패커 분석

8.4 문자열 난독화 복원

8.5 Godzilla Loader의 기능

8.6 Godzilla Loader 분석을 마치며

 

CHAPTER 9 Ghidra vs. SafeSpy - 안드로이드 앱 분석

9.1 안드로이드 기초

9.2 안드로이드 네이티브 라이브러리의 기초

9.3 안드로이드 앱 정적 분석

9.4 SafeSpy 앱 분석

 

APPENDIX A 기드라 응용

A.1 Binary Patching

A.2 Program Difference

A.3 Version Tracking

A.4 Ghidra Server

A.5 기드라 커스터마이즈

A.6 컬러 스키마 변경

 

APPENDIX B Ghidra Script 소개

B.1 내장된 Ghidra Script

B.2 서드 파티 Ghidra Script

B.3 저자들이 만든 오리지널 스크립트

 

APPENDIX C 실전 문제 풀이

C.1 Level1.exe

C.2 Level2.exe

단순한 도구 설명서가 아니다! 

멀웨어 코드를 읽는 본질적인 힘을 길러주는 리버스 엔지니어링 학습서 

 

2019년 3월 미국 국가안보국(NSA)이 소프트웨어 리버스 엔지니어링 도구 기드라(Ghidra)를 공개했습니다. 기드라 덕분에 디스어셈블러뿐만 아니라 고기능 디컴파일러를 무료로

사용할 수 있게 되었고 리버스 엔지니어링의 벽은 훨씬 낮아졌습니다. 하지만 리버스 엔지니어링 입문자는 여전히 어셈블리 언어를 학습하며 쉽게 좌절감을 느낍니다. 

 

그래서 이 책에서는 가능한 한 어셈블리 언어를 읽지 않고 리버스 엔지니어링을 배울 수 있도록, 기드라의 디컴파일러가 출력하는 유사 C 언어를 기초로 설명합니다. 기초 지식을 습득한 후 모의 파일을 분석하며 멀웨어 코드를 읽는 본질적인 힘을 기르고 다양한 실전 경험을 쌓을 수 있도록 구성했습니다. 실전을 순차적으로 경험하는 것은 멀웨어 분석 학습에서 가장 어렵고도 중요합니다. 어셈블리 언어가 어려워 도전하지 못했거나 어셈블리 언어를 읽기 힘들어 정적 분석을 포기했었다면 지금이 바로 기회입니다!

 

 

- 기초 편

1장 리버스 엔지니어링 입문

리버스 엔지니어링 기초 지식 설명

2장 기드라 입문

기드라 기본 기능 및 조작 방법 설명

3장 리버스 엔지니어링 연습

윈도우 프로그램 분석을 연습하며 기드라를 이용한 리버스 엔지니어링 기법 설명

4장 Ghidra Script/Extension으로 기능 확장

분석을 자동화할 수 있는 Ghidra Script와 기능을 확장해주는 Ghidra Extension 설명

 

- 실전 편

5장 Ghidra vs. Crackme - ELF 크랙미 분석

CTF와 비슷한 ELF 크랙미를 분석하고 기드라 분석 결과를 바탕으로 멀웨어에 이용되는 인코딩 방법 및 취약점 학습

6장 Ghidra vs. MOTHRA - 윈도우 백도어 분석

윈도우 모의 백도어 MOTHRA를 분석하며 기드라를 활용한 동적 멀웨어 분석 학습

7장 Ghidra vs. BlackBicorn - 윈도우 패커 분석

윈도우 패커(Packer) BlackBicorn을 분석하며 최근 윈도우 멀웨어에 이용되는 패커 구조와 기드라를 활용한 동적 분석 방법 학습

8장 Ghidra vs. Godzilla Loader - 윈도우 멀웨어 분석

윈도우 멀웨어 Godzilla Loader를 분석하며 기드라 분석 결과를 바탕으로 실제 멀웨어 동작 학습

9장 Ghidra vs. SafeSpy - 안드로이드 앱 분석

윈도우 멀웨어 FakeSpy를 무력화한 SafeSpy를 분석하며 기드라를 사용한 동적 안드로이드 앱 분석 방법 학습

 

 

부록 

기초 편, 실전 편에서 다루지 않은 기드라 응용 기능과 더불어 리버스 엔지니어링에 도움이 되는 Ghidra Script 소개. 한국어판 특별 부록으로 CTF 형식의 문제를 실제로 풀어볼 수 있는 부록 C를 추가

기드라1.jpg

 

 

리버스 엔지니어링(Reverse Engineering, RE, 역공학, 逆工學)은

장치 또는 시스템의 기술적인 원리를 

그 구조분석을 통해 발견하는 과정이다

 

 

독학으로 코딩을 공부하면서 어려웠던 점 중에 하나는 기초적인 문법을 익히는 부분까지는 어찌어찌 익히겠는데 조금 더 큰 프로젝트 작업을 해보려고 하면 굉장히 막막해진다는 것이었다. 그럴때가 되면 다른 사람들은(전문가) 어떤 식으로 프로젝트를 구성하고 만들까가 참 궁금했다. 그때 알게된 단어가 리버스 엔지니어링이었다.

 

안드로이드 앱 개발을 공부할 때 인터넷을 검색해가며 몇 가지를 분석해보려고 했지만 기초가 부족한 상태에서는 번역되어 나온 코드도 해석해내기 무척 어려웠다. 그리곤 안드로이드 개발 공부는 멈췄다.

 

이번 리뷰어 활동을 통해 받게 된 "리버스 엔지니어링 기드라 실전 가이드: 유사 멀웨어로 익히는 소프트웨어 정적 분석"는 그때의 기억을 소환해 주었다. 

 

이 책은 미국 국가안보국(NSA)이 2019년 3월에 공개한 소프트웨어 리버스 엔지니어링 도구인 기드라(Ghidra)에 대해 설명한다. 이 도구로 인해 디스어셈블러뿐만 아니라 고기능 디컴파이러를 무료로 사용할 수 있게 되었다.

 

처음엔 책의 내용이 매우 어렵게 느껴졌다. 1장에서 C언어와 어셈블러 기초를 소개하고 있는데 이에 대한 배경 지식이 없으면 당황할 수도 있겠다. 가볍게(?) 읽고 넘어갔다. 2장에서는 기드라에 대한 기본적인 구성, 사용법 등을 소개한다.

 

 

기드라2.jpg

 

 

3장과 4장에서는 기드라를 가지고 기초적인 실습을 하며 기드라 사용법을 익히면서 리버스 엔지니어링의 과정을 연습해본다. 출판사에서 제공하는 예제 파일(downloader.exe)을 활용해서 간단히 연습해볼 수 있었다.

 

5장부터 9장까지는 보다 실전적인 예제들을 통해 연습을 해볼 수 있었다. 모의로 분석할 수 있도록 제공된 크랙미, 윈도우 백도어, 윈도우 패커, 원도우 멀웨어, 안드로이드 앱들을 가지고 단계별로 분석하는 연습을 할 수 있다.

 

 

기드라3.jpg

 

 

 

 

처음 책을 받아보았을 때 엄청난 두께에 놀랐다. 900페이지가 넘는 방대한 분량에 기드라에 대한 사용법과 분석 방법을 꾹꾹 담아 놓았다. 다양한 종류의 멀웨어들을 모의로 분석해 볼 수 있었던 것이 신선했다.

 

아마도 이 책을 읽어볼까 고민하는 분들은 컴퓨터 초보자분들은 아닐 가능성이 높다. 기드라 사용법이나 리버스 엔지니어링을 공부하는 데에는 충분히 좋은 책이라고 생각된다. 저같은 초보자에는 최큼 어렵게 느껴졌지만 조금 더 시간을 갖고 연습해보면 리버스 엔지니어링을 경험해보는 면에서는 아주 훌륭한 책이었다.

 

 

기드라4.jpg

 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

1.     장점

A.      컴퓨터 구조론에서 배웠던 이론들을 있으며 특히 C/C++이나 Python 코드를 디스어셈블 시켜 하드웨어적으로 코드가 어떤 식으로 동작하는지 어셈블리어를 통해 세세하게  이해할 있다.

B.      기드라 프레임 워크를 활용을 통한 리버스 엔지니어링 과정을 설명하여 리눅스 ELF파일, 윈도우 PE파일, 안드로이드 APK 분석 방법과 해석을 표현하여 혼자 하기 벅차지 않음

 

2.     단점

A.      C, Java, 어셈블리어를 모르는 경우 이해하는데 난이도가 있을 있음

 

3.     후기

A.      리버스 엔지니어링이란 프로그램을 분석하여 내부 구조를 파악하여 원래 소스가 어떤 건지 알아내는 방법으로 소스코드 분실이나 보안성 평가에 사용될 있다. 반대로 게임 핵이나 불법 프로그램으로 이용이 있어 양날의 검이라 불리며 공부를 하다보면 프로그램이 하드웨어 적으로 어떻게 돌아가는지 이해를 있다.

 

KakaoTalk_Photo_2022-02-24-15-34-16.jpeg

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

SE-6089948e-6edc-415b-b0bf-233a94e38c24.jpg

 

대상 독자

- 입문자와 실무자에게 둘 다 도움이 되는 책

좋은 점

- 입문자에게는 무료 디컴파일러를 제공함으로써 어셈블러라는 허들을 낮춘 기드라를 통해 실제 정적 분석을 하며, 리버스 엔지니어링을 배울 수 있습니다

- 실무자에게는 실무에 사용할 기능을 빠르게 익히도록 5장부터 준비가 되어있습니다.

- 입문자에게 Chapter 5에 소개된 Crackme를 배포하는 양질의 사이트 리스트가 큰 도움이 될 거라 확신합니다. 리스트는 아래와 같습니다.

https://crackmes.one

https://overthewire.org/wargmaes

https://pwnable.kr

https://pwnable.xyz

https://challenges.re

https://reversing.kr

https://www.root-me.org/en/Challenges/Cracking

https://0x00sec.org/c/reverse-engineering/challenges

아쉬운 점

- 기드라의 설명에 IDA Pro와 비교가 없다.

개인적으로는 의미가 있다고 생각하여 총평 아래에 작성해보았습니다.

- 종종 이미지의 화질이 좋지 않아 이미지에 표시된 텍스트를 읽는데 피로감이 있다.

총평

리버스 엔지니어링을 공부하고 싶으나 어셈블러가 큰 러닝커브라 느껴졌던 사람이라면 가뭄의 단비 같은 책이 아닐까 싶습니다. 정적 분석에 관한 내용만 다루긴 하지만 실제로 역공학을 하면서 배울 수 있다는 점이 이 책의 큰 장점이라 생각됩니다.

기드라가 나왔을때 가장 큰 이슈는 Ghidra가 IDA Pro를 대체가능 할 것인가 였는데, 결국 서로 장단점이 있는 툴들이다보니 둘 다 목적에 맞게 사용하게 된다.

IDA Pro에서 사용되는 툴, 헬퍼와 스크립트들은 기드라에 바로 사용이 불가능하다는게 당장 대체하기 힘든 이유기도합니다.

그리고 기드라는 JAVA기반이다보니 바이너리가 크면 Analyze가 느린 단점이 있다. 또한 디컴파일 성공여부가 툴에 따라 갈리기도 합니다.

기드라는 헤드리스 모드를 지원해서 대규모로도 리버스 엔지니어링이 가능한 장점이 있으나, 개인이 쓰기에는 큰 장점으로는 와닿지 않습니다.

이렇 다양한 차이들이 있다보니 Ghidra와 IDA Pro를 비교해 볼 필요성이 느껴집니다.

위의 내용을 제외하고 간단하게 정리하자면 아래와 같습니다.

 

 

Ghidra

IDA Pro

Price

Free (with Decompiler)

1975 USD

Debugger

Not included

Included

Plugins

a lot

a few

Ghidra Decompiler

Hex-rays

P-Code base

Microcode base

All Proccesors

Partial Proccesors

xrefer not support

xrefer support (variable, data, function)

variable mapping not support

variable mapping support

You can not change the expression of a variable

You can change the expression of a variable (char, hex, decimal, etc)

 

 

항상 시간에 쫓겨 제대로 된 설계도 못하고 바로 프로그램 짜는 일이 다반사이지만, 그래도 마음만은 완벽한 디버깅과 소프트웨어 테스트까지 마치는 것을 꿈꾸곤 한다. 나에게 이건 진짜 꿈과 같은 일이다. 그래도 만일의 하나, 그런 꿈과 같은 일이 생길 때를 대비해, 장수가 미리 칼을 가는 마음으로 이번에 큰맘을 먹고 '리버스 엔지니어링 기드라 실전 가이드'를 보게 되었다.

 

 

 

IT 사람이라면, 리버스 엔지니어링이라는 말을 많이 들어 봤을 것이다. 역공학이라고 해석되는 것으로 만들어진 소프트웨어를 역으로 추적하여 분석하는 일이다. 긍정적인 측면으로 보면, 만들어진 소프트웨어의 불안전한 부분 보강하고, 개선하는 데 큰 도움을 주지만, 반대로 악용되면, 불법 복제를 위한 키젠이나 크랙을 만들 때도 쓰이고, 소프트웨어 기술을 빼 가는 산업 스파이 역할도 한다. 

 

 

 

어찌 됐든 리버스 엔지니어링은 소프트웨어를 완벽하게 만드는데 큰 장점이 있다. 그리고 이를 위해서는 역공학 소프트웨어 툴이 필요한데, 미국 국가안보국 NSA에서 개발한 프로그램이 바로 기드라다. 이게 2003년부터 유지 보수하며 개발된 것이라 신뢰도도 높고, 기능도 속된 말로 빠방하다. 

 

 

 

'리버스 엔지니어링 기드라 실전 가이드'는 이 기드라의 자세한 사용법을 알려주고 있지만, 흔히 보는 사용설명서 역할이 아닌, 진짜 리버스 엔지니어링을 어떻게 하는지를 실전분석을 통해 전문가의 경험을 그대로 전해주고 있는 책이다. 리버스 엔지니어링으로 크랙도 해보고, MOTHRA RAT를 이용해, 윈도우 백도어도 분석하고, BlackBicorn으로 윈도우 패커 분석, Godzilla Loader 멀웨어 분석도 한다. 여기에 스마트폰 시대에 걸맞게 안드로이드 앱 분석까지도 이야기하고 있다. 

 

 

 

내용을 보면 알겠지만, 절대 구색 맞추기 구성이 아니다. 분석 방법을 제대로 익힐 수 있게 자세히 설명되어 있다. 디스어셈블 실패했을 때, 왜 그랬는지, 결과로 나온 코드의 역할 설명, 경우에 따른 각기 다른 분석법 등 곳곳에 각종 내공을 전문가의 조언이 끊임없이 나온다. 그리고 어셈블리 코드보다는 바로 이해하기 쉬운 C 코드 위주로 설명하고 있어 좀 더 가볍게 이해할 수 있다. 게다가 번역자가 자세한 변환 과정을 부록 C에 추가했으므로 초반부에 봐두면 본문을 이해하는데 더욱 도움 될 것이다.

 

'Column'란에서는 다양한 볼거리가 있는데, 기드라에 취약점 얘기도 나온다. 멀웨어를 분석하며 빈틈을 찾아내는 기드라 자신도 정작 빈틈이 있었다는 점은 아이러니하면서도 재미있게 느껴진다. 완벽한 프로그램은 상상 속에만 있는 건지도 모르겠다.

 

 

 

이렇게 각종 내용을 담고 있다 보니, 책 두께도 만만치 않다. 찾아보기까지 해서 무려 920쪽이나 된다. 설명이 자세하게 되어 있긴 하지만, 솔직히 어려운 책이 맞다. 왜냐하면, 알아야 할 지식들이 많이 필요하다. 어셈블리어에 대해 어느 정도 알고 있어야 하고, C를 기본으로 해서, JAVA, XML, 파이썬 등의 프로그래밍 언어(자바와 파이썬이 혼용된 자이썬이라는 것도 나온다), 리눅스, 윈도우 같은 OS, 컴퓨터 내부 동작에 대한 지식도 좀 있어야 제대로 볼 수 있는 책이기 때문이다. 소프트웨어를 역으로 깊이 파고들어 분석하다 보니, 어쩔 수 없는 것이다. 

 

그러나 다소 어려운 만큼 읽고 나면, 프로그램에 대한 식견이 확실히 달라지게 만드는 책이다. 프로그래밍 문법 속에서 허우적대는 것이 아니라, 내 프로그래밍이 컴퓨터에서 어떻게 돌아가고 있고, 프로그래밍 할 때 무엇을 주의해야 할지 좀 더 명확한 식견을 가질 수 있게 돕는다. 특히 다양한 실습 과정을 통해 리버스 엔지니어링에 대한 기초 지식과 경험을 제대로 쌓을 수 있다는 점이 큰 장점인 책이다.

 

소싯적에 나도 호기심에 디컴파일해본다고, 소서니 코드뷰 뭐 그런 것들 좀 만져보다가 너무 어려워 포기한 기억이 난다. 그때 나는, 포기 원인을 복잡한 어셈블리어 때문이라 여겼는데, '리버스 엔지니어링 기드라 실전 가이드'를 보고 나니, 내가 어셈블리어를 능숙하게 했다고 해도, 마찬가지였을 거라 생각을 하게 되었다. 리버스 엔지니어링은 프로그램을 눈에 보이는 코드로 바꿨다고 끝나는 것이 아니었다. 리버싱된 코드를 제대로 분석할 수 있는 능력이 없으면, 아무 소용이 없었던 것이다. 그만큼 많은 경험 지식이 필요하다는 것이다. 당시 내 주변에 그런 경험을 가진 사람이 없었고, 그런 내용을 담은 좋은 책을 만날 수도 없었기에 설령 끈기 있게 공부했다고 해도, 쉽지 않았을 것이다. 

 

결론적으로 '리버스 엔지니어링 기드라 실전 가이드'가 리버스 엔지니어링에 아주 유용한 경험과 정보를 담고 있다는 얘기며, 리버스 엔지니어링 입문자, 안전하고 완벽한 코딩을 원하는 개발자, 보안관련 종사자 등 IT 쪽 사람들에게 도움이 될 책이라 생각한다.

리버스 엔지니어링이란 것을 하나도 몰랐다가 그때 이후에 조금 보면서 내가 모르는 이런 영역도 있구나 싶었다.

한빛미디어에서 좋은 기회에 기드라를 사용한 리버스 엔지니어링 책이 나와서 신청했다.

 

 

KakaoTalk_20220223_224422428_01.jpg

 

 

책이 일단 진짜 두껍다;;; 저자가 얼마나 하고 싶었던 말이 많은지 볼 수 있다. 이 책은 되게 실전중심이라서 예제가 엄청 많다. 챕터 한개에 예제코드가 100개 넘게 있다.. 압도적인 코드 비중이 엄청나다.

이게 그럴 수 밖에 없는게, 리버스 엔지니어링이란게 결국 디스어셈블리 해서 읽을 수 있는 코드로 만들고, 그 코드가 의미하는 바를 추적해서 분석하는거니까 코드가 많이 나올 수 밖에 없다.

이 책의 전체적인 구성은 우선 리버스 엔지니어링에 필요한 기초 지식들을 알려준다. OS나 컴퓨터 구조 수업에서 다룰만한 기초적인 내용부터 리버스 엔지니어링에 필요한 지식들을 알려준다. 초반부에는 기드라 툴 사용방법에 대해서 자세히 다루고, 다음부터 바로 구체적인 예시로 실전 분석을 들어간다.

양이 엄청 많아서 한개도 제대로 해보기 쉽지 않을 것 같다.

리버스 엔지니어링을 제대로 한번 맛보고 싶은 사람이 있다면 이책이 당연 최고일 것 같다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

6.jpg

 

리버스 엔지니어링은 하드웨어나 소프트웨어를 분석하여 그 구성이나 기능을 밝혀내는 기술이다. 특히 이 책에서 설명하는 소프트웨어 리버스 엔지니어링은 소스 코드가 없는 환경에서 타깃 프로그램을 분석하는 사용하는 기술을 지칭한다. 따라서 이 책은 컴퓨터를 처음 접하거나 소프트웨어에 대한 개념이 부족한 사람의 경우 이해하기가 상당히 어려운 부분이 있을 수 있다. 물론 설명이 자세히 잘 되어 있고 따라하기 쉽도록 되어 있기 때문에 동일한 분석 결과를 볼 수는 있겠지만 개념을 이해하지 못한다면 분석 결과도 이해하기 어려울 것 같다.

 

이 책은 미국 국가안보국(NSA)이 소프트웨어 리버스 엔지니어링 도구로 공개한 기드라에 설명한다. 기드라는 디스어셈블러 뿐만 아니라 고기능 디컴파일러를 무료로 사용할 수 있기 때문에 리버스 엔지니어링에 접근하고자 하는 사람들이 기존보다 훨씬  수월하게 사용할 수 있다. 또한 기드라는 많은 아키텍처나 실행화일 형식을 제공하고 있기 때문에 악성코드 분석이나 펌웨어 분석, 취약점 진단 등 다양한 분야에 활용될 수 있다.

 

생소한 용어와 복잡한 개념이 계속 언급되지만 그래도 처음 접하는 사람을 위해서 기드라 설치 및 환경 구축하는 방법으로 책이 시작된다. 그리고 가장 기본이 되는 리버스 엔지니어링에 대한 개념과 프로그램의 실행 구조, 실행 파일 형식에 대해서도 자세히 설명하고 있다. 물론 기본적인 지식이 있어야 개념을 제대로 이해할 수 있겠지만 책의 내용을 읽어보는 것으로도 개념을 어느정도는 이해할 수 있지 않을까 생각한다.

 

2장에서는 기드라에 대한 사용방법에 대해 언급하며, 3장에서 실제 리버스 엔지니어링에 대한 분석 과정을 자세히 설명한다. 4장 이후에는 기드라 확장 모듈 및 ELF 크랙미 분석, 윈도우 백도어 분석, 윈도우 패커 분석, 윈도우 멀웨어 분석, 안드로이드 앱 분석 등 다양한 파일을 분석하는 방법 및 분석 결과에 대해 설명하고 있다. 모든 분석 방법 및 분석 결과에 대해 사용 방법을 기반으로 분석 방법을 자세히 제시하고 있으며, 다양한 예제를 통해 내부 구조를 파악하는 방법을 잘 보여주고 있다.

 

약 900 페이지에 달하는 방대한 분량이지만 기드라 사용 방법과 파일 분석 방법에 대해 자세하게 설명하고 있기 때문에 천천히 따라 하다 보면 원하는 결과를 볼 수 있을 것이라고 생각한다. 비록 초보자를 위한 책은 아니지만 리버스 엔지니어링과 멀웨어 분석에 관심이 있다면 충분히 책에서 언급하는 내용을 따라서 개념을 습득하고 기초 지식을 쌓아가는데는 문제가 없을 것으로 본다.

 

리버스 엔지니어링에 대한 다양한 책이 나와 있다. 하지만 대부분 개념적인 설명에 머물거나 특정 타겟에 맞춘 형태로 되어 있는 경우가 대부분이다. 하지만 이 책은 기본 개념부터 출발해서 다양한 샘플을 실제로 분석하는 과정을 제시함으로서 관심있는 사람이라면 충분히 따라서 실습하고 원하는 결과를 얻을 수 있도록 구성되어 있는 것 같다. 또한 번역도 매끄럽게 되어 있어서 문장을 이해하는데 어려움도 없기 때문에 내용을 이애하는데 있어서도 별 문제가 없다고 생각한다.

 

리버스 엔지니어링과 멀웨어 분석에 관심이 있다면 한번쯤 이 책으로 출발해 보는 것도 좋을 것 같다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

5100.jpg

 

리버스 엔지니어링은 하드웨어나 소프트웨어를 분석하려 그 구성이나 기능을 밝혀내는 기술을 말한다. 소프트웨어 크래킹 등의 불법행위에 이용하기도 해서 리버스 엔지니어링에 대한 인식이 좋지 못한 점도 있다. 하지만 컴퓨터에 해를 입히는 악성코드를 분석하거나 버그 카운티(취약점 보상금 제도) 대상이 되는 소프트웨어의 취약점을 발견하는 등 정당한 용도로 폭넓게 이용된다.

 

​'리버스 엔지니어링 기드라 실전 가이드'는 지난 2019년 3월 미국 국가안보국(NSA)에서 공개한 소프트웨어 리버스 엔지니어링 도구 기드라(Ghidra)를 다루고 있다. 이 도구의 등장으로 인해 디스어셈블러뿐만 아니아 고기능 디컴파일러를 무료로 사용할 수 있게 되었고 리버스 엔지니어링의 벽은 낮아졌다고 한다.

책에서 설명된 기드라에 대한 첫 느낌은 일반 IDE의 모습을 갖고 있지만 상당히 직관적인 도구라는 점이다. 기본적인 기능 외에 다양한 작업을 Ghidra script와 Ghidra extension을 통해 자동화, 효율화를 할 수 있게 한 점이 눈에 띄인다. 하지만 Scrpit는 자이썬, Extension은 자바만 가능하다는 점이 조금 아쉽다.

 

5101.jpg

 

​책의 구성은 기초편과 실전편으로 나뉘는데

기초 편에서는 리버스 엔지니어링의 기초, 기본적인 기드라 조작 방법, 스크립트의 기능을 다루고 있다. 실전 편에서는 리눅스의 ELF파일, 윈도우의 PE파일, 안드로이드의 APK/ELF(ARM)을 대상으로 기드라를 이용한 리버스 엔지니어링 분석 방법을 학습하도록 하고 있다.

 

5102.jpg

 

​이 책의 장점

 - 리버스 엔지니어링의 기초 지식부터 설명해서 기초 지식을 쌓게 한다.

 - 쉽게 접하기 힘든 리버스 엔지니어링 도구인 기드라의 설명을 잘 다루고 있다.

상당히 꼼꼼하게 분석 내용의 이해에 필요한 기초 지식이나 레퍼런스를 다루고 있다.

 - 다양한 플랫폼 파일을 실습 예제도 다루었다

 

이 책의 단점

 - 꼼꼼하긴 하지만 불필요한 예제 화면도 보인다.

 - 리버스 엔지니어링은 디버거를 이용한 프로그램을 실행하여 분석하는 동적 분석과 디스어셈블리한 코드를 디버거를 이용하지 않고 눈으로 읽는 정적 분석으로 나뉘는데, 저자는 기드라가 정적분석에는 부족함이 없지만 동적분석에는 아쉬움이 있다고 했는데, 그 부분에 대한 설명이 더 있었으면 한다.

 

5103.jpg

 

원 저자의 얘기처럼 이 책은 멀웨어 정적 분석 기술을 배우는데 큰 도움을 주는 것 같다. 멀웨어 분석을 배우고 보안을 공부하는 분들에게 좋은 책으로 추천해본다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

#리버스엔지니어링기드라실전가이드 #리버스엔지니어링 #기드라 #한빛미디어

보안 일을 하다보면 특정한 프로그램, 특정한 파일에 대해서 취약점 분석을 해야 하는 경우가 많습니다.

보통은 소스코드가 같이 주어지지 않기 때문에 실행파일만 덜렁 주어졌을 때 뭐부터 할 수 있는지, 어떤 기술과 툴을 접목하여 취약점을 찾아내야 하는지 막막하기만 한데요.

 

저도 업무를 하면서 많이 느꼈던 막막함이었습니다. 소스코드가 있으면 굉장히 편해요. 시큐어코딩이 안 된 소스코드 보안약점 혹은 취약점을 발견하는 것은 꽤 쉬운 편이고 소스코드 취약점을 이용하여 공격(Exploit)으로 이어질 수 있는 시나리오 혹은 PoC코드를 작성하여 실제 실행파일과 실행환경(혹은 가상실행환경 구축)을 작동시켜 공격가능성을 입증하는 것도 가능하거든요.

 

취약점 분석 업무는 시스템, 프로그램에 대한 정보가 많으면 많을 수록 도움이 됩니다. 그런데 실무는 그나마 실행파일이라도 제공받으면 다행일정도로 자료획득이 어려운 경우가 많아요. 협조도 힘들고... 그래서 고급 기술을 익히는 것이 필요하고, 특히 필요한 기술이 "리버싱"입니다.

 

 

 

 

리버스 엔지니어링 , 리버싱이라고 불리는 기술은 소스코드가 없는 환경에서 타겟 프로그램을 분석하는 기술입니다. 리버싱을 다룬 책들은 많지만, "기드라"는 처음 들어봐서 흥미가 생겼습니다. 통상 실무에서는 리버스 엔지니어링을 위해서는 상용 프로그램(돈 주고 사야하는)인 IDA Pro를 사용하였기 때문이죠. 이 책에 따르면 기드라는 미국 국가안보국(NSA)이 개발한 리버싱 도구입니다. 정보 공개와 공유에 앞장서는 미국답게 기드라는 오픈소스 소프트웨어로 무료 사용이 가능합니다.

리버싱을 다루는 많은 책들이 그러하듯, 기술의 어려움을 방증하듯 이 책도 900페이지가 넘는 두께를 자랑하고 있는데요. 내용은 기본적인 리버싱 기초부터 기드라 툴 사용법과 기드라를 활용한 리버싱 분석 샘플 설명, 기드라 스크립트 작성 등 기드라를 활용하여 리버싱을 차근차근 실습할 수 있도록 상세하게 설명되어 있습니다.

 

이 책에서 실습은 "리눅스" 환경에서 개발된 실행파일(ELF) 분석과 "윈도우" 환경에서 개발된 파일(PE) 분석, "안드로이드 앱" 분석으로 세 가지로 나뉘어집니다.

 

이 책에서 약간 아쉬운 점은 예제로 다룬 윈도우 분석 대상 파일에 32비트 파일만 있고, x64(64비트) 파일이 없어서 아쉬웠습니다. 그러나 단순한 일반 파일이 아니라 공격파일(멀웨어)에서 볼 수 있는 패턴들을 리버싱을 통하여 분석하는 방법을 상세하게 알려주고 패턴화해준 것이 보안 실무를 하는 입장에서 실무적으로 도움이 많이 되었습니다.

 

리버싱 작업을 효율적으로 하기 위해서 기드라에서 제공하는 스크립트와 확장기능을 사용하는 것이 좋은데요. 기드라 스크립트를 작성하기 위해서는 파이썬을 사전 지식으로 알고 파이썬 개발을 아는 상태에서 기드라 스크립트 작성 부분을 읽는 것이 좋은 것 같습니다.

 

리버싱 기술 자체가 어셈블리어와 파일 구조에 대한 이해가 선행되어야 하다보니 좀 어렵게 느껴질 수 있습니다. 그래서 이 책은 리버싱 자체에 대한 입문서라고 보기에는 조금 난이도가 있을 수 있습니다. 그러나 기드라라는 리버싱 통합 툴을 통하여 실습을 통하여 리버싱을 체화할 수 있기 때문에 리버싱에 대한 기초 지식을 쉬운 입문서를 통하여 약간의 이해가 있는 상태에서 읽고 실습 위주로 진행하는 것을 추천드립니다.

 

"이 책은 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성한 서평입니다 "

 

KakaoTalk_20220222_233058552.jpg KakaoTalk_20220222_233058552_01.jpg

왜 리버스 엔지니어링 기드라 실전 가이드인가?

 

우선 리버스 엔지니어링부터 알아보자

리버스 엔지니어링이란?

 

소프트웨어 공학의 한 분야로, 

이미 만들어진 시스템을 역으로 추적하여 

처음의 문서나 설계기법 등의 자료를 얻어 내는 일을 말한다.

 

즉, 컴파일된 코드 프로그램을 원시 코드 수준의 상태로

돌아가(reverse) 내용을 확인하겠다는 것이다.

 

그렇다면 기드라는 무엇인가?

기드라는 미국 국가 안보국에서 개발한 역어셈블러 프레임워크이다. 

기드라는 자바로 개발되어 운영체제에 독립적인 점과 무료로 사용할 수 있는 장점이 있다.

 

리버스엔지니어링은

해킹이나 보안, 리버스 엔지니어링과 관련된 전공자들이 주로 다루었다.

어셈블리 등을 다루며 난이도가 쉽지 않기 때문이다.

 

 

 

그렇다면 기드라는 한층 더 가까워졌다고 할 수 있다.

왜냐하면 위에서도 언급했지만

자바로된 오픈소스이기 때문이다.

 

컴퓨터공학의 탄탄한 기초 지식과

리버스 엔지니어링에 어느 수준의 관심이 있어야

리버스 엔지니어링 기드라의 불꽃이 시들지 않을 것이다(?)

 

본론으로 들어가서

이 책은 기드라를 이용한 실전 리버스 엔지니어링 방법에 대해 설명하며

기초와 실전 2개 파트로 구성되어 있다.

기초 편에서는 리버스 엔지니어링의 기초, 기본적인 기드라 조작 방법 등을 설명한다.

실전 편에서는 리눅스의 ELF 파일(x64), 윈도우의 PE파일, 안드로이드의 APK 파일을 대상으로

리버스 엔지니어링을 연습하며 실전 분석 방법을 학습한다.

실전 편은 장마다 독립된 내용으로 구성되어 순서대로 읽지 않고 

필요한 부분을 골라서 읽어도 상관없다.

 

이 책은 두껍고 페이지가 매우 많지만

책의 가독성이 좋고 쉽게 설명하고자 하는 부분이 매우 만족스럽다.

(즉, 번역이 매끄럽다는 의미)

 

결론적으로 리버스 엔지니어링과 기드라에 관심이 있어

소프트웨어 정적 분석에 학습 욕구가 있는 독자라면

이 책 리버스 엔지니어링 기드라 실전 가이드을 추천한다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

기드라 표지.jpg

 

 

소스코드가 없는 환경에서 타깃 분석할 때 사용하는 기술을 리버스 엔지니어링이라고 합니다. 이 책은 그 방법에 대해서 설명하고 있습니다. C언어와 어셈블리 언어를 다루게 됩니다. 개발을 오래한 중고급 개발자 또는 이러한 분야에 관심이 있는 분들에게는 도움이 되는 책입니다. 그리고, 이 책의 목차를 보면 알겠지만 개발 연차가 낮은 주니어가 보기에는 힘들 수도 있습니다. 책이 900페이지에 달하는 것만큼 입문편과 실전편까지 한 번에 볼 수 있어서 기드라에 대한 기본기를 잡을 수 있습니다. 기드라가 중심이긴 하지만 C와 어셈블리 언어를 다루는 만큼 하드한 내용들입니다. 그만큼 이 책의 희소 가치는 크고, 이러한 내용이 필요한 분들에게는 큰 도움이 되는 내용입니다. 

 

이 책의 코드와 소스는 C와 어셈블러 입니다. 이에 대한 기본기가 없을 경우, 굉장히 어려울 수 있습니다. 최소한 C로 무언가 개발을 해보았고, 어셈블러는 수강을 한 번 했어야 되는게 이 책을 볼 수 있는 정말 최저한의 수준이 아닐까 싶습니다. 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

오랜만에무슨 생각인지 소프트웨어 정적 분석 책을 리뷰 도서로 신청했다.

 

책이 거의 900pg에 달하는 엄청난 분량을 자랑하는 책일 것이라곤생각도 못 한 채로 말이다. 하지만 이런 놀라움을 뒤로하고 이 책은 상당히 매력적인 책임엔 이견이 없었다. 특히 기드라라는 툴을 중심으로 리버스 엔지니어링과 나아가 유사 멀웨어를 통한 분석 과정에 대해서 자세히 다룬부분 (이 책의 95% 이상이 기드라를 다루고 있는듯싶다.)은 상당히 매력적이었기 때문이다.

 

나 같이 서버단 개발자로 커리어 방향을 튼 사람에게는 정적 분석 툴은 어찌 보면 한없이 거리가 있는 기술이라할 수 있다. 서버를 다루다 보면 정적 분석 같은 것은 보통 외부 업체가 제공하는 간단한 툴을 사용하는것에 그치기 때문이다.

 

그렇다고 해서 이 책이 서버 개발자와 1도 관계가 없다고는 단언할수 없다. 서버를 하다 보면 정적 분석을 요구하는 경우가 종종 있다.병목 구간을 찾거나 혹은 코드의 홀 포인트나 입력의 코너 케이스 등을 찾아낼 때는 어김없이 나만의 정적 분석 툴을 하나쯤 알아두면얼마나 좋았을까? 하고 후회하는 경우가 많기 때문이다.

 

이 책이 이런 욕구를 자연스레 긁어주기에 충분한 책이란 생각이 들었고 (내용만봐도 차고 넘치지 싶다.) 이와 별개로 이 책에 쓰여있는 아키텍처 마다의 특징과 정적 분석 과정에서의팁(기드라에 특성화된)들만 잘 알아둬도 어디 가서 리버싱조금은 안다!라고 말할 정도의 지식을 쌓기에 충분하다는 생각이 들었다.

 

다만 처음으로 리버싱을 접하거나 이런 툴 종류의 책을 접하는 사람에게는 선뜻 권하기 어려운 책임엔 틀림없다. 컴퓨터 아키텍처, 리버싱 되었을 때 메모리 어드레스, CPU 인스트럭션과 어셈블러 등등 기초 지식이 반드시 있어야만 이해할 수 있는 파트가 상당히 많기 때문이다.

 

따라서 본이니 어느 정도 CS에 기초 소양을 갖추었고 그중에서도 특히리버싱에 관심이 많다면 '기드라'와 함께 리버싱에 대해서실습하며 자기 개발을 해보는 것도 나쁘진 않을 것이란 생각이 들었다.

 

【책의 구성】 '리버스 엔지니어링 기드라 실전 가이드'의 책의 구성은 어떠한가.

 

 이 책은 간단히 요약하자면 레퍼런스 책이다. 소위 말해 "베개"책이다.

 

이 책은 기드라를 설치하는 것부터 기드라를 이용하여 유사 멀웨어를 뜯어보며 리버싱 하는 엔지니어링을 하나하나아주 깨알 같은 곳까지도 설명한 책이다.

 

옆에 두고 책 전체 내용을 실습한다면, 웬만한 기드라의 기초와 중급자이상의 리버싱 스킬을 겸비할 수 있을 것이란 생각이 절로 들었다.

나 역시도 이 책을 전달받고 이미 알고 있는 부분을 넘기지 않았다면 한 달 내로 이 책의 반절은 학습하였을까라는의구심이 들 정도로 분량이 대단했고 초심자가 모든 것을 숙지하기엔 조금 벅찬? 그런 느낌의 책이었기때문이다.

 

구성은 유사 멀웨어나 예제 코드 등을 먼저 언급한 후 이를 세세히 나누어 코드나 부분적인 내용 등으로 세분화한후, 내용 하나하나 아주 디테일하게 독자의 가려움을 긁어주는 훌륭한 구성을 갖춘 책이다.(소위 베개라는 책들이 거의 이런 텐션을 유지하는 것 같다..) 다만몇 차례 강조한 것과 같이 웬만한 컴퓨터 구조에 대한 지식과 기초적인 언어 지식이 없다면 이 책을 통해 능수 능란하게 학습하긴 어려울 것이라 보인다. 따라서 본인이 C언어 포인트도 모른 다는 분이 이 책을 펼쳤다면, 살포시 책을 원래 있던 곳에 가져다 두시길 권한다.

 

그만큼 이 책은 전문성이 있는 책이고, 리버스 엔지니어링을 위한 전문툴을 다루는 책인 만큼 기초적인 소양을 충분히 갖춘 후에 접하길 권장한다.

 


 

1챕터 : 리버스 엔지니어링입문

 

 리버스 엔지니어링에 필요한 것은 무엇일까?

리버스 엔지니어링에 가장 필요한 것은 본인이 리버스 엔지니어링을 시도하려는 머신의 CPU 스펙 + 정적 분석을 하고자 하는 타깃 바이너리 구조에 대한충분한 이해와 이를 분석할 줄 아는 능력이라 할 수 있다.

1장에서는 학부에서 컴퓨터 구조 수업을 한 번쯤 들었다면 충분히 이해하고도남을 지식들을 담고 있다. 따라서 미리 겁먹지 말고 차근차근 공부해 보길 권장한다.

 


 

2챕터 : 기드라 입문

 

 기드라가 어떤 툴인지, 기드라가어떤 기능들을 제공하는지 UI/UX를 독자에게 제공해가며 아주 친절히 설명하고 있다. 심지어 설치까지도 친절히 가이드하고 있다 @_@ 이 정도 정성을들인 책이라면 개인 교습을 받는 것 그 이상의 친절함이라 생각된다.

이렇게 좋은 환경이 주어졌는데 공부를 게을리한다는 것은 어찌 보면 저자들에 대한 철저한 무관심일 수 있다. 따라서 책에 나와있는 가이드에 맞춰 잘 기드라를 설치한 후에 오버뷰, 흐름화살표, 코멘트 등을 비롯한 그 외 수많은 기능 윈도우들을 직접 켜가며 하나하나 그 기능 들을 탐독해보도록 하자.

 


 

5장 ELF 크랙미 분석

 

 이 장에서는 크랙미라는 개념에 대해서 배운다. 그리고 크랙미를 직접 받아서 문제를 기드라를 활용하여 풀이해 보는 실습을 해본다. 이제 시작이다. 여기서 배운 기초적인 내용을 기반으로 하여 뒷장에있는 심화된 내용을 분석하게 될 것이다.

특히, 예전엔 스택 버퍼 플로우를 활용한 공격 기법이 상당히 유행했었다. (요즘도 그런지는 잘 모르겠지만 @_@..) 이 장에서 바로 그버퍼 오버 플로우 공격에 대해서 체험해 볼 수 있다. 거의 대부분의 내용이 실습과 그에 대한 자세한설명이기에 차근차근 학습한다면 큰 무리가 없을 것으로 보인다.

여러분이 생각하기에 strcpy 가 왜 strncpy로 변했을까? 아마 이 장을 꼼꼼히 살펴본 사람이라면그 이유를 금방 대답할 수 있을 것이다.

 


 

【 "기드라 실전 가이드'를 읽고…….】

 

 이 책은 기드라라는 툴을 활용하여 다양한 환경에 대한 정적분석을 하는 방법에 대해 사전마냥 자세히 풀이한 실습서이다. 다만, 이런유의 책은 꾸준한 인내심과 끊기가 없이는 선뜻 끝까지 완주하기 힘든 책이다. (두께가 어마어마하다 @_@..) 그렇기에 본인이 정말 정적 분석에 크게 관심이 있고 추후 리버스 엔지니어로써 커리어를 쌓길 희망한다면이 책은 하나의 지평을 열어주기에 부족함이 없다고 생각된다.

 

#본도서는 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.



 

최근에 많이 사용하고 있는 기드라에 대한 사용법과 리버싱에 대한 원리, 멀웨어 분석 방법 등을 공부할 수 있는 책.

[BOOK] 리버스 엔지니어링 기드라 실전 가이드 - 나카지마 쇼타, 고타케 다이치, 하라 히로아키, 가와바타 고헤이 지음 / 이창선, 임재용 옮김
 
부제: "유사 멀웨어로 익히는 소프트웨어 정적 분석"
 
 
미국 NSA(National Security Agency)가 개발한 SRE(Software Reverse Engineering) 도구인 기드라(Ghidra)에 대한 책이다.
기드라는 NSA가 오픈소스로 [공개](https://github.com/NationalSecurityAgency/ghidra)한 SRE 도구로 JAVA에서 실행되는 크로스플랫폼 도구이다. 디컴파일러(decompiler)와 자동화를 위한 스크립트(Ghidra Script)를 제공한다. 현업에서는 주로 [IDA Pro](https://hex-rays.com/ida-pro)를 사용하는데 리버스 엔지니어링을 공부하기 위한 도구로는 많이 비싸다. 회사에 사달라고 하자. 또한, 기드라는 오픈소스라서 리버스 엔지니어링 도구에 대해 관심이 있다면 분석해 보는 것도 공부가 될 것이다.
 
 
책은 크게 기초편과 실전편으로 나뉘어 기초편에서는 리버스 엔지니어링과 기드라에 대해서 설명하고, 실전편에서는 학습을 위한 유사 멀웨어(무력화시킨 악성코드)와 실제 멀웨어(악성코드)를 이용한 분석 과정을 보여준다. 실제로 동작하는 멀웨어를 이용해서 실습을 진행해야 하기 때문에 예제 다운로드를 소개하면서 '가상 환경 구축'을 강조하고 있다.
'가상 환경 구축'에 대한 소개를 간단하게 설명하고 넘어간다. 책에서 다루는 범위가 아니기도 하지만  '이 책은 가상 환경 정도는 구축할 수 있고, 사용할 수 있는 독자를 대상으로 한다.'는 것을 보여준다. VMware나 VirtualBox의 기본 사용법을 찾아보고, 실습을 위한 환경을 구축한 뒤에 책의 내용을 따라해 보는 것을 추천한다. 특히 스냅샷(snapshot) 기능을 잘 활용해야 실습이 편하다.
 
 
기초편 '리버스 엔지니어링 입문'의 내용을 보더라도 어셈블리 언어, C 언어, 운영체제에 대해 간단히 짚고 넘어가기 때문에 SRE를 처음 접하는 독자는 많은 어려움을 겪을 것으로 예상된다. 리버스 엔지니어링에 대한 기초적인 내용은 다른 책이나 자료를 통해 공부해야한다. 기초와 관련된 주요 키워드는 대부분 소개하고 있으니 책에 소개된 내용을들 웹서핑하면서 기초 지식을 습득하는 것도 좋을 것 같다.  900페이지 가까운 책이지만 기초적인 내용과 실제 분석에 대한 내용을 모두 담기에는 어려웠을 것이다.
 
 
이 책은 기드라를 이용해서 실제 분석을 어떻게 하는지 소개하는 실전편이 핵심이다. 기초편에서 소개된 내용을 잘 이해하고 있다면 실전편에서는 구축해 놓은 가상 환경에서 연습용 악성 코드를 실행해가며 기드라의 사용법, 리버스 엔지니어링 방법, 악성 코드의 동작 방식을 익힐 수 있다. 리버스 엔지니어링은 단시간에 습득할 수 있는 내용이 아니다. 시간을 들여 차곡차곡 쌓아야 스스로 소프트웨어를 분석해 볼 수 있다. 리버스 엔지니어링에 필요한 기초 지식은 있으나 어떻게 하는지에 대한 부분이 궁금하다면 책을 통해 방법을 익혀보자. 스킬이 쌓이면 취약점을 찾아 취약점 보상금(Bug Bounty)에 도전하거나 약성 코드를 분석하여 백신 개발에 기여 할 수도 있다.
 
 
다소 어려운 책이지만 리버스 엔지니어링에 관심이 많고, IDA의 비용 때문에 실습을 못했다면 기드라와 이 책으로 도전해 보는 것도 좋을듯하다. 

위키리크스의 볼트7(Valut7) 공개를 통해 강제(?) 그 존재가 알려진 기드라(Ghidra)는 NSA의 오픈소스 선언 및 RSA 콘퍼런스에서 공식 발표를 거쳐 많은 정부 관련 부처 및 보안업체들이 사용하고 있는 소프트웨어 리버스 엔지니러잉 도구로 관련업계에서 주목받고 있습니다. 자바로 개발되어 운영체제에 독립적으로 실행할 수 있으며 64비트 환경이라는 낮은 장벽만 감안한다면 누구나 큰 제약 없이 무료로 사용할 수 있는 장점을 갖추었습니다. 강력한 기능을 제공해 줄 뿐만 아니라 성능이 우수한 디컴파일러가 내장되어 있어 어셈블리에 대한 캐즘(Chasm)이 부담스러운 입문자들에게 추천할 만한 좋은 도구입니다.
 
2019년 처음 공개되었을 때는 리버싱의 디팩토 표준인 IDA Pro와 비교되어, 예를 들어 디버거나 xref 등을 지원해 주지 않았습니다. 기드라의 등장은 태생적으로 많은 주목을 받았었기 때문에 IDA Pro와 비교하는 글들이 등장 초기에 많이 작성되었고, 지금도 그 글들이 상위 검색 결과로 노출되고 있습니다. 하지만, 공개 이후 오픈소스인 만큼 많은 기능 추가가 이루어 졌고 전 세계 리버서들이 많은 익스텐션과 스크립트를 작성, 공개하여 나름의 생태계를 유지하고 있습니다. 지금은 기능이 향상되어 gdb/WinDBG과 연동되거나 xref를 제공해 줍니다. [리버스 엔지니어링 기드라 실전 가이드]는 웹에서 검색되는 철지난 글과 달리 최신 내용이 반영되여 기드라를 시작하는 분들에게 훌륭한 시작점이 됩니다.
 
IDA Pro 또한 기드라에 있었던 undo 기능이 없었지만 7.3에서 추가되었습니다. 상호 발전하는 각자의 조금씩 장점이 다른 두 도구를 적절한 상황에 익숙하게 사용할 수 있다면 "건초 더미 속에서 바늘 하나를 찾는 작업 같은 지루한 반복(도서 속의 표현)"이 단축될 것은 자명할 것입니다.
 
기드라의 장점은 디컴파일 뿐만 아니라 분석 자동화를 위한 강력한 자바/파이썬 문법의 스크립트 기능으로 다양하고 심도있는 분석이 가능하며 ELF, PE, APK 포맷을 동일한 환경의 IDE를 통하여 작업이 가능하다는 것입니다. 다만 리버스 엔지니어링이라는 업무와 기드라 도구의 특성상 많은 관련 경험이 기반되어야 제대로 활용할 수 있으며, 많은 실습을 통해서만이 조작 및 리버싱을 효과적으로 배워나갈 수 있습니다. [리버스 엔지니어링 기드라 실전 가이드]는 책의 대부분이 실습과 사례(예제)분석으로 되어 있으며 진행에 필요한 모든 리소스를 제공해 줍니다. 많은 실습이 요구되는 리버스 엔지니어링 분야에 적합한 내용이며 각 챕터 서두에 분명한 목적으로 명시하고, 적절한 스크린샷과 자세한 내용, 따라 하기 식의 튜토리얼 구성이 기드라 활용의 밑거름이 되어 줍니다. 다만, 어셈블리의 난해함이나 컴파일 및 실행파일 구조에 대한 부담 등은 어느 디스어셈블 도구들과 크게 다르지 않는다는 부분은 마찬가지입니다.
 
- 목차 -
1. 리버스 엔지니어링 입문
2. 기드라 입문
3. 리버스 엔지니어링 연습
4. 기드라 스크립트/익스텐션으로 기능 확장
5. 기드라 vs. 크랙미 - ELF 분석
6. 기드라 vs. MOTHRA-윈도우 백도어 분석
7. 기드라 vs. BlackBicorn - 윈도우 패커 분석
8. 기드라 vs. 갓질라 로더 - 윈도우 멀웨어 분석
9. 기드라 vs. SafeSpy - 안드로이드 앱 분석
부록A. 기드라 응용
부록B. 기드라 스크립트 소개
부록C. 실전 문제 풀이
 
1장을 통해 리버스 엔지니어링 입문자를 위해 필수적인 내용들을 소개를 합니다. 소스코드를 컴파일 했을 때 전후를 비교한 if/while 등의 명령어, 함수에 대해 이해합니다. 2장을 통해 기드라의 각 메뉴와 기능에 대한 레퍼런스를 제공해 주며, 3장을 통해 2장에서 알아본 기능들을 실습합니다. 4장에서는 파이썬/자바 문법의 스크립트와 자바 문법의 UI 익스텐션을 만들고 사용하는 방법을 설명합니다. 1장에서 4장까지 내용을 통해 기드라를 활용할 수 있는 전반적인 사용법을 알려주며, 5장부터 9장까지 예제를 통해 리버스 엔지니어링 연습을 하고 부록을 통해 바이너리 패치, 프로그램 Diff, Version Traking, Ghidra Server 등 다양한 유용한 기능을 알아봅니다.
 
특히 부록A에서 찾아볼 수 있는 IDA Pro 사용자를 위한 Function Graph 동작 설정 방법이나 키 바인딩 변경은 기드라를 더욱 쉽고 빠르게 적응할 수 있도록 도와 줍니다.
 
(키 바인딩 관련 참고)
Partial IDA Pro KeyBindings for Ghidra - https://github.com/JeremyBlackthorne/Ghidra-Keybindings

 

# 요약

- 바이너리 분석, 리버싱, 악성코드 분석에 입문하려는 사람에게 추천

- 기드라는 decompiler 중에서도 유명한 편이고 무엇보다 무료인 장점이 있기에 접근성이 좋음

- ELF 바이너리, 윈도우 백도어, 윈도우 패커, 윈도우 멀웨어, 안드로이드 앱까지 다양한 프로그램을 따라서 분석해보며 실력을 키울 수 있음

# 장점

- 리버싱 분야가 책으로 공부하기엔 적합하지 않다고들 하지만, 실습 위주의 책 구성으로 초보자도 쉽게 접근할 수 있음

- 기드라는 무료 소프트웨어이기 때문에 마음 편하게 설치 후 실습이 가능하고, 혼자서는 알기 어려운 다양한 기능들을 배울 수 있음 (Ghidra Script 등)

- 실제 바이너리를 분석해볼 수 있어서 책을 지루하지 않게 따라갈 수 있음

# 단점

- 방대한 분량 (920page)

- Ghidra 특성상 dynamic analysis 가 힘듦. 하지만 책 표지에서도 강조하듯이 정적 분석을 집중적으로 공부할 목적으로는 훌륭한 책임.

---

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

미국 국가안보국(NSA)이 개발한 소프트웨어 리버스 엔지니어링 도구인 기드라(Ghidra)를 활용하여 멀웨어와 유사한 프로그램을 실전과 동일하게 정적 분석하는 책이다.

기드라는 소프트웨어 리버스 엔지니어링 도구이다. 그렇기에 먼저 리버스 엔지니어링의 개념이 무엇인지 알 필요가 있다. 이는 쉽게 말해 실행할 수 있는 바이너리 프로그램의 원본 소스를 복원하는 과정이라 보면 된다.

아래 그림이 이를 잘 설명하고 있는데 실행 파일의 헥스 코드를 이용하여 원본 소스코드를 추적하는 과정으로 이해할 수 있다.리버싱

복원한 결과물이 어셈블리어일 경우 디스어셈블이라 칭하고, C언어와 같은 고수준 언어로 복원 시 디컴파일이라 칭하는 차이가 있을 뿐 결국은 인간이 이해할 수 있는 언어로 복원하는 과정이다.

그럼에도 본 도서에서 언급한 바와 같이 함수명이나 변수명과 같은 심벌, 주석, 컴파일러에 의한 자동 최적화 등의 문제로 완벽한 복원은 불가능에 가깝다.

특히 5장부터 등장하는 OS별 실전 문제를 진행하다보면 정말 건초더미에서 바늘 하나 찾는 느낌의 지루함이 반복되기에 끈기와 인내심이 필요하다는 것을 알 수 있다.

기드라에 익숙하지 않았음에도 사람의 노가다를 기드라가 얼마나 크게 줄여주는지 실습을 따라하며 알 수 있었다. 아래 그림과 같이 기드라의 그래프 뷰 기능 하나만 봐도 if문의 디스어셈블 결과를 입체적으로 볼 수 있어 가독성에 큰 도움이 된다.그래프뷰

1장은 리버스 엔지니어링에 필요한 기초 지식이 정리되어 있다. 제어부, ALU, 레지스터, 명령포인터로 구성된 CPU의 기본 구조, 그 과정에서 활용되는 코드, 데이터, 헤더, 힙, 스택 등의 메모리 세부 구조, 호출규약 등의 기본 지식을 익힌다.

이어서 언어의 특성 기본을 배운다. 함수 호출, if, switch, for, while 등의 규약을 살펴보며 간단한 디컴파일의 과정을 거친다. 또한 OS와 칩셋 간 x64 등의 아키텍쳐를 학습한다.

기드라 본래의 기능에 집중하기 위해 이러한 백그라운드 지식은 짧게 서술되어 있지만 기드라 실전에 적용 시 큰 도움이 되므로 확실히 알아두는 것이 좋다. 예를 들면 뒷 부분의 main() 함수를 찾아내는 방법에서 경우의 수를 쉽게 줄일 수 있다.

이런 방법은 풍부한 경험을 통해 쌓이기도 하지만 1장의 기본 지식이나 규약을 잘 익혀두면 처음 겪는 문제나 패턴에서도 원하는 부분을 찾아내기에 좋은 감각을 유지 할 수 있겠다는 생각이 들었다.

2장은 기드라의 세부 구성을 살핀다. 디스어셈블, 디컴파일은 물론 헤더, 라이브러리, 스크립트 분석 등의 기능이 제공된다. 먼저 기드라를 설치하는 방법이 소개된 후 실행 파일을 임포트한다. 분석 실행을 마치면 아래아 같은 화면이 등장하는데 기드라에서 가장 자주 보게 되는 화면이다.코드브라우저

책에서 소개되는 몇가지 권장설정은 그대로 따라하면 된다. 이후 위 그림의 각 기능을 세부적으로 소개하는데 중앙의 Listing 창에는 디스 어셈블한 결과가 표시되며 디컴파일러 창에는 C언어로 변환된 결과가 표시된다.

Program trees 창에는 헤더나 섹션 등 프로그램 구성요소가 구조화되어 출력되며, Symbol Trees 창에는 함수명, 변수명 등의 심벌 정보가 표시된다. Data Type Manager창에는 데이터 타입에 관련된 정보가 출력된다.

각 기능은 읽어도 어떻게 활용하는 것인지 구체적으로 어떻게 동작하는지 파악하기 어렵기 때문에 5장과 같은 실전 예제를 진행한 후 다시 볼 것을 권하고 싶다.

본래 레퍼런스라는 것들은 직접 겪어보며 필요할 때마다 참조하는 것이 기억에도 오래남고 바로바로 이해되는 것이니 이 장에서 개념이 어렵다고 읽기를 포기하지 않길 바란다.

3장에서는 downloader.exe라는 외부에서 타 프로그램을 다운로드하여 실행하는 프로그램을 리버싱한다. 그런데 이 부분 역시 리버싱의 큰 그림은 그려지지만 구체적으로 실습을 따라가기 어려웠다. 가볍게 읽어보고 5장 이후의 실전을 전개하고 다시 돌어와서 보면 쉽게 이해된다.

4장 역시 바로 이해하기는 어렵다. 분석 자동화 기능을 제공하는 Script라는 기능과 UI플러그인을 활용하여 분석 기능을 추가할 수 있는 Extension 기능이 소개된다. Scritps의 기능엔 Python 바인딩 기능도 제공하고 있다는 점이 특이한 부분이다.

5장 이후에는 각 OS별로 실전 러비싱이 진행되는 데 매우 상세하게 분석하고 있어 따라하다보면 감이 잡힌다. 앞의 1 ~ 4장은 가볍게 큰 그림만 그려본다 생각하며 읽고 개념이 어느정도 잡히면 5 ~ 9장을 가급적 먼저 실습해 볼 것을 권한다.

예를 들면 5장은 리눅스에서 구동되는 ELF 바이너리를 분석한다. 예제로 크랙미라는 실행파일이 등장하는데 리버싱에 성공하면 엑세스 코드나 비밀번호를 찾아낼 수 있다.

이 프로그램을 실행하면 패스워드를 입력하라고 나오는데 아무 문자가 입력하면 Wrong이라고 틀렸다는 메시자 출력되는 프로그램이다. 결국 이 프로그램을 리버싱하여 정확한 패스워드를 알아내는 것이 본 리버싱 예제의 목적이라고 할 수 있다.

이 프로그램의 main() 함수를 디컴파일하면 아래 그림과 같은 리버싱 결과를 볼 수 있다. 25행에서 fgets()가 사용됨을 확인 가능하다. 위에서 설명한 사용자가 패스워드를 입력하면 fgets() 함수로 입력값을 가져와 변수에 저장하게 됨을 추측할 수 있다.main디컴파일

34행에는 비교문이 등장한다. 사용자가 입력한 값은 local_38 변수에 저장되고 local_68에 들어있는 값과 비교하는 셈이다. 그런데 자세히 보면 사용자의 입력값이 ^연산을 거친다. 즉, 0x7a값과 한글자씩 XOR 연산을 수행하는 것이다. 결과가 같다면 Correct라는 문자열을 출력하는 구조이다.

결국 핵심은 XOR 역연산에 달려 있음을 알 수 있다. 책에서는 2가지 방법을 활용하여 역연산에 도전한다. 솔버라는 기드라 Script를 활용하는 방법 하나와 CyberChef라는 GUI기반 웹애플리케이션을 활용하여 패스워드를 찾아내는 방법이 소개된다.

그렇게 얻은 패스워드로 Level2에 도전하며 Level4까지 진행하는 실습을 거치게 된다. 이어서 6장 이후에는 윈도우 운영체제의 PX파일, 안드로이드 APK파일 및 패킹 등을 풀어내는 방법들이 소개되는데 한 과정씩 따라하다보면 쉽고 재미있게 저자들의 풍부한 경험을 흡수할 수 있다.

본 도서의 장점을 정리하면 다음과 같다.

  • 매우 실전적이다.
    리버싱에 관심이 많아 서점에서 찾다보면 개념이나 방법론만 늘어놓은 책들이 부지기수이다. 대충 내용은 알겠는데 다 읽어도 프로그램 간단한 것 하나도 리버싱 할 수 없다. 반면 이 책은 따라만 해도 감이 오며 저자들이 그간 경험했던 풍부한 경험을 거저 먹는 느낌이 든다.

  • 기드라의 기능이 매우 풍부하다.
    구성된 GUI 자체만으로도 다 활용해보기 힘들 정도의 다양한 기능이 제공되는데 이것도 모자라 Script나 Extension 기능도 제공되며 관련 서드파티로 연동할 수 있는 프로그램도 풍부하다. 약 20년 전 즈음 소프트아이스라는 툴을 이용해 헥스코드로 일일이 수정하며 게임 머니를 올리려고 노력하며 진땀 흘렸던 것을 생각하면 기드라는 천상의 툴이라고 극찬할만 하다.

  • 주로 디컴파일의 기능을 활용하여 설명한다.
    C언어가 제아무리 어렵다고 한들 어셈블리어에 비하면 천국이다. 어셈블리 프로그래밍은 해 본 사람이라면 알겠지만 한정된 레지스터 안에 어떤 값이 존재할지 머리가 기억해야 하는 경우가 태반이다. 게다가 PUSH, CALL 등 한정된 명령어로 분기, 반복문 혹은 그 이상의 로직을 구현하려면 기억력이 남아나질 않는다. 이 책에서는 주로 C언어로 디컴파일의 결과만 설명하기에 이 역시 천국이 따로 없다.

단점은 거의 없다. 기드라 툴로 동적 분석이 안된다는 점이 단점이라고는 하나 분기점 우회 등 일부 편법으로 대체 가능한 팁들도 소개되며 무엇보다 나의 경우 정적 분석 하나 숙달하는데도 부족한 실력이어서인지 동적 분석까지 집중할 겨를이 없었다.

아무튼 지금까지 나온 리버싱 책 중 실전 감각을 키우는데 가장 훌륭한 책이라는 생각을 했다. 아무리 이론이 빠삭해도 눈앞에 작은 프로그램 하나 리버싱을 못한다면 무슨 소용이 있겠는가? 그런점에서 백견이 불여일타의 정신을 확실하게 고수하는 본 도서를 추천하고 싶다.


책소개

 

정적 분석(IT용어사전)

- 어떤 프로그램을 분석할 때 그 프로그램을 실행시키지 않고 그 자체를분석하는 것.

 

기드라(위키)

- 기드라는 미국 국가 안보국에서 개발한 역어셈블러 프레임워크이다.

- NSA에서 기드라를 오픈 소스로 공개하겠다고 하였으며, 2019 3 6(한국시간) RSA 컨퍼런스에서 기드라를 발표

- 기드라는 자바로 짜여져, 자바런타임으로 구동되며, 발표장에서 NSA에서는 백도어가 없다고밝혔다.

 

, 소스가 없는 실행파일을 가지고 내부의 프로그램 흐름을 파악 분석할수 있게하는 안전한 무료 소프트웨어인 것이다.

보안을 위해 멀웨어를 분석하는분야에 종사하고 있지는 않으나 가끔씩 레거시의 소스가 없는 프로그램을 보는 경우가있다. 자바를 분석하는 디컴파일러는 많이 있지만 실행파일 형태로 존재하는 프로그램은 분석을 위해서는입력값을 넣고 출력값에 따라 내부를 상상하는 수밖에는 없는 줄 알았으나 뜻밖에 이 책을 접하게 되었고 많은 것을 배우는 시간이 되었다.

이 책은 전문 리버스엔지니어링을 하지 않은 나에게도 이해할 수 있게하는 친절한 책이라고 생각한다. 기본적인 어셈블러나 C언어에 대한 선수지식이 있기 때문에 이해가더 쉬웠는지는 모르겠으나 책에서 필요한 만큼의 기본설명을 해주기 때문에 어느정도 개발 지식이 있는 독자라면 책을 읽고 이해하는데는 어렵지 않을거라 생각한다.

 

이 책은 장점은 아래 목차와 내용에서 보듯이 장별로 기본을 설명하고 점점 깊게 접근을 하고 있기 때문에 처음부터차근차근 읽어가면 된다.

1 리버스 엔지니어링 입문

  - 레지스터, 어셈블러명령어 등 기본적인 필수 지식에 대해 간단히 설명한다.

2 기드라 입문

  - 기드라 설치에 관한 설명

3 리버스 엔지니어링 연습

  - 간단한 예제를 가지고 정적분석을 수행한다.

4 Ghidra Script/Extension으로 기능 확장

  - 분석의 편리성을 위하여 스크립트, API등의 활용에 대해 설명한다

5 Ghidra vs. Crackme - ELF 크랙미 분석

6 Ghidra vs. MOTHRA - 윈도우 백도어 분석

7 Ghidra vs. BlackBicorn - 윈도우 패커 분석

8 Ghidra vs. Godzilla Loader - 윈도우 멀웨어분석

9 Ghidra vs. SafeSpy - 안드로이드 앱 분석

  - 5장에서 9장은정적분석이 필요한 예제를 바탕으로 정적분석을 수행한다.

 

또한 분석을 수행하는 방법에 대한 설명도 상당히 자세히 나와 있다.

모든 예제를 분석할 때 기본지식을 설명하고 예제에 대한 기드라의 디스어셈블 결과를 보여준 후 추가 분석을 통해디컴파일된 소스를 보여주고 설명하는 방식으로 구성되어 있어 이해하고 따라할 수 있게 되어 있다.

 

총평

 

한마디로 친절한 책이고 현재 유일무이한 책이다.

원래 번역서는 매끄럽지 못한 경우가 많은데 변역도 잘된 것 같다.

전문가가 아닌 내가 800페이지에 달하는 책을 2주만에 읽고 이해 했다는 것은 개인적으로 최고 평점을 줄 수 있는 책이라 생각한다.

다음에 시간이 될 때 차근차근 실습도 해 볼 예정이다.

 

참고로 부록은 리버스 엔지니어링을 전문으로 하는 경우는 참고할 사항이 많은 것 같고 실전문제 풀이가 있으므로나중에라도 다시 정독하고 볼만 하다.

 

"한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

 

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

책 소개

2019년 리버스 엔지니어링 툴인 기드라가 오픈 소스로 공개가 되었다.
기드라는 매우 강력한 사용자 편의 기능과 스크립트를 제공하여 리버스 엔지니어링에 대한 진입 장벽을 낮춰 주었다.
이 책은 리버스 엔지니어링 기초 이론 및 기드라의 사용법 그리고 실전적인 분석 방법에 대해 다룬다.

특히 리버스 엔지니어링에 필수라고 인식이 잡힌 어셈블리어를 잘 몰라도 기드라가 제공하는 디컴파일러가 출력한 유사 C 언어로 해설하기 때문에, 이에 대한 걱정 없이 소프트웨어 정적 분석에 입문할 수 있다.

 

대상 독자

리버스 엔지니어링이 무엇인지 궁금하지만, 높은 진입 장벽과 어려움에 고민만 했던 사람에게 매우 추천한다.

수월하게 읽기 위해선 기존 리버스 엔지니어링 툴을 다루어 봤거나, C 언어, 자바, 어셈블리어, 그리고 OS에 대한 지식들이 필요하다.
하지만 개인적으로 리버스 엔지니어링에 대한 관심만 있다면 좀 어렵더라도 C 언어, OS 지식 정도만 아는 사람에게도 추천하고 싶다.
기드라는 무료 오픈소스 툴로 IDA Pro 보다 쉽게 접근이 가능하고, 강력한 디컴파일, 그래프 시각화 등 사용자 편의적인 툴이 많아 C 언어와 OS에 대한 지식만 있다면, 리버스엔 지니어링에 도전할 수 있다.


그렇기 때문에 기존 사용자보다는, 리버스 엔지니어링이 무엇인지 경험해 보고 싶었지만 높은 진입장벽으로 인해 다가가지 못했던 그런 독자들에게 더욱 큰 선물 같은 책이라고 생각한다.

다루는 내용

크게 기초, 실습, 부록으로 나누어져 있다.
기초 챕터는 기본적인 어셈블리어와 기초 지식, 리버스 엔지니어링 연습으로 기드라 사용법을 익힌다.
실습 챕터는 ELF 크랙비, 윈도우 백도어, 패커, 멀웨어 및 안드로이드 분석을 한다.
부록 챕터는 기드라 응용 기능, 기드라 스크립트 등을 소개하고, 한국어판 특별 부록으로 CTF 형식의 문제가 추가되어 있다.

생각 및 느낀점

리버스 엔지니어링에 막연한 호기심과 동경으로 공부하고 싶었지만, 어셈블리어를 거의 안 해봐서 매우 부담스러웠다.
그런데 “리버스 엔지니어링 기드라 실전 가이드”는 이런 사람들의 어려움을 잘 알고 있었는지, 어셈블리어를 거의 하지 않아도 리버스 엔지니어링을 할 수 있도록 도와준다.
그리고 실전 연습 역시 단순한 실습이 아닌, 대상에 대한 기초적인 지식부터 단계 단계 풀어나가며 마치 하나의 이야기처럼 풀어 나가고 있어 이해를 돕는다.

만약 리버스 엔지니어링을 배우고 싶지만, 막연한 어려움으로 시작하지 못하고 있다면, 이 책을 꼭 읽어보길 추천한다.

리버싱을 시작할 때 가장 어려웠던 건 어디서부터 어디까지를 어떻게 해석하고 분석해야 하는 지 깨닫는 과정이었다. 그런 내가 느꼈던 이 책의 가장 큰 장점은 분석 과정을 그대로 따라만 가면 될 정도로 상세하게 설명해준다는 점이다. 어떤 버튼을 눌러야 하는지부터, 분석 결과와 그에 대한 분석까지 리버싱의 모든 과정들을 900페이지에 걸쳐서 하나하나 설명해준다. 


이 책은

✔️ 기드로나 IDA Pro 등 리버싱 툴을 한 번이라도 다뤄본 사람에 추천한다.

개인적으로는 리버싱을 공부하면서 분석 경험을 쌓고 싶은데 혼자 공부하기 막막한 사람에게 도움이 많이 될 것 같다고 느꼈다. 책의 앞부분(기초 편)에서 먼저 리버스 엔지니어링과 기드라 기초 지식을 알려주고, 뒷부분(실전 편)에서 실제로 소프트웨어를 분석하는 과정을 순서대로 상세하게 알려주기 때문이다. 실습 가이드인데도 기초 지식을 꼼꼼하게 짚어줘서 이 책과 구글만으로도 공부해볼 수 있겠다고 느꼈다. 전공자나 실무자, 또는 어떤 형태로든 리버스 엔지니어링을 하고 있는 사람이라면 나보다 훨씬 수월하게 실습을 진행할 수 있고, 더 많은 것을 얻어갈 수 있을 것이다.

하지만 운영체제, 어셈블리어, C나 JAVA 등 리버싱에 필요한 기반이 부족한 상태에서 이 책만 보고 기초부터 실습까지 공부해보려 한다면 이 책을 독파하기 쉽지 않을 것 같다. 또한 이 책의 목적이 실습인 만큼, 기드로 사전처럼 사용하기에 편한 구성은 아닐 수 있다. 또한,

✔️ 멀웨어 분석 및 해석 방법을 제시해준다.

크랙미와 모의 멀웨어 프로그램부터 멀웨어 패커(BlackBicorn), 멀웨어(Godzilla Loader), 그리고 안드로이드 멀웨어(SafeSpy)까지 다양한 소프트웨어 정적 분석을 실습한다. 실습용 코드부터 실제 코드까지 차례로 분석을 시도해본다는 점이 좋았다.

처음 분석을 시작할 땐 어디부터 보고 어디까지 파악해야 하는지를 아는 것이 가장 어려웠었던 기억이 난다. 이 책에서는 분석 방법부터 해석 방향까지 제시해주기 때문에 혼자서 공부하더라도 막막하지 않을 것 같다. 그만큼 내용이 방대(900페이지가 넘는다) 하기 때문에 힘들 수 있지만, 끝까지 해낸다면 리버싱은 웬만큼 할 수 있게 될 거라고 생각한다.

✔️ 그리고 설명이 굉장히 친절하다.

무언가를 배울 때, '너무 당연한 사실이라고 생각해서 그냥 넘어가는 설명'을 가장 싫어한다. 이 책은 그런 면에서 굉장히 친절하다고 느꼈다. 사람에 따라 너무 설명이 장황하다고 느낄 수도 있겠지만, 공부하면서 토씨 하나도 틀림이 없으려면 이런 꼼꼼함이 필요하다고 생각한다. 특히, 왜 이렇게 하는지에 대해 납득이 가도록 설명해주어서 읽기가 굉장히 수월하다. 이런 점에서 이 책이 굉장히 마음에 든다.

✔️ 윈도우와 리눅스 환경에서 진행한다.

이 책에서는 기본적으로 윈도우 x86환경을 사용한다. 리눅스 환경이 필요한 파트도 있는데, WSL(Windows Subsystem for Linux)를 활용하라고 가이드해준다. 물론, 악성코드 분석의 정석은 가상 환경이기 때문에 실습을 위해서는 기본적으로 가상 환경 구축이 필요하다.

✔️ 이클립스를 사용한다.

기드라는 JAVA 기반이기 때문에 스크립트는 JAVA로 개발하는 것이 표준이라고 한다. 따라서 책에서는 스크립트 개발 환경으로 이클립스를 사용한다. 혹시나 이클립스를 다뤄보지 않았더라도 필요한 기능은 모두 상세하게 알려준다. 또한, 기드라에서 제공하는 GhidraDev라는 이클립스용 플러그인을 활용하여 스크립트 디버깅, 클래스 검색 등 보조 기능을 사용하는 방법을 알려준다. 

✔️ 부록을 먼저 보자.

뭐든 직접 부딪혀봐야 안다고 생각하는데, 컴퓨터에 관련해서는 특히 더 그렇다. 이론을 아무리 공부해도 코드를 한 줄이라도 직접 써봐야 이해가 되고 재미있다. 이 책의 부록은 기드라 응용(A), 기드라 스크립트(B), 실전 문제 풀이(C) 총 3개 파트로 구성되어 있는데, 이 중 부록 C에서는 crackme 문제를 풀어준다. 원본에는 없었던 것을 번역본에서 추가한 것이라고 하는데, 기드라를 어떻게 사용하는지 알아본다는 생각으로 접근하면 좋을 것 같다. Level 1부터 2까지 푸는 과정을 어떤 버튼을 눌러서 어떤 기능을 수행하는지까지 하나하나 상세하게 알려주고 있기 때문에 참고할 만하다. 책에서는 부록 C가 공부를 마치고 배운 내용을 복습하는 목적이라고 소개했지만, 한 레벨이라도 먼저 깨보고 나서 이 책을 공부하기 시작하면 훨씬 재미있게 시작할 수 있지 않을까 생각한다.

 

책 구성

이 책의 구성은 아래와 같다. 앞서 언급했던 것처럼 기초 편과 실전 편이 나뉘어 있는 점이 좋다. 기초 편에서 여러 기초 지식을 다루지만 어셈블리어나 C, Java, Go 등 프로그래밍 언어나 컴퓨터 시스템에 관한 기반 지식을 깊게 다루지 않는다. 그리고 실전 편에서는 윈도우 기반 멀웨어를 중심으로 정적 분석을 실습한다. 분석 소프트웨어로는 연습용과 실제 멀웨어를 모두 다루는데, 원서가 20년도에 출간되었던 만큼 최신 트렌드 파악보다는 리버스 엔지니어링 실습과 기드라 사용법을 중심으로 공부하면 좋겠다.


책 들여다보기

앞서 책의 장점으로 상세한 설명을 꼽았었는데, 그 이유를 정리해보았다. 먼저, 화면 캡쳐나 구조도 등 첨부 자료가 정말 많다. 툴을 처음 다루는 입장에서 이런 자료들은 정말 큰 도움이 된다.

그리고 '당연히 알겠지'하고 그냥 넘어가는 법이 없다. 책 한 권에서 모든 걸 담을 수는 없는데도, 짧게라도 모든 개념을 짚어주려는 노력이 보여서 고마웠다. 예를 들어 AES 암복호화가 필요한 파트에서 당연히 안다고 생각하고 넘어갈 수도 있는 내용이지만, 암호화 알고리즘과 ECB모드, CBC모드에 대해서 먼저 설명해준 다음 스크립트로 암복호화 과정을 보여주면서 분석을 진행한다. 이렇다 보니 실습을 진행하면서 모르는 내용이 나와도 수월하게 따라갈 수 있었다.

실전 편에서는 모든 파트가 분석 리포트를 쓰듯 서론-본론-결론이 명확하다. 서론에서는 분석 대상에 대한 소개를 하고, 결론에서는 분석에 대한 평가를 덧붙여준다. 이런 구성은 체계적으로 공부하는 데에 큰 도움이 되었다.


이 책에서는 기드라를 이렇게 소개한다.

" 기드라는 미국 국가안보국(NSA)에서 개발 후 2019년에 공개한 오픈소스 소프트웨어 리버스 엔지니어링 도구이며, Windows/MacOS/Linux 등 환경에 상관없이 동작하는 크로스 플랫폼 소프트웨어이다. "

기드라는 NSA에서 개발했다는 이유로 2019년 공개 직후 폭발적인 관심을 받았었다. 그만큼 취약점 분석이 적극적으로 이루어졌는지, 공개되고 며칠 지나지 않아 취약점이 발견됐었다고 한다. 그 이후로는 IDA Pro와 Ghidro 모두 리버스 엔지니어링 툴로 꾸준히 인기 있는 것 같다.

사실 어떤 도구를 사용하느냐보다는 어떤 분석을 하느냐가 더 중요하다. 이 책은 기드라 가이드가 아닌 리버싱 실습 가이드라고 생각하고 봐도 충분히 유익할 것이라고 생각한다. 실무자가 아니어서 이 책이 리버싱을 얼마나 깊이 있게 다루는지 또는 실무에 얼마나 도움이 되는 지를 평가하기는 어렵다. 하지만 적어도 나처럼 리버싱을 공부하면서 벽이 느껴졌던 학생에게는 가뭄에 단비 같은 책일 거라고 생각한다.

 

 

이 책은 제목과 같이 2019년 미국국가안보국(NSA)이 소프트웨어 리버스 엔지니어링 도구로 공개한 기드라(Ghidra)를 그 주제로 다루고 있는데 기드라를 통해 어려운 디스어셈블러와 함께 디 컴파일러를 free로 이용할 수 있게 되므로 일반인에게도 리버스 엔지니어링에 대한 진입장벽이 낮아지게 되었다.

 

저자는 나카지마 쇼타외 3명 총 4명이 공저하였으며 모두 강단 학자가 아닌 실제 보안 관련 연구소, 기업에서 실무를 담당하고 있어 책 내용은 실습이 가능하도록 잘 짜여져 있다.

 

책 내용은 전체적으로 900페이지 가량의 두꺼우며 총 9장중 앞의 4장은 리버스 엔지니어링과 기드라에 대한 소개를 하고 있으며 뒤의 5장은 '실전 편'으로 크랙미, 백도어, 패커, 멀웨어와 마지막 장인 9장에서는 최근 대세인 안드로이드앱에 대한 분석까지 다루고 있다.

 

이 책의 장점으로는 예제소스를 한빛미디어 URL에서 제공하고 다운받아 실습할수 있는데(책 11페이지 안내) 실습시 실제 악성코드가 일부 포함되어 있을 수도 있으므로 가상 환경에서 실습하는 것을 권장하고 있으며 학습 지원에 대한 세심한 배려가 돋보인다.

 

전체적으로 책을 훑어 본 느낌은 이미 현업에서 보안과 관련된 업무를 하고 있거나 컴퓨터관련 전공대학에서 3~4학년 이상 수료한 중고급자에게 적합해 보이며 기본적으로 컴파일 과목에 대한 수강이나 이해도를 가지고 있다는 전제로 서술되어 있으므로 컴파일링에 대한 이해도가 부족한 독자들은 책을 읽기전이나 읽는 도중에 이와 관련한 학습이 필요하다 사료된다.

 

한편, 본장 9장이 끝난후 부록 3개 있는데(Appendix A, B, C) 기드라를 응용할 수 있는 script와 실전문제 풀이가 있어 본인이 제대로 학습하였는지 여부를 검증할 수 있는 유용한 내용을 제공하기도 하였다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
리버스 엔지니어링 기드라 실전 가이드
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
리버스 엔지니어링 기드라 실전 가이드
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
리버스 엔지니어링 기드라 실전 가이드
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실