GHIDRA를 활용한 리버스 엔지니어링 입문

고객평점
저자A.P.데이비드
출판사항에이콘, 발행일:2022/01/03
형태사항p.363 B5판:24
매장위치자연과학부(B2) , 재고문의 : 051-816-9500
ISBN9791161755830 [소득공제]
판매가격 35,000원  
포인트 1,050점
배송비결제주문시 결제
  • 주문수량 

총 금액 : 0원

책 소개

◈ 이 책에서 다루는 내용 ◈


◆ 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와 통합하는 방법을 설명한다.

작가 소개

지은이 : A. P. 데이비드

선임 악성코드 분석가이자 리버스 엔지니어다. IT 분야에서 7년 이상의 경력이 있으며, 자체 바이러스 백신 제품을 연구했고, 이후 악성코드 분석가 및 리버스 엔지니어로 근무했다. 대부분 은행 관련 악성코드를 리버스 엔지니어링하고 프로세스를 자동화하는 회사에서 일했다. 그 후 바이러스 백신 회사의 중요 악성코드 부서에 들어갔다. 현재 악성코드 관련 박사 과정을 밟으며 GRADIANT(Galician Research and Development Center in Advanced Telecommunications)에서 보안 연구원으로 일하고 있다. 여가시간에는 마이크로소프트의 윈도우 10과 NSA의 Ghidra 프로젝트 등 일부 관련 기업의 취약점을 찾아낸다.



옮긴이 : 장지나

대학교에서 정보보안학과를 전공했으며, 현재 정보보안 컨설턴트로 활동 중이다.

목 차

1부. Ghidra 소개


1장. Ghidra 시작

__기술적 요구 사항

__위키리크스 Vault 7

____NSA 릴리스

__IDA 및 기타 많은 경쟁업체 대비 Ghidra

__Ghidra 개요

____Ghidra 설치

____Ghidra의 특징 개요

__요약

__질문


2장. Ghidra 스크립트를 통한 리버스 엔지니어링 작업 자동화

__기술적 요구 사항

__기존 스크립트 사용과 적용

__스크립트 클래스

__스크립트 개발

__요약

__질문


3장. Ghidra 디버그 모드

__기술적 요구 사항

__Ghidra 개발 환경설정

__소프트웨어 요구 사항 개요

____자바 JDK 설치

____이클립스 IDE 설치

____PyDev 설치

____GhidraDev 설치

__Ghidra 코드와 Ghidra 스크립트 디버깅

____이클립스에서 Ghidra 스크립트 디버깅

____이클립스에서 Ghidra 구성 요소 디버깅

__Ghidra RCE 취약점

____Ghidra RCE 취약점 설명

____Ghidra RCE 취약점 공격

____Ghidra RCE 취약점 수정

____취약한 컴퓨터 찾기

__요약

__질문

__더 읽을거리


4장. Ghidra 확장 기능 사용

__기술적 요구 사항

__기존 Ghidra 확장 기능 설치

____Sample Table Provider 플러그인의 코드 분석

__Ghidra 확장 기능 스켈레톤의 이해

____분석기

____파일 시스템

____플러그인

____익스포터

____로더

__Ghidra 확장 기능 개발

__요약

__질문

__더 읽을거리


2부. 리버스 엔지니어링


5장. Ghidra를 사용한 악성코드 리버싱

__기술적 요구 사항

__환경설정

__악성코드 지표 찾기

____문자열 찾기

____인텔리전스 정보와 외부 소스

____import 함수 확인

__흥미로운 악성코드 샘플 부분 분석

____진입점 함수

____0x00453340 함수 분석

____0x00453C10 함수 분석

____0x0046EA60 함수 분석

____0x0046BEB0 함수 분석

____0x0046E3A0 함수 분석

____0x004559B0 함수 분석

____0x004554E0 함수 분석

____0x0046C860 함수 분석

____0x0046A100 함수 분석

__요약

__질문

__더 읽을거리


6장. 스크립팅 악성코드 분석

__기술적 요구 사항

__Ghidra 스크립팅 API 사용

__자바 프로그래밍 언어를 사용해 스크립트 작성

__파이썬 프로그래밍 언어를 사용해 스크립트 작성

__스크립트를 사용한 악성코드 샘플의 난독화 해제

____델타 오프셋

____API 해시를 주소로 변환

____Ghidra 스크립팅을 사용해 해시 테이블 난독화 해제

____스크립팅 결과 향상

__요약

__질문

__더 읽을거리


7장. Ghidra Headless Analyzer 사용

__기술적 요구 사항

__Headless 모드를 사용하는 이유

__프로젝트 생성과 채우기

__가져온 바이너리나 기존 바이너리에 대한 분석 수행

__프로젝트에서 비GUI 스크립트 실행

__요약

__질문

__더 읽을거리


8장. Ghidra를 이용한 바이너리 감사

__기술적 요구 사항

__메모리 손상 취약점 이해

____스택 이해

____스택 기반 버퍼 오버플로

____힙의 이해

____힙 기반 버퍼 오버플로

____포맷 스트링

__Ghidra를 사용한 취약점 찾기

__단순 스택 기반 버퍼 오버플로 공격

__요약

__질문

__더 읽을거리


9장. 스크립팅 바이너리 감사

__기술적 요구 사항

__취약한 함수 찾기

____심볼 테이블에서 안전하지 않은 C/C++ 함수 검색

____스크립팅을 사용한 프로그램 디컴파일

__sscanf 콜러 검색

____콜러 함수 열거

__PCode를 이용한 콜러 함수 분석

____PCode와 어셈블리어 비교

____PCode 검색과 분석

____여러 아키텍처에서 동일한 PCode 기반 스크립트 사용

__요약

__질문

__더 읽을거리


3부. Ghidra 확장


10장. Ghidra 플러그인 개발

__기술적 요구 사항

__기존 플러그인 개요

____Ghidra 배포에 포함된 플러그인

____서드파티 플러그인

__Ghidra 플러그인 스켈레톤

____플러그인 설명서

____플러그인 코드 작성

____플러그인에 대한 프로바이더

__Ghidra 플러그인 개발

____플러그인 문서화

____플러그인 클래스 구현

____프로바이더 구현

__요약

__질문

__더 읽을거리


11장. 새로운 바이너리 포맷 통합

__기술적 요구 사항

__원시 바이너리와 포맷 형식 바이너리의 차이점

____원시 바이너리 이해

____포맷된 바이너리 파일 이해

__Ghidra 로더 개발

____MZ(오래된 스타일 DOS 실행 파일) 파서

____오래된 MZ(DOS 실행 파일) 로더

__파일 시스템 로더 이해

____파일 시스템 자원 로케이터

__요약

__질문

__더 읽을거리


12장. 프로세서 모듈 분석

__기술적 요구 사항

__기존 Ghidra 프로세서 모듈 이해

__Ghidra 프로세서 모듈 스켈레톤 개요

____프로세서 모듈 개발 환경설정

____프로세서 모듈 스켈레톤 생성

__Ghidra 프로세서 개발

____문서화 프로세서

____패턴을 이용한 함수와 코드 식별

____언어와 언어 변형 지정

__요약

__질문

__더 읽을거리


13장. Ghidra 커뮤니티에 기여

__기술적 요구 사항

__Ghidra 프로젝트 개요

____Ghidra 커뮤니티

__기여도 탐색

____법적 측면의 이해

____버그 리포트 제출

____새 기능 제안

____질문 제출

____Ghidra 프로젝트에 풀 리퀘스트 제출

__요약

__질문

__더 읽을거리


14장. 고급 리버스 엔지니어링을 위한 Ghidra 확장

__기술적 요구 사항

__고급 리버스 엔지니어링의 기본 지식

____심볼릭 실행 학습

____SMT 솔버 학습

____콘콜릭 실행에 대한 학습

__고급 리버스 엔지니어링에 Ghidra 사용

____AngryGhidra로 Ghidra에 심볼릭 실행 기능 추가

____pcode-to-llvm을 사용해 PCode에서 LLVM으로 변환

__요약

__질문

__더 읽을거리

역자 소개


01. 반품기한
  • 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
  • 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
02. 반품 배송비
반품 배송비
반품사유 반품 배송비 부담자
단순변심 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다.
상품의 불량 또는 오배송 고객 부담이 아닙니다.
03. 배송상태에 따른 환불안내
환불안내
진행 상태 결제완료 상품준비중 배송지시/배송중/배송완료
어떤 상태 주문 내역 확인 전 상품 발송 준비 중 상품이 택배사로 이미 발송 됨
환불 즉시환불 구매취소 의사전달 → 발송중지 → 환불 반품회수 → 반품상품 확인 → 환불
04. 취소방법
  • 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
  • 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
05. 환불시점
환불시점
결제수단 환불시점 환불방법
신용카드 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) 신용카드 승인취소
계좌이체 실시간 계좌이체 또는 무통장입금
취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준)
계좌입금
휴대폰 결제 당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소
전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준)
당일취소 : 휴대폰 결제 승인취소
익월취소 : 계좌입금
포인트 취소 완료 후, 당일 포인트 적립 환불 포인트 적립
06. 취소반품 불가 사유
  • 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
  • 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
  • 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
  • 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
  • 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
  • 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.

환불불가
상품군 취소/반품 불가사유
의류/잡화/수입명품 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우
계절상품/식품/화장품 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
가전/설치상품 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.)
자동차용품 상품을 개봉하여 장착한 이후 단순변심의 경우
CD/DVD/GAME/BOOK등 복제가 가능한 상품의 포장 등을 훼손한 경우
내비게이션, OS시리얼이 적힌 PMP 상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우
노트북, 테스크탑 PC 등 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우