소스 코드 파일은여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/ghidra-software
원서의 코드 실행 영상은여기에서 보실 수 있습니다.
https://bit.ly/3ot3YAT
리버스 엔지니어링 입문자를 위한 Ghidra 가이드북이다. Ghidra의 역사, 구조, 기본적인 기능, 확장기능 개발, 스크립트 등 Ghidra의 모든 것을 소개한다. Ghidra로 실제 사용됐던 악성코드를 분석하며 주요 기능을 알아보고, 리버스 엔지니어링에 대한 전반적인 지식을 얻을 수 있다. 또한 Ghidra 플러그인을 직접 개발하고 Ghidra의 확장 기능을 활용하기 위한 정적, 동적 심볼릭 실행, SMT 솔버를 비롯한 고급 리버스 엔지니어링 주제를 다룬다.
◆ Ghidra의 기능, 플러그인, 확장 기능 활용
◆ Ghidra에 기여할 수 있는 방법
◆ 악성코드 리버스 엔지니어링과 바이너리 감사 수행
◆ Ghidra 플러그인으로 리버스 엔지니어링 작업 자동화
◆ 자신만의 Ghidra 확장 기능, 스크립트 및 기능 개발
◆ Ghidra 스크립팅으로 실행 가능한 바이너리에서 취약점을 찾는 작업 자동화
◆ headless 모드에서의 Ghidra 사용 방법
리버스 코드 엔지니어, 악성코드 분석가, 버그 헌터, 침투 테스터, 익스플로잇 개발자, 포렌식 전문가, 보안 연구자, 사이버 보안 학생을 대상으로 한다. 실제로 학습 곡선을 최소화하고 자신만의 도구를 쓰기 시작함으로써 Ghidra를 배우고자 하는 사람이라면 누구나 이 책을 즐기고 목표를 달성할 수 있다.
1장, ‘Ghidra 시작’에서는 Ghidra의 역사와 사용자 관점에서 프로그램의 개요를 다룬다.
2장, ‘Ghidra 스크립트를 통한 리버스 엔지니어링 작업 자동화’에서는 Ghidra 스크립트를 사용해 리버스 엔지니어링 작업을 자동화하는 방법을 설명하고 스크립트 개발을 소개한다.
3장, ‘Ghidra 디버그 모드’에서는 Ghidra 개발 환경설정 방법, Ghidra 디버그 방법, Ghidra 디버그 모드 취약점의 모든 내용을 다룬다.
4장, ‘Ghidra 확장 기능 사용’에서는 Ghidra 확장 기능을 설치하고 사용하는 방법을 보여줄 뿐만 아니라 Ghidra 기능을 개발하기 위한 배경을 설명한다.
5장, ‘Ghidra를 사용한 악성코드 리버싱’에서는 실제 악성코드 샘플을 리버싱해 악성코드 분석에 Ghidra를 사용하는 방법을 보여준다.
6장, ‘스크립팅 악성코드 분석’에서는 악성코드 샘플에서 발견된 셸코드 분석을 자바와 파이썬 두 언어를 모두 스크립팅해 5장의 내용에 이어서 설명한다.
7장, ‘Ghidra Headless Analyzer 사용’에서는 Ghidra Headless Analyzer를 설명하고 7장에서 개발한 스크립트로 획득한 악성코드 샘플에 적용한다.
8장, ‘Ghidra를 이용한 바이너리 감사’에서는 Ghidra로 메모리 손상 취약점을 찾고 이를 활용하는 방법을 설명한다.
9장, ‘스크립팅 바이너리 감사’에서는 8장에 이어 강력한 PCode 중간 표현을 활용해 스크립팅으로 버그 헌팅 프로세스를 자동화하는 방법을 설명한다.
10장, ‘Ghidra 플러그인 개발’에서는 Ghidra 플러그인 확장 기능이 구현된 Ghidra 기능을 최대한 활용할 수 있는 방법을 설명함으로써 Ghidra 확장 기능 개발을 자세히 설명한다.
11장, ‘새로운 바이너리 포맷 통합’에서는 실제 파일 포맷을 예로 들어 새로운 바이너리 포맷을 지원하는 Ghidra 확장 기능을 사용하는 방법을 설명한다.
12장, ‘프로세서 모듈 분석’에서는 SLEIGH 프로세서 사양 언어를 사용해 Ghidra 프로세서 모듈을 작성하는 방법을 설명한다.
13장, ‘Ghidra 커뮤니티에 기여’에서는 소셜 네트워크, 채팅을 사용해 개발, 피드백, 버그 보고서, 댓글 등으로 커뮤니티와 상호작용하는 방법을 설명한다.
14장, ‘고급 리버스 엔지니어링을 위한 Ghidra 확장’에서는 SMT solvers, 마이크로소프트 Z3, 정적 및 동적 symbex, LLVM, Angr과 같은 고급 리버스 엔지니어링 주제와 도구를 소개하고 Ghidra와 통합하는 방법을 설명한다.
이 책은 Ghidra 리버스 엔지니어링 도구의 실용적인 안내서다. 해당 과정에서 악성코드 분석 및 바이너리 감사와 같은 다양한 용도로 Ghidra를 사용하는 방법을 알려준다. 앞부분에는 Ghidra 스크립팅을 사용해 시간이 많이 걸리는 리버스 엔지니어링 작업을 자동화하는 방법과, 설명서를 확인해 스스로 문제를 해결하고 지식을 확장하는 방법을 알려준다.
책의 앞부분을 읽고 고급 Ghidra 사용자가 되면 새로운 GUI 플러그인, 바이너리 형식, 프로세서 모듈 등을 지원하고자 Ghidra 리버스 엔지니어링 도구의 기능을 확장하는 방법을 알아본다. 도구의 기능을 확장하는 방법을 배운 후 Ghidra 개발 기술을 습득하며 Ghidra를 디버깅하고 확장시키는 자신만의 기능을 개발할 수 있다. 그 후에는 커뮤니티 구성원들과 교류하는 것 외에 국가안보국(NSA) 프로젝트에 자신의 코드, 피드백, 발견된 버그 등을 제공하는 방법을 배워 Ghidra 커뮤니티에 기여할 수 있다.
마지막 장에서는 Ghidra 리버스 엔지니어링 도구를 개선해 개발할 수 있는 새롭고 유용한 Ghidra 기능을 알 수 있도록 고급 리버스 엔지니어링 주제를 소개한다.
선임 악성코드 분석가이자 리버스 엔지니어다. IT 분야에서 7년 이상의 경력이 있으며, 자체 바이러스 백신 제품을 연구했고, 이후 악성코드 분석가 및 리버스 엔지니어로 근무했다. 대부분 은행 관련 악성코드를 리버스 엔지니어링하고 프로세스를 자동화하는 회사에서 일했다. 그 후 바이러스 백신 회사의 중요 악성코드 부서에 들어갔다. 현재 악성코드 관련 박사 과정을 밟으며 GRADIANT(Galician Research and Development Center in Advanced Telecommunications)에서 보안 연구원으로 일하고 있다. 여가시간에는 마이크로소프트의 윈도우 10과 NSA의 Ghidra 프로젝트 등 일부 관련 기업의 취약점을 찾아낸다.
대학교에서 정보보안학과를 전공했으며, 현재 정보보안 컨설턴트로 활동 중이다.