関連サイト
本書の関連ページが用意されています。
内容紹介
NSA(アメリカ国家安全保障局)が開発し、オープンソースソフトウェアとして公開した「Ghidra」を用いた実践的なリバースエンジニアリング手法について解説した書籍です。Ghidraは、ディスアセンブラやデコンパイラを備え、自動化を行うためのスクリプト機能も充実しているリバースエンジニアリングツールです。また、多くのアーキテクチャや実行ファイル形式に対応しているため、マルウェア解析やファームウェア解析、脆弱性の診断などをクロスプラットフォームで実施することが可能です。
ただし、Ghidraは高機能であるため、それらの機能を有意義に活用できるようになるには経験が必要です。そこで、本書では演習を中心に、操作方法や解析手法を効果的に学べるように構成しています。また、リバースエンジニアリング初心者は、アセンブリ言語の学習で挫折してしまいがちなので、Ghidraのデコンパイラが出力する疑似C言語をもとに解説を行い、可能な限りアセンブリ言語を読まないでリバースエンジニアリングを学べるようになっています。
基礎編(第1章から第4章)と実践編(第5章から第9章)の2つのパートから構成されています。基礎編では、リバースエンジニアリングの基礎に始まり、Ghidraの基本的な操作方法やスクリプト機能について解説しています。実践編では、LinuxのELFファイル(x64)、WindowsのPEファイル(x86)、AndroidのAPKファイルとELFファイル(ARM)を対象としたリバースエンジニアリングの演習を通して、Ghidraを用いた実践的な解析手法を学びます。実践編は章ごとに独立しているため、興味を持った章から読み進めていただいて問題ありません。Ghidraを使った解析によって検体の正体を少しずつ明らかにしていく様子は、ミステリ小説を読んでいるかのような醍醐味があります。ぜひ、本書のサンプルファイルとスクリプトをダウンロードして、一緒に動かしながら解析してみてください。
書誌情報
- 著者: 中島 将太, 小竹 泰一, 原 弘明, 川畑 公平
- 発行日: 2020-08-25 (紙書籍版発行日: 2020-08-25)
- 最終更新日: 2020-08-25
- バージョン: 1.0.0
- ページ数: 688ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
著者について
中島 将太
株式会社サイバーディフェンス研究所にて、Cyber Threat Intelligence Analystとして勤務。マルウェア解析、インシデントレスポンス業務、脅威情報の収集・分析業務に従事。技術系同人サークル「Allsafe」のプロデューサー。JSAC、HITCON CMT、AVAR、CPRCon、Black Hat EUROPE Arsenal、CodeBlue BlueBoxなどに登壇。セキュリティ・キャンプ全国大会2020講師。
小竹 泰一
株式会社アカツキにて、セキュリティエンジニアとして勤務。スマートフォンゲームやWebアプリケーションに対する脆弱性診断、社内ネットワークに対するペネトレーションテストに従事。チート対策ツールや診断ツール等の開発も好む。Black Hat USA 2020 Arsenal に登壇。セキュリティ・キャンプ全国大会2020講師。
GitHub: tkmru
https://tkmru.dev/
原 弘明
トレンドマイクロ株式会社にて、マルウェア 析やインシデントレスポンス、スレットリサーチ、レッドチームなどに従事。技術系同人サークル「Allsafe」のアートディレクター。セキュリティ・キャンプ全国大会2020講師。
川畑 公平
トレンドマイクロ株式会社にて、サイバークライムや標的型攻撃で利用されるマルウェアの 析に加え、脆弱性の研究に従事。技術系同人サークル「Allsafe」のCTO。RSAカンファレンスAPJや海外の招待制プライベートカンファレンスに登壇。
目次
第1章 リバースエンジニアリング入門
- 1-1 リバースエンジニアリング
- 1-2 プログラムの実行
- 1-3 呼び出し規約
- 1-4 C言語とアセンブリ言語
- 1-5 PEフォーマット
- 1-6 x64アーキテクチャ
第2章 Ghidra入門
- 2-1 Ghidraとは
- 2-2 インストール
- 2-3 プロジェクト
- 2-4 インポート
- 2-5 CodeBrowser
第3章 リバースエンジニアリング演習
- 3-1 downloader.exe
- 3-2 解析のアプローチ
- 3-3 関数の引数の解析
- 3-4 独自構造体の手動定義
- 3-5 downloader.exeの解析を終えて
第4章 Ghidra Script/Extensionによる機能拡張
- 4-1 Ghidraの機能拡張
- 4-2 Ghidra Scriptの基礎
- 4-3 Ghidra API
- 4-4 Headless Analyzer
- 4-5 Ghidra Extension
第5章 Ghidra vs Crackme ―ELF Crackmeの解析
- 5-1 Crackmeとは
- 5-2 Level1:XORによる単純なエンコーダ
- 5-3 Level2:カスタマイズされたエンコーダ
- 5-4 Level3:バッファオーバーフロー
- 5-5 Level4:Goで実装されたバイナリの解析
第6章 Ghidra vs MOTHRA ―Windowsバックドアの解析
- 6-1 解析の準備
- 6-2 メイン関数
- 6-3 C2サーバからのコマンド取得
- 6-4 コマンド分岐
- 6-5 MOTHRA RATの解析を終えて
第7章 Ghidra vs BlackBicorn ―Windowsパッカーの解析
- 7-1 パッカーとは
- 7-2 BlackBicornの概要
- 7-3 BlackBicornの解析(ステージ0)
- 7-4 BlackBicornの解析(ステージ1)
- 7-5 BlackBicornの解析(ステージ2)
- 7-6 BlackBicornの解析を終えて
第8章 Ghidra vs Godzilla Loader ―Windowsマルウェアの解析
- 8-1 マルウェア界のゴジラ「Godzilla Loader」
- 8-2 解析対象ファイル
- 8-3 パッカーの解析
- 8-4 文字列難読化の解除
- 8-5 Godzilla Loaderの機能
- 8-6 Godzilla Loaderの解析を終えて
第9章 Ghidra vs SafeSpy ――Androidアプリの解析
- 9-1 Androidの基礎 496
- 9-2 Androidネイティブライブラリの基礎 504
- 9-3 Androidアプリの静的解析の概要 511
- 9-4 「SafeSpy」アプリの解析 517
付録
- 付録A Ghidraの応用機能
- 付録B Ghidra Script/Extensionの紹介