테키테크 TEKITECH

「리버스 엔지니어링 기드라 실전 가이드」/ 나카지마 쇼타 외 3인 지음 / 한빛미디어 출판 / 2022년 출간 본문

그리고/책

「리버스 엔지니어링 기드라 실전 가이드」/ 나카지마 쇼타 외 3인 지음 / 한빛미디어 출판 / 2022년 출간

TEKI 2022. 2. 6. 19:14

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

학교에서 리버싱을 공부할 땐 컴퓨터에 용이 아닌 여인의 얼굴이 하나씩 있었던 기억이 난다. 지금은 전공과 다른 직무로 일을 시작해서 기드라를 써볼 일이 없었다. 그래서 이 책을 받고 다시 학생의 마음으로 돌아가서 이번엔 기드라로 리버싱을 공부해보았다.

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

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

사실 여느 분야와 마찬가지로 어떤 도구를 사용하느냐보다는 어떤 분석을 하느냐가 더 중요하다. 그리고 개인적으로 도구를 사용하는 방법은 책 보다 구글과 실전으로 익히는 것을 선호한다. 그래서 이 책에 대한 기대는 사실 반반이었는데, 실제로 읽어보니 '기드라 가이드'가 아닌 '정적 분석 실습 가이드'라고 봐도 무방하게 느껴졌다.

리버스 엔지니어링 실무자가 아니다 보니 이 책이 리버싱을 얼마나 깊이 있게 다루는지, 또는 실무에 얼마나 도움이 되는지를 평가하기는 어렵다. 하지만 마치 전공 수업을 듣는 것처럼 이론부터 실습까지 체계적으로 공부할 수 있는 책이었다. 그러니 적어도 나처럼 리버싱을 공부하면서 벽이 느껴졌던 학생에게는 가뭄에 단비 같은 책이지 않을까 생각한다.

 


 

리버스 엔지니어링 기드라 실전 가이드 유사 멀웨어로 먹히는 소프트웨어 정적 분석
나카지마 쇼타, 고타케 다이치, 하라 히로아키, 가와바타 고헤이지음 | 이창선, 임재용 옮김 | 한빛미디어 | 2022년 01월 10일 출간

책 디자인도, 두께도 범상치 않다

 

 

이 책은

✔️ 기드로나 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모드에 대해서 먼저 설명해준 다음 스크립트로 암복호화 과정을 보여주면서 분석을 진행한다. 이렇다 보니 실습을 진행하면서 모르는 내용이 나와도 수월하게 따라갈 수 있었다.

 

실전 편에서는 모든 파트가 분석 리포트를 쓰듯 서론-본론-결론이 명확하다. 서론에서는 분석 대상을 소개하고, 결론에서는 분석에 대한 평가를 덧붙여준다. 이런 구성은 체계적으로 공부하는 데에 큰 도움이 되었다. (과제 할 때 이 책이 있었으면 A+을 받을 수 있었을 텐데)

 

 

Index

전문 서적을 볼 때 중요하게 보는 곳 중 하나가 Index이다. 여기에 책에 무엇이 있는지가 전부 드러나 있기 때문이다. 책을 사려고 고민 중인 사람이 있다면, 이게 도움이 되길 바란다.

 

반응형
Comments