読者です 読者をやめる 読者になる 読者になる

Pwn De Ring

初心者がPwnを勉強していくために使っている標準出力先です。

PwnやReversingに使えそうなデバッガ紹介

ところで,クリスマス・イブといえばPwnやReversingなどバイナリを読みたくなる日です. なので本日のバイナリ日和をより良いものにするために,CTF Advent Calendar2016の空いている10日の記事を書きました.

Pwnにおけるデバッガ

Pwnにおいて,逆アセンブルで静的解析するだけではなくレジスタやスタック,ヒープの値を動的に観察することによって気づく脆弱性もある.そのためバイナリを動的解析するツールはとても重要である.今回は,デバッグツールについていろいろな物がある(とTwitter上で教えていただいた)ので参考までに一言紹介を交えまとめてみた.

gdb

GDB: The GNU Project Debugger
いわずと知れた超有名デバッガ.CTF問わず使えるとC言語の課題などでよくわからないバグとかの解析ができるので便利かも.使ったことがない方は,ももテクさんの記事gdbの使い方のメモ - ももいろテクノロジーの一読をおすすめする.

gdb-peda

GitHub - longld/peda: PEDA - Python Exploit Development Assistance for GDB
gdbを知ったCTFerが次に使うであろうPythonによる拡張機能が加わった高性能なgdbレジスタやスタック,PC付近の逆アセンブル表示などgdbより遥かに使いやすい,通常利用でもgdbよりこちらを使うべきではないかと思う.弱点は対応アーキテクチャx86,x86_64だけというところだと思っていたが,ARMに対応させるプラグイン GitHub - alset0326/peda-arm: GDB plugin peda for armもあるらしい. * 追記 GitHub - Charo-IT/peda_extension: Extension for PEDA

pwndbg

GitHub - pwndbg/pwndbg: Makes debugging suck less
まさにpwnのために作られたデバッガ.見た目もpedaっぽい感じ.

Pwngdb

GitHub - scwuaptx/Pwngdb: gdb for pwn
上と名前が似ているが別物.組み込まれているangelheapというheap可視化機能はわりと便利でpedaに組み込ませて使っている.

gef

GitHub - hugsy/gef: Multi-Architecture GDB Enhanced Features for Exploiters & Reverse-Engineers

ReversingやExploitのために作られたデバッガ.マルチアーキテクチャ(x86(64), ARM, AARCH64, MIPS, PowerPC, SPARCなど)に対応しているのが,とても強み.筆者がこれから乗り移ろうとしているデバッガ.個人的にはレジスタの値などが横にならんで表示されているのが良いが,関数の呼び出し時に引数が何かという表示がされていないのは少し残念.

heapinfo

GitHub - david942j/heapinfo: create an interactive memory info interface while pwn / exploiting
irbみたいな感じのheap関連のデバッガ.とりわけこれ単体で利用するかと言われたら微妙だけれどRubyでExploitを書いている筆者などからすると,うまく組み込めたら便利ではないかと思う.関連のツールとしてRuby用のpwntools GitHub - peter50216/pwntools-rubyがあり発展に期待している.

終わりに

正直CTF Advent Calendar2016の空いている日を埋めたいがために書いた記事なので中身がないのは許してほしい. しかし,とりわけデバッガについてまとめている記事などはなかったと思うので参考になれば幸いです. もっと面白いデバッガやプラグイン系があったら教えていただけると嬉しい.