株式会社Ninjastars 技術系ブログ

「本質的安全を提供し、デジタル社会を進化させる!!!」

NSA 米国国家安全保障局 リバースエンジニアリングツール Ghidraを使う

株式会社Ninjastarsセキュリティエンジニアの一瀬健二郎です。
2019年3月6日に公開されたNSA製のリバースエンジニアリングツールである「Ghidra」についてのページとなります。
情報は適時更新していきます。

ghidra-sre.org

対象OS

Windows,Mac,Linuxで動作します。

Tips

発音
Frequently asked questions · NationalSecurityAgency/ghidra Wiki · GitHub
Gee-druh. The G sounds like the G in goto, great, good, graph, and GitHub. The emphasis goes on the first syllable.

開発言語
Java等でコーディング。

ソースコード
github.com

デバッガ機能はあるか
Ghidraには存在しない。有料版のIDA Proには存在する。

対象アーキテクチャ
NSA役員による情報

利用方法(Windows)

Ghidraのダウンロード
Ghidra

1)下記からJDK11.02をインストール。
Java SE Development Kit 11- - Downloads

2)jdkをインストールした場所のPathを通す。
例 C:\Program Files\Java\jdk-11.0.2\bin

3)Ghidraを解凍したフォルダのghidraRun.batをダブルクリック

4)同意画面が出るのでI Agree

5)Ghidraが起動します!

f:id:Ninjastars:20190307033814p:plain
はじめてのGHIDRA

基本的な使い方

1)CodeBrowserの起動。
File->New Project->Next->Project Nameを入力->ドラゴンのアイコンをクリックでCodeBrowserが起動します。

2)ファイルの解析。
解析対象のファイルをCodeBrowser画面にドラッグ&ドロップで解析できます。

機能説明

1)文字列検索
Window->Defined String

2)参照元の検索
シンボル上で右クリック->一番下のReferences->下から3番目までのShow ...で参照元が検索できる。

3)フローチャートを表示
表示したいオペコード群にカーソル位置を合わせる->上部ツールアイコンの"Display Function Graph"をクリック

f:id:Ninjastars:20190307142221p:plain
条件分岐などを見やすく表示してくれる。

4)フローチャートの表示レイアウトを変更
Edit Code Block FIelds->タブを調整。

f:id:Ninjastars:20190308154451p:plain
レイアウトを自由に調整できる。

5)バイナリの閲覧・編集
Window->Bytes:プログラム名をクリックでバイナリを表示します。
下の画像で赤く囲まれている場所で閲覧・編集モードを変更できます。

f:id:Ninjastars:20190311154616p:plain
閲覧・編集モード変更ボタン
※Ghidraの仕様でバイナリ編集でオペコードを編集することはできません。
これを回避する方法として、6)の機能を使用します。

6)オペコードを書き換える
オペコード上で右クリック->Patch Instruction
オペコード、オペランドを文字として直接変更できます。

7)デコンパイラの使用
CodeBrowser上部のWindow->Decompilerをクリックすると別Windowにてデコンパイラが起動します。

f:id:Ninjastars:20190307052003p:plain
コンパイラも優秀