Slide 1

Slide 1 text

Coverage Visualizerの紹介 MsY(@py65criz) 1

Slide 2

Slide 2 text

修士研究で起きた悩み 2 ● 実験:QEMU上のバイナリに対してファジング ● 評価のために,実行トレースを記録 ● 視覚的にどのコードブロック,関数を通ったかを知りたい ○ 例:深さの比較(大雑把に) ● Coverage Visualizerを使って解決 https://ricercasecurity.blogspot.com/2022/09/

Slide 3

Slide 3 text

ツールの選定 3 Coverage Visualizer リバエン ツール 対応トレース 形式 メリット デメリット gaasedelen/lighthouse Binary Ninja PIN Frida DynamoRIO 命令・BB単位 Module+offset UIが綺麗※1, coverage overviewが 便利 有料(学割可)※2 IDA Pro 有料※2 0ffffffffh/dragondance Ghidra Pin DynamoRIO 無料※2 グラフの 色付け機能のみ ※1主観 ※2リバエンツールの値段 命令・BB単位のログしか取れない, Binary Ninjaのライセンスを所持 →lighthouseを採用

Slide 4

Slide 4 text

lighthouse:IDA Proのキャプチャ(READMEより) 4

Slide 5

Slide 5 text

lighthouse:IDA Proのキャプチャ(READMEより) 5 通った命令を色付け 通った命令を色付け 通った命令を色付け

Slide 6

Slide 6 text

lighthouse: Coverage Overview 6 ● 基本ブロック・命令単位で カバレッジを提示 ● 表をクリックすれば, 対応する関数にジャンプ ● 項目ごとのソート可

Slide 7

Slide 7 text

lighthouse 7 トレースツール以外のログ形式の対応 0x14000419c 0x1400041a0 0x1400045dc 0x1400045e1 0x1400045e2 ... boombox+3a06 boombox+3a09 boombox+3a0f boombox+3a15 ... 命令,基本ブロック単位 Module + オフセット 研究で活用

Slide 8

Slide 8 text

おわりに 8 ● lighthouseの「Coverage Overview」機能で 関数を選び,通ったブロックを効率的に調べられた ○ dragondanceにはない機能(あんたが作れ) ● 結果:通過したブロックの深さに,明確な差は見られなかった ○ →深さに対する有効性は見送り

Slide 9

Slide 9 text

おまけ:dragondance 9 ● 統計なし ● 通ったブロックは見れる ● Ghidara v10でインストール可能 ○ 正常に動作するか不明 https://youtu.be/3c6gm_ZrcX8