rev,pwnに使うツール(弊研究室の某課題について考える3日目)
はじめに
この記事は弊研究室の某課題について考えるの3日目の記事です。
有名所が多いので詳しい使い方等は他の方の記事を見てください。この記事ではツールの存在を知ってもらうことを重要視します。
基本的にこの一連の記事ではobjdumpとgdb-pedaで進みます。
ツール紹介
使えるツール群の紹介
ltrace, strace
ltraceはライブラリ関数の動きを追跡するコマンド、straceはシステムコールの動きを追跡するコマンドです。
objdump
objdumpはオブジェクトファイルの情報を表示するコマンドです。
よく使うのは
$ objdump -d -M intel ./program
これでIntel記法のアセンブラを読むことができます。またret2pltの攻撃方法で必要となるpltも調べられます。その時は
$ objdump -d -M inlte -j .plt ./program
objdumpの結果からgrepしてる人もいますが、こっちのほうがスマート
gdb, gdb-peda
gdbとはelfバイナリの解析に使うソフトウェアです。実際にプログラムを動かしながら確認のできる動的デバッガツールとして優秀です。
gdb-pedaはgdbをpythonで拡張したものとなります。
pedaはこちら
pedaを利用することによってブレークポイントにたどり着いたときにレジスタやスタックの表示等が行われるのですごく見やすくなります。EIPを奪えているのかも一目瞭然!!
使い方はここにあります。peda$ help all
で全てのコマンドが見れます。
radare2
radare2はバイナリ解析ツールです。gdbと違い対応しているアーキテクチャが多いです。gdbで解析できないバイナリもradare2ではアセンブラが見えたりといったこともあります。
IDA
幅広いアーキテクチャに対応しており、関数の流れを図で見ることができます。
機能は制限されますが無償版も存在しており、無償版でも有用に使えます。いつかは私も買いたい
ollydbg
こっちはWindowsのexeファイルを解析するときに使うツール
ブレークポイント決めて動的にいろいろ試すこともできる、レジスタの中身とかも表示されてるので直感的に扱いやすい
Pwntools
これは実際にexploitコードを送り込むときに役立つツール。
いろいろと用意されているのでとっても便利。
checksec
バイナリを攻撃から防御する機構であるNXやRELRO,PIE, canaryといったものが有効であるか等を調べるシェルスクリプト
余談だがgdb-peadでもchecksecは用意されている
rp++
rp++はROPガジェットを見つけるツール
ropするときに使います。PE/Elfでも使えるという特徴がある
おしまい
とりあえずこんなところか、最初にも書いたけどこの一連の記事ではobjdumpとgdb-pedaが使えればだいたいなんとかなるはず。