リバースエンジニアリング

Pythonによるバイナリ解析技法

3,520円
Ebook Storeで電子版を購入:
価格3,520円
カートに入れる

内容

Pythonはリバースエンジニアやソフトウェアテスターといったセキュリティのプロにも人気の言語です。本書では、ハッキングツールやテクニックの概念を解説したうえで、Pythonを使ったバイナリ解析技法について詳しく解説します。読者は、独自デバッガの構築、バグを発見するためのツールの作り方、オープンソースのライブラリを活用した処理の自動化、商用ソフトとオープンソースのセキュリティツールを連動させる方法などについて学ぶことができるでしょう。日本語版では、本書をより深く理解するための補足情報とリバーシングに役立つツールについての解説を加筆しました。/ART/OF/REVERSINGシリーズ第1弾。

関連書籍

目次

序文
まえがき
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
索引

正誤表

関連ファイル