rev,pwnに使うツール(弊研究室の某課題について考える3日目)

はじめに

この記事は弊研究室の某課題について考えるの3日目の記事です。

有名所が多いので詳しい使い方等は他の方の記事を見てください。この記事ではツールの存在を知ってもらうことを重要視します。

基本的にこの一連の記事ではobjdumpとgdb-pedaで進みます。

ツール紹介

使えるツール群の紹介

  • ltrace,strace
  • objdump
  • gdb,gdb-peda
  • radare2
  • IDA
  • ollydbg
  • pwntools
  • checksec
  • rp++

ltrace, strace

ltraceはライブラリ関数の動きを追跡するコマンド、straceはシステムコールの動きを追跡するコマンドです。

objdump

objdumpはオブジェクトファイルの情報を表示するコマンドです。

Man page of 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はgdbpythonで拡張したものとなります。

pedaはこちら

github.com

pedaを利用することによってブレークポイントにたどり着いたときにレジスタやスタックの表示等が行われるのですごく見やすくなります。EIPを奪えているのかも一目瞭然!!

使い方はここにあります。peda$ help allで全てのコマンドが見れます。

radare2

radare2はバイナリ解析ツールです。gdbと違い対応しているアーキテクチャが多いです。gdbで解析できないバイナリもradare2ではアセンブラが見えたりといったこともあります。

github.com

IDA

超有名な逆アセンブラ&逆コンパイラ

幅広いアーキテクチャに対応しており、関数の流れを図で見ることができます。

機能は制限されますが無償版も存在しており、無償版でも有用に使えます。いつかは私も買いたい

ollydbg

こっちはWindowsのexeファイルを解析するときに使うツール

ブレークポイント決めて動的にいろいろ試すこともできる、レジスタの中身とかも表示されてるので直感的に扱いやすい

Pwntools

これは実際にexploitコードを送り込むときに役立つツール。

いろいろと用意されているのでとっても便利。

checksec

バイナリを攻撃から防御する機構であるNXやRELRO,PIE, canaryといったものが有効であるか等を調べるシェルスクリプト

余談だがgdb-peadでもchecksecは用意されている

rp++

rp++はROPガジェットを見つけるツール

ropするときに使います。PE/Elfでも使えるという特徴がある

おしまい

とりあえずこんなところか、最初にも書いたけどこの一連の記事ではobjdumpとgdb-pedaが使えればだいたいなんとかなるはず。