極楽せきゅあブログ

ときどきセキュリティ

ファジング(Coming Soon!)

毎コミさんのサイトに目次情報出てますねー。こちらにも転載しとこっと。
http://book.mycom.co.jp/book/978-4-8399-2629-8/978-4-8399-2629-8.shtml

日本語版に寄せて
監訳者序文
刊行に寄せて
序文

第I部 バックグラウンド
 第1章 脆弱性の発見手法
  1.1 ホワイトボックステスト
   1.1.1 ソースコードレビュー
   1.1.2 ツールと自動化
   1.1.3 長所と短所
  1.2 ブラックボックステスト
   1.2.1 手動テスト
   1.2.2 自動テスト(=ファジング)
   1.2.3 長所と短所
  1.3 グレーボックステスト
   1.3.1 バイナリ監査
   1.3.2 自動バイナリ監査
   1.3.3 長所と短所
  1.4 まとめ
 第2章 ファジングとは?
  2.1 ファジングの定義
  2.2 ファジングの歴史
  2.3 ファジングのフェーズ
  2.4 ファジングの限界
   2.4.1 アクセス制御の欠陥
   2.4.2 粗悪な設計ロジック
   2.4.3 バックドア
   2.4.4 メモリ破壊
   2.4.5 多段階の脆弱性
  2.5 まとめ
 第3章 ファジングの手法とファズツールの種類
  3.1 ファジングの手法
   3.1.1 テストケースの事前生成
   3.1.2 ランダム
   3.1.3 手動のプロトコル突然変異テスト
   3.1.4 突然変異またはブルートフォースのテスト
   3.1.5 自動プロトコル生成テスト
  3.2 ファズツールの種類
   3.2.1 ローカルなファズツール
   3.2.2 リモートのファズツール
   3.2.3 メモリ内ファズツール
   3.2.4 ファジングフレームワーク
  3.3 まとめ
 第4章 データの表現と分析
  4.1 プロトコルとは?
  4.2 プロトコルのフィールド
  4.3 プレーンテキストプロトコル
  4.4 バイナリプロトコル
  4.5 ネットワークプロトコル
  4.6 ファイル形式
  4.7 よくあるプロトコル要素
   4.7.1 名前−値のペア
   4.7.2 ブロック識別子
   4.7.3 ブロックサイズ
   4.7.4 チェックサム
  4.8 まとめ
 第5章 効果的なファジングの要件
  5.1 再生産性と文書化
  5.2 再利用性
  5.3 プロセスの状態とプロセスの深度
  5.4 コード網羅率
  5.5 エラー検出
  5.6 リソースの制約条件
  5.7 まとめ

第II部 ターゲットと自動化
 第6章 自動化とデータ生成
  6.1 自動化の価値
  6.2 役立つツールとライブラリ
   6.2.1 Ethereal/Wireshark
   6.2.2 libdasmとlibdisasm
   6.2.3 Libnet/LibnetNT
   6.2.4 LibPCAP
   6.2.5 Metro Packet Library
   6.2.6 PTrace
   6.2.7 Pythonの拡張
  6.3 プログラミング言語の選択
  6.4 データの生成とファズヒューリスティック
   6.4.1 整数値
   6.4.2 文字列の反復
   6.4.3 フィールド区切り文字
   6.4.4 書式文字列
   6.4.5 文字変換
   6.4.6 ディレクトリトラバーサル
   6.4.7 コマンドインジェクション
  6.5 まとめ
 第7章 コマンドライン引数と環境変数のファジング
  7.1 ローカルなファジングの概論
   7.1.1 コマンドライン引数
   7.1.2 環境変数
  7.2 ローカルなファジングの原則
  7.3 ターゲットの特定
   7.3.1 UNIXのファイルパーミッション
  7.4 ローカルなファジング手法
  7.5 環境変数の列挙
   7.5.1 GDB手法
  7.6 環境変数のファジングの自動化
   7.6.1 ライブラリのプレロード
  7.7 問題点の検出
  7.8 まとめ
 第8章 コマンドライン引数と環境変数のファジング:自動化
  8.1 iFUZZローカルファジングルールの特徴
  8.2 開発
   8.2.1 開発アプローチ
  8.3 言語
  8.4 ケーススタディ
  8.5 利点と改良の余地
  8.6 まとめ
 第9章 WebアプリケーションとWebサーバのファジング
  9.1 Webアプリケーションのファジングとは?
  9.2 ターゲット
  9.3 ファジングの手法
   9.3.1 ターゲットのセットアップ
   9.3.2 入力ベクトルの選択
  9.4 脆弱性
  9.5 検出
  9.6 まとめ
 第10章 WebアプリケーションとWebサーバのファジング:自動化
  10.1 Webアプリケーションのファズツール
  10.2 機能性
   10.2.1 リクエス
   10.2.2 ファズ変数
   10.2.3 レスポンス
  10.3 必要なバックグラウンド情報
   10.3.1 リクエストの認識
   10.3.2 検出
  10.4 開発
   10.4.1 アプローチ
   10.4.2 言語の選択
   10.4.3 設計
  10.5 ケーススタディ
   10.5.1 ディレクトリトラバーサル
   10.5.2 オーバーフロー
   10.5.3 SQLインジェクション
   10.5.4 XSS
  10.6 利点と改良の余地
  10.7 まとめ
 第11章 ファイル形式のファジング
  11.1 ターゲット
  11.2 ファジング手法
   11.2.1 ブルートフォース −− 突然変異ベースのファジング
   11.2.2 インテリジェントなブルートフォース −− 新規生成ベースのファジング
  11.3 入力ベクトルの選択
  11.4 脆弱性
   11.4.1 DoS
   11.4.2 整数処理問題
   11.4.3 単純なスタック/ヒープオーバーフロー
   11.4.4 論理エラー
   11.4.5 書式文字列
   11.4.6 競合状態
  11.5 検出
  11.6 まとめ
 第12章 ファイル形式のファジング:UNIXでの自動化
  12.1 notSPIKEfileとSPIKEfile
   12.1.1 不足機能
  12.2 開発アプローチ
   12.2.1 例外検出エンジン
   12.2.2 例外報告(例外検出)
   12.2.3 コアファジングエンジン
  12.3 重要なコード部分
   12.3.1 重要なUNIXシグナルと重要でないUNIXシグナル
  12.4 ゾンビプロセス
  12.5 利用上の注意
   12.5.1 Adobe Acrobat
   12.5.2 RealNetworks RealPlayer
  12.6 ケーススタディRealPlayer RealPixの書式文字列の脆弱性
  12.7 言語の選択
  12.8 まとめ
 第13章 ファイル形式のファジング:Windowsでの自動化
  13.1 Windowsのファイル形式の脆弱性
  13.2 機能性
   13.2.1 ファイルの作成
   13.2.2 アプリケーションの実行
   13.2.3 例外の検出
   13.2.4 監査の定義の保存
  13.3 必要なバックグラウンド情報
   13.3.1 ターゲットの特定
  13.4 開発
   13.4.1 目標
   13.4.2 言語の選択
   13.4.3 設計
  13.5 ケーススタディ
  13.6 利点と改良の余地
  13.7 まとめ
 第14章 ネットワークプロトコルのファジング
  14.1 ネットワークプロトコルのファジングとは?
  14.2 ターゲット
   14.2.1 第2層:データリンク層
   14.2.2 第3層:ネットワーク層
   14.2.3 第4層:トランスポート層
   14.2.4 第5層:セッション層
   14.2.5 第6層:プレゼンテーション層
   14.2.6 第7層:アプリケーション層
  14.3 ファジングの手法
   14.3.1 ブルートフォース −− 突然変異ベースのファジング
   14.3.2 インテリジェントなブルートフォース −− 新規生成ベースのファジング
   14.3.3 クライアントへのファズツールの組み込み
  14.4 欠陥の検出
   14.4.1 手動(デバッガベース)
   14.4.2 自動(エージェントベース)
   14.4.3 他の情報ソース
  14.5 まとめ
 第15章 ネットワークプロトコルのファジング:UNIXでの自動化
  15.1 SPIKEを使ったファジング
   15.1.1 ターゲットの選択
   15.1.2 プロトコルリバーシング
  15.2 SPIKEの基礎
   15.2.1 ファジングエンジン
   15.2.2 汎用ラインベースTCPファズツール
  15.3 ブロックベースのプロトコルのモデル化
  15.4 SPIKEの追加機能
   15.4.1 特定プロトコルのファズツール
   15.4.2 特定プロトコルのファズスクリプト
   15.4.3 スクリプトベースの汎用ファズツール
  15.5 SPIKE NMAPファズツールのスクリプトの記述
  15.6 まとめ
 第16章 ネットワークプロトコルのファジング:Windowsでの自動化
  16.1 機能性
   16.1.1 パケットの構造
   16.1.2 データのキャプチャ
   16.1.3 データの解析
   16.1.4 ファズ変数
   16.1.5 データの送信
  16.2 必要なバックグラウンド情報
   16.2.1 検出
   16.2.2 プロトコルドライバ
  16.3 開発
   16.3.1 言語の選択
   16.3.2 パケットキャプチャライブラリ
   16.3.3 設計
  16.4 ケーススタディ
  16.5 利点と改良の余地
  16.6 まとめ
 第17章 Webブラウザのファジング
  17.1 Webブラウザのファジングとは?
  17.2 ターゲット
  17.3 ファジングの手法
   17.3.1 アプローチ
   17.3.2 入力ベクトルの選択
  17.4 脆弱性
  17.5 検出
  17.6 まとめ
 第18章 Webブラウザのファジング:自動化
  18.1 COMの背景
   18.1.1 簡単な歴史
   18.1.2 オブジェクトとインターフェイス
   18.1.3 ActiveX
  18.2 ファズツールの開発
   18.2.1 ロードできるActiveXコントロールの列挙
   18.2.2 プロパティ、メソッド、パラメータ、型
   18.2.3 ファジングと監視
  18.3 まとめ
 第19章 メモリ内ファジング
  19.1 メモリ内ファジングとは?
  19.2 必要なバックグラウンド情報
  19.3 改めて、メモリ内ファジングとは?
  19.4 ターゲット
  19.5 MLI手法
  19.6 SRM手法
  19.7 テストのスピードとプロセスの深度
  19.8 欠陥の検出
  19.9 まとめ
 第20章 メモリ内ファジング:自動化
  20.1 必要な機能
  20.2 言語の選択
  20.3 WindowsデバッギングAPI
  20.4 混乱からの脱出
   20.4.1 プロセスの特定ポイントへのフック方法
   20.4.2 プロセスのスナップショット方法/リストア方法
   20.4.3 フックポイントの選択方法
   20.4.4 ターゲットメモリ空間の特定方法
  20.5 我が友、PyDbg
  20.6 わざとらしい事例
  20.7 まとめ

第III部 高度なファジングテクノロジー
 第21章 ファジングフレームワーク
  21.1 ファジングフレームワークとは?
  21.2 既存のフレームワーク
   21.2.1 antiparser
   21.2.2 Dfuz
   21.2.3 SPIKE
   21.2.4 Peach
   21.2.5 GPF
   21.2.6 Autodafe
  21.3 カスタムファズツールのケーススタディShockwave Flash
   21.3.1 SWFファイルのモデル化
   21.3.2 有効なデータの生成
   21.3.3 ファジング環境
   21.3.4 テストのアプローチ
  21.4 ファジングフレームワーク「Sulley」
   21.4.1 Sulleyのディレクトリ構造
   21.4.2 データ表現
   21.4.3 セッション
   21.4.4 事後分析
   21.4.5 Sulleyの利用事例
  21.5 まとめ
 第22章 プロトコル自動分析
  22.1 ファジングのハードル
  22.2 ヒューリスティックな技術
   22.2.1 プロキシファジング
   22.2.2 プロキシファジングの改善
   22.2.3 ディスアセンブリヒューリスティック
  22.3 生物情報学
  22.4 遺伝的アルゴリズム
  22.5 まとめ
 第23章 ファズツールのトラッキング
  23.1 トラッキングの定義
  23.2 バイナリの視覚化と基本ブロック
   23.2.1 CFG
   23.2.2 CFGの具体例
  23.3 ファズツールトラッカの設計
   23.3.1 プロファイリング
   23.3.2 トラッキング
   23.3.3 相互参照
  23.4 PStalker網羅率計測ツール
   23.4.1 PStalkerの画面レイアウト
   23.4.2 [Data Sources(データソース)]ペイン
   23.4.3 [Data Exploration(データの探査)]ペイン
   23.4.4 [Data Capture(データキャプチャ)]ペイン
   23.4.5 PStalkerの限界
   23.4.6 データストレージ
  23.5 ケーススタディ
   23.5.1 戦略
   23.5.2 具体的戦法
  23.6 利点と改良の余地
   23.6.1 将来の改善
  23.7 まとめ
 第24章 インテリジェントな欠陥検出
  24.1 初歩的な欠陥検出
  24.2 検出したい対象
  24.3 ファズ値の選択における注意点
  24.4 デバッガによる自動監視
   24.4.1 基本的なデバッガモニタ
   24.4.2 より高度なデバッガモニタ
  24.5 最初の例外 vs. 最後の例外
  24.6 DBI
  24.7 まとめ

第IV部 未来に向けて
 第25章 教訓
  25.1 SDLC
   25.1.1 分析
   25.1.2 設計
   25.1.3 コーディング
   25.1.4 テスト
   25.1.5 維持管理
   25.1.6 SDLCにおけるファジングの実装
  25.2 開発者
  25.3 QAチーム
  25.4 セキュリティ研究者
  25.5 まとめ
 第26章 ファジングの未来
  26.1 商用ツール
   26.1.1 beSTORM(Beyond Security)
   26.1.2 BPS-1000(BreakingPoint Systems)
   26.1.3 Codenomicon
   26.1.4 ProtoVer Professional(GLEG)
   26.1.5 Mu-4000(Mu Security)
   26.1.6 Holodeck(Security Innovation)
  26.2 脆弱性発見のハイブリッドなアプローチ
  26.3 統合テストプラットフォーム
  26.4 まとめ

索引
監訳者・訳者紹介

うはー、テラ長え(笑)。

ファジング:ブルートフォースによる脆弱性発見手法

ファジング:ブルートフォースによる脆弱性発見手法