Pythonはリバースエンジニアやソフトウェアテスターといったセキュリティのプロにも人気の言語です。本書では、ハッキングツールやテクニックの概念を解説したうえで、Pythonを使ったバイナリ解析技法について詳しく解説します。読者は、独自デバッガの構築、バグを発見するためのツールの作り方、オープンソースのライブラリを活用した処理の自動化、商用ソフトとオープンソースのセキュリティツールを連動させる方法などについて学ぶことができるでしょう。日本語版では、本書をより深く理解するための補足情報とリバーシングに役立つツールについての解説を加筆しました。/ART/OF/REVERSINGシリーズ第1弾。
リバースエンジニアリング
―Pythonによるバイナリ解析技法
Justin Seitz 著、安藤 慶一 訳
- TOPICS
- Programming , Security , Python
- 発行年月日
- 2010年05月
- PRINT LENGTH
- 272
- ISBN
- 978-4-87311-448-4
- 原書
- Gray Hat Python
- FORMAT
- Print PDF
関連ファイル
正誤表
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
正誤表 - 2010年5月掲載(2刷以降は修正済み)
■P.5 12行目
- 【誤】http://pydev.sourceforge.net/updates/
- 【正】http://pydev.org/updates/
- 【誤】Size=287 Encoder=None http://metasploit.com */
- 【正】# Size=287 Encoder=None http://metasploit.com */
- 【誤】我々がバックドアである
- 【正】我らがバックドアである
- 【誤】右クリックしえ
- 【正】右クリックし
目次
序文 まえがき 1章 開発環境のセットアップ 1.1 本書で前提とするオペレーティングシステム 1.2 Python 2.5のインストール 1.2.1 PythonをWindowsにインストールする 1.2.2 PythonをLinuxにインストールする 1.3 EclipseとPyDevのセットアップ 1.3.1 ハッカーの最強の友:ctypes 1.3.2 動的リンクライブラリを使う 1.3.3 Cのデータ型を使う 1.3.4 パラメータを参照で渡す 1.3.5 構造体と共用体を定義する 2章 デバッガの基本原理 2.1 汎用レジスタ 2.2 スタック 2.3 デバッグイベント 2.4 ブレークポイント 2.4.1 ソフトウェアブレークポイント 2.4.2 ハードウェアブレークポイント 2.4.3 メモリブレークポイント 3章 Windowsデバッガの構築 3.1 デバッギーよ、汝はいずこ? 3.2 レジスタ状態の捕捉 3.2.1 スレッドを列挙する 3.2.2 デバッガを拡張する 3.3 デバッグイベントハンドラの実装 3.4 ブレークポイントは全能 3.4.1 ソフトウェアブレークポイント 3.4.2 ハードウェアブレークポイント 3.4.3 メモリブレークポイント 3.5 まとめ 4章 PyDbg―ピュアPythonのWindowsデバッガ 4.1 ブレークポイントハンドラの拡張 4.2 アクセス違反ハンドラ 4.3 プロセススナップショット 4.3.1 プロセススナップショットを取得する 4.3.2 PyDbgの各種機能を組み合わせる 5章 Immunity Debugger―両方の世界をまたにかけ 5.1 Immunity Debuggerのインストール 5.2 Immunity Debuggerの基礎 5.2.1 PyCommand 5.2.2 PyHook 5.3 エクスプロイトの開発 5.3.1 エクスプロイトに優しい命令を見つける 5.3.2 不都合な文字を調べる 5.3.3 WindowsのDEPを回避する 5.4 マルウェアのアンチデバッグルーチンを回避する 5.4.1 IsDebuggerPresent関数 5.4.2 プロセスの順次チェックを回避する 6章 フック 6.1 PyDbgによるソフトフック 6.2 Immunity Debuggerによるハードフック 7章 DLLインジェクションとコードインジェクション 7.1 リモートスレッド生成 7.1.1 DLLインジェクション 7.1.2 コードインジェクション 7.2 バックドアの作成 7.2.1 ファイルを隠す 7.2.2 バックドアを作る 7.2.3 py2exeでコンパイルする 8章 ファジング 8.1 バグクラス 8.1.1 バッファオーバフロー 8.1.2 整数オーバフロー 8.1.3 書式指定文字列攻撃 8.2 ファイルファザー 8.3 今後の課題 8.3.1 コードカバレッジ 8.3.2 自動静的解析 9章 Sulley 9.1 Sulleyのインストール 9.2 Sulleyプリミティブ 9.2.1 文字列 9.2.2 デリミタ 9.2.3 静的データとランダムデータ 9.2.4 バイナリデータ 9.2.5 整数 9.2.6 ブロックとグループ 9.3 SulleyでWarFTPDを破壊する 9.3.1 FTPの基礎 9.3.2 FTPプロトコルスケルトンを作成する 9.3.3 Sulleyセッション 9.3.4 ネットワークとプロセスを監視する 9.3.5 ファジングとSulley Webインタフェース 10章 Windowsドライバのファジング 10.1 ドライバとの通信 10.2 Immunity Debuggerによるドライバファジング 10.3 driverlib―ドライバ向け静的解析ツール 10.3.1 デバイス名を検出する 10.3.2 IOCTLディスパッチルーチンを見つける 10.3.3 IOCTLコードを調べる 10.4 ドライバファザーの作成 11章 IDAPython―IDA Proでのスクリプティング 11.1 IDAPythonのインストール 11.2 IDAPythonの関数 11.2.1 ユーティリティ関数 11.2.2 セグメント 11.2.3 関数 11.2.4 相互参照 11.2.5 デバッガフック 11.3 サンプルスクリプト 11.3.1 危険な関数への相互参照を検出する 11.3.2 関数カバレッジ 11.3.3 スタックサイズを求める 12章 PyEmu―スクリプティング対応のエミュレータ 12.1 PyEmuのインストール 12.2 PyEmuの概要 12.2.1 PyCPU 12.2.2 PyMemory 12.2.3 PyEmu 12.2.4 実行 12.2.5 メモリとレジスタの値へのアクセス 12.2.6 ハンドラ 12.3 IDAPyEmu 12.3.1 関数エミュレーション 12.4 PEPyEmu 12.4.1 実行ファイルパッカーについて 12.4.2 UPXパッカー 12.4.3 PEPyEmuによるアンパック 付録A 補足と追加情報(中津留 勇●株式会社ラック) A.1 補足 A.1.1 Windowsの基礎知識 A.1.2 Subversionによるソースファイルの取得 A.1.3 より新しいPythonを使用する A.2 その他のPython環境 A.2.1 setuptools A.2.2 IPython A.3 リバースエンジニアリングに役立つその他のPythonツール A.3.1 pefile A.3.2 PDFiD、pdf-parser 索引