2012年1月12日木曜日

[英⇒日]エクスプロイト開発:ファジングからバッファオーバーフローへPart 1

 (元サイト:Exploit Development: From Fuzzing to BOF Part 1 )

複数パートのブログ投稿にわけて、ステップバイステップのアプローチで、脆弱なアプリケーションにおけるスタックベースのバッファオーバーフローにせまっていきましょう。

Part 1:
x86のアセンブリコードのリンク
動画:Ollydbgの簡単な概要、exeファイルを開く、フレーム&列の説明、ステッピング、ブレークポイントの割り当て、一つをトリガーにする。
ファジングって何?

Part 2:
spike fuzzerの使い方
Spike scripting, fuzzed protocol
動画:Spikeを使用して、脆弱なアプリケーションをファジング

Part 3:
動画:脆弱性を実演する
スタックオーバーフローを理解する

Part 4:
オフセットを探り出す
コードをつかうための場所を見つける
動画:コードへのリダイレクト実行

Part 5:
動画:エクスプロイトにシェルコードを追加する

Part 1:

このチュートリアルでは、Windows XPのVMを使用することになります。このチュートリアルでは、5つの事項が必要になります。
1. Windowsの一部のバージョン。XPであればなお良い。Vistaまたは7を使用する場合には、アプリケーションの互換性設定を調整する必要があります。
2. Vulnserver、脆弱なアプリケーション: Vulnserver
3. Ollydbg、32ビットアセンブリデバッガ: Ollydbg 1.10
4. :Perlは、私は、ActiveStateのPerlをお勧めにActiveState Perlを
5. ブレークポイントのperlのスクリプトをダウンロード: Breakpoint.pl

Ollydbg Intro Video:


Exploit Development: Part 1 Basic Ollydbg from Eph on Vimeo.

ビデオで使用される用語の説明:
  • Step In, Step Out(F8):これをつかうと、他のセクションへの呼び出しあるいはジャンプが無くても、コードをウォークスルーすることができます。ステップが踏まれるときに、スタックやレジスタへの変更を通知できます
  • CALL命令は、コードの実行を、メモリの別の部分にリダイレクトします
  • Step into(F7):これは、ちょうど踏もうとしていたステップの代わりに、メモリアドレスの実行コードへたどります。
  • Breakpoints:ブレークポイントを設定すると、特定のポイントでコードの実行を停止することができます

Notes:
  • アニメーションを使用するとき、F8またはF7キーを繰り返し押すのに代わる方法があります。CTRL + F8またはCtrl + F7を使用すると、プロセスを自動で進められます。アニメーションを停止したい場合はESCを押してください。

パート2に進む前に、アセンブリ言語の基礎を固めておくとよいでしょう。このテーマにおいては、非常に多くの書籍、サイト、およびフリーの情報源があり、私があれこれ教えるつもりはありません。


始めるのに役立ついくつかのリンクは以下のとおりです:
The Art of Assembly Language
Security Tube: Assembly Primer for Hackers


ファジングって何ですか?
ファジングとは、アプリケーションの欠陥を見つけるために、ランダムなデータ"fuzz"を使用して、プログラムの入力に対して自動テストを行うことです。我々がすぐにファジングに飛び込まない理由は、そのまえにエラーを検出する方法を理解しておく必要があるからです。


ファジングには主に2つ種類があります、 Mutation と Generationです。それについてはこちらで読むことができます: Analysis of Mutation and Generation-Based Fuzzing


パート2ではファジングのテクニックの練習として、vulnserverアプリケーションの脆弱性を特定していきましょう。

0 件のコメント:

コメントを投稿