書籍
書籍検索
近日発売 送料無料

エンジニア入門シリーズ

バイナリファイル解析ハンズオン
ツールだけに頼らない実践力レベルアップ

監修: 大塚 玲
著: 大坪 雄平
碓井 利宣
黒米 祐馬
竹迫 良範
羽田 大樹
萬谷 暢崇
三村 聡志
定価: 4,950円(本体4,500円+税)
判型: B5変形
ページ数: 496 ページ
ISBN: 978-4-910558-64-6
発売日: 2026/2/10
管理No: 162

発売前の予約注文を承っております


【目次】

第1章 Linux基礎・解析環境の準備

  1. 1.1 本章のはじめに
  2. 1.2 Linuxの基礎知識
    1. 1.2.1 Linuxとは
    2. 1.2.2 OSとは
    3. 1.2.3 ファイルシステム
    4. 1.2.4 CLI(Command Line Interface)
    5. 1.2.5 Ubuntuのパッケージ管理とソフトウェアインストール
  3. 1.3 バイナリファイル解析に使えるLinuxコマンド
    1. 1.3.1 コマンドの説明を表示する
    2. 1.3.2 ファイル・ディレクトリ操作
    3. 1.3.3 基本的な情報確認
    4. 1.3.4 テキストデータの表示
    5. 1.3.5 バイナリデータの表示
    6. 1.3.6 ファイル内の文字列の検索
    7. 1.3.7 実行可能ファイルの解析
    8. 1.3.8 エンコード/デコード
  4. 1.4 仮想環境を使った解析環境の準備
    1. 1.4.1 仮想環境とは
    2. 1.4.2 マルウェアを扱う際の注意点
    3. 1.4.3 VirtualBoxの準備
    4. 1.4.4 仮想マシンの準備
    5. 1.4.5 ゲストOSでのPython利用環境の準備
    6. 1.4.6 本書で紹介するプログラム等のダウンロード準備
    7. 1.4.7 解析に必要なその他のツールのインストール
    8. 1.4.8 ゲストOSのオフライン化
    9. 1.4.9 スナップショットの作成(解析前)
    10. 1.4.10 ゲストOSをクリーンな環境に戻す
  5. 1.5 WSL2を使った解析環境の構築
    1. 1.5.1 WSLとは
    2. 1.5.2 WSLの環境構築
    3. 1.5.3 WSLの仮想環境のメンテナンス
    4. 1.5.4 WSL環境でのDockerのセットアップ
  6. 1.6 本章のおわりに
  7. コラム:仮想環境を飛び越えるマルウェア

第2章 ファイルシステムとその構造

  1. 2.1 本章のはじめに
  2. 2.2 ファイルシステムの基本機能
    1. 2.2.1 ファイルによるデータアクセスの抽象化
    2. 2.2.2 ストレージの管理
    3. 2.2.3 高度なファイルシステムの機能
  3. 2.3 ファイルシステムの構造とデータ
    1. 2.3.1 FATとは
    2. 2.3.2 セクタとクラスタ
    3. 2.3.3 FATの構造
  4. 2.4 手を動かして実際のデータを確認しよう
    1. 2.4.1 事前準備および留意点
    2. 2.4.2 演習を行うディスクイメージの準備
    3. 2.4.3 予約領域を読む
    4. 2.4.4 第2クラスタの位置の計算
    5. 2.4.5 ルートディレクトリの保存場所
    6. 2.4.6 ディレクトリ情報のアクセス
    7. コラム:ビットフラグの読み方
    8. コラム:LinuxとWindowsの時差
    9. コラム:ディレクトリエントリとLFNの紐付け
    10. コラム:とても長いファイル名
    11. コラム:ファイルを削除してもデータはすぐに消えない
    12. 2.4.7 FATテーブルの割当て状況の確認
    13. 2.4.8 ファイルの中身にアクセスする
  5. 2.5 フォレンジックツールの利用
  6. 2.6 本章のおわりに

第3章 バイナリファイルの構造解析

  1. 3.1 本章のはじめに
  2. 3.2 デジタル・フォレンジック
  3. 3.3 デジタル・フォレンジックとバイナリファイルの構造解析
  4. 3.4 バイナリファイルのパーサー生成ツールKaitai Struct
  5. 3.5 Kaitai Structの実行環境のセットアップ
    1. 3.5.1 本章のプログラムと解析対象ファイルのダウンロード
    2. 3.5.2 Kaitai Struct compilerとPythonランタイムライブラリのインストール
    3. 3.5.3 Kaitai Struct visualizerのインストール
    4. 3.5.4 Kaitai Struct format libraryのダウンロード
  6. 3.6 Linuxのログイン履歴の解析
    1. 3.6.1 utmpファイルの構造
    2. コラム:utmpファイルの2038 年問題対応
    3. 3.6.2 utmpファイルに履歴を記録する処理
    4. 3.6.3 KSYファイルからの構造図の生成
    5. 3.6.4 KSYファイルによる構造の記述
    6. 3.6.5 utmpファイルを解析するPythonスクリプトの作成
    7. 3.6.6 出力の改良
  7. 3.7 Kaitai Struct visualizerによる構造解析
  8. 3.8 Kaitai Struct Web IDEによる構造解析
  9. 3.9 Linuxのログイン履歴の改ざん検知
    1. 3.9.1 改ざんを検知する方法
    2. 3.9.2 改ざんを検知するPythonスクリプトの作成
    3. 3.9.3 ログイン履歴の改ざん内容
  10. 3.10 本章のおわりに
  11. コラム:Kaitai Structを活用して開発しているバイナリファイル解析ツール

第4章 マルウェア解析

  1. 4.1 マルウェア解析と解析妨害
  2. 4.2 マルウェア解析の手法と手順
  3. 4.3 解析妨害の種類
    1. 4.3.1 静的解析に対する解析妨害
    2. 4.3.2 動的解析に対する解析妨害
    3. 4.3.3 解析回避の詳細
  4. 4.4 解析環境のセットアップ
    1. 4.4.1 本章のプログラムと検体のダウンロード
    2. 4.4.2 Fridaのセットアップ
    3. 4.4.3 angrのセットアップ
    4. 4.4.4 IDA Freeのセットアップ
    5. 4.4.5 解析対象の検体
  5. 4.5 動的バイナリ計装(DBI)
    1. 4.5.1 DBIとは
    2. 4.5.2 Frida によるDBI
    3. 4.5.3 FridaによるAPIトレース
    4. 4.5.4 Fridaによる命令トレース
  6. 4.6 シンボリック実行
    1. 4.6.1 シンボリック実行とは
    2. 4.6.2 angrによるシンボリック実行
    3. 4.6.3 angrによる解析妨害のトリガーの解析
  7. 4.7 Fridaによる解析妨害の迂回
  8. 4.8 VM難読化
    1. 4.8.1 解析対象の検体
    2. 4.8.2 VM難読化の解析の方針
    3. 4.8.3 VMの構成要素の解析
    4. 4.8.4 VMの命令セットの解析
    5. 4.8.5 参考:angrでの実行

第5章 ファジングによる脆弱性検出

  1. 5.1 脆弱性とは何か
  2. 5.2 ファジングとは何か
  3. 5.3 ファジングに対するよくある誤解
    1. 5.3.1 誤解1:ランダムなデータを投入するだけの手法である
    2. 5.3.2 誤解2:あらかじめ用意された入力パターンを総当たりで試すだけの手法である
    3. 5.3.3 誤解3:ファジングに任せれば脆弱性が自動的に見つかる
  4. 5.4 ファジングの前提条件
    1. 5.4.1 外部入力の受け取り機能
    2. 5.4.2 バグオラクル
  5. 5.5 ファジングの分類
    1. 5.5.1 内部情報の利用度合いによる分類
    2. 5.5.2 入力生成方法による分類
  6. 5.6 ファジングの実行サイクル
    1. 5.6.1 基本的な実行サイクル
    2. 5.6.2 手法による違い
  7. 5.7 ファジングの強みと制約
    1. 5.7.1 強み:実行型テストならではの利点
    2. 5.7.2 制約:計算資源の消費
  8. 5.8 AFL++の技術的背景
    1. 5.8.1 コード計装の仕組み
    2. 5.8.2 なぜエッジカバレッジなのか
    3. 5.8.3 Seed/Operator Scheduler
  9. 5.9 AFL++を動かしてみよう
    1. 5.9.1 演習環境のセットアップ
    2. 5.9.2 コード計装とテスト対象のコンパイル
    3. 5.9.3 初期シードの準備と戦略
    4. 5.9.4 AFL++の実行と監視
    5. 5.9.5 実行結果の詳細分析
    6. 5.9.6 ファジングの行き詰まり
  10. 5.10 Fuzz Blocker
    1. 5.10.1 マジックナンバー問題
    2. 5.10.2 チェックサム問題
    3. 5.10.3 状態変数問題
  11. 5.11 Fuzz Blockerを解決してみよう
    1. 5.11.1 マジックナンバー問題の解決
    2. 5.11.2 チェックサム問題の解決
    3. 5.11.3 状態変数問題の解決
  12. 5.12 Blackbox Fuzzingの課題とアプローチ
    1. 5.12.1 Blackbox Fuzzingの問題
    2. 5.12.2 Response-guided Blackbox Fuzzing
    3. 5.12.3 Shepherd
  13. 5.13 Shepherdを動かしてみよう
    1. 5.13.1 演習環境のセットアップ
  14. 5.14 まとめ
    1. 5.14.1 基本操作から問題解決まで
    2. 5.14.2 制約環境での対応
    3. 5.14.3 おわりに

第6章 何で動くの!?ヘンテコ実行ファイル

  1. 6.1 本章のはじめに
  2. 6.2 本章の演習の準備
  3. 6.3 演習0:実行できるのにデバッグできない?
    1. 6.3.1 フォーマット異常なのに実行できる謎
    2. 6.3.2 ELFヘッダーのレイアウトを調べる
    3. 6.3.3 ELFヘッダーを修正する
  4. 6.4 演習1:nop命令だけでHello World?
    1. 6.4.1 逆アセンブリでnop命令しか見えない謎
    2. 6.4.2 プログラムヘッダーとセクションヘッダーのレイアウトを調べる
    3. 6.4.3 セクションヘッダーを修正する
  5. 6.5 演習2:勝手にコードが実行される?
    1. 6.5.1 デコンパイルと実際の挙動がチグハグな謎
    2. 6.5.2 呼び出される関数が違う!
    3. 6.5.3 外部関数呼び出しの挙動を調べる
    4. 6.5.4 ツールが関数名を誤る理由を探る
    5. 6.5.5 再配置セクションを修正する
  6. 6.6 演習3:mov命令だけでROT13?
    1. 6.6.1 入出力処理も条件分岐も見えない謎
    2. 6.6.2 SIGSEGVの正体を調べる
    3. 6.6.3 ループ、条件分岐、文字シフトの実現方法を調べる
  7. 6.7 本章のおわりに
  8. コラム:レッドチームによる攻撃者視点でのセキュリティ向上の取り組み

第7章 AIエージェントを自作してみよう

  1. 7.1 本章のはじめに
  2. 7.2 AIエージェント構築に必要な基礎知識
    1. 7.2.1 LLM/SLMとは
    2. 7.2.2 拡張言語モデル:外部ツールと連携するLLM
    3. 7.2.3 AIエージェントとは
  3. 7.3 AIエージェントの構成
  4. 7.4 事前準備
    1. 7.4.1 LLMサーバーの準備
    2. コラム:LM Studioのハードウェア動作確認状況
    3. コラム:LM Studioの更新履歴と注意点
    4. 7.4.2 解析用PCの準備
    5. 7.4.3 AIエージェントサンプルプログラムの動作確認
    6. 7.4.4 AIエージェントサンプルプログラム概説
  5. 7.5 実装:基本機能の拡張と特殊コマンドの実装
    1. 7.5.1 システムプロンプトの修正
    2. コラム:プロンプトインジェクション攻撃
    3. 7.5.2 インタラクティブなプロンプト入力
    4. 7.5.3 LLMモデルの使い分けとMarkdown形式に対応したストリーミング出力
    5. コラム:本章で出てくるLLMモデルの紹介
    6. 7.5.4 特殊コマンド「help」:AIエージェント機能の(自動)説明
    7. 7.5.5 特殊コマンド「!」:任意のコマンドを実行その1:単純実行
    8. 7.5.6 特殊コマンド「?」:ツールを使用しないことを明示したLLMへの問い合わせ.
    9. 7.5.7 特殊コマンド「!!」:任意のコマンドを実行その1:コマンドの自動生成
    10. 7.5.8 特殊コマンド「hint」:ヒント表示機能の追加
    11. 7.5.9 特殊コマンド「report」:解析状況の整理
    12. 7.5.10 便利な機能:その他の便利な機能の追加
  6. 7.6 外部ツール実行履歴の表示
  7. 7.7 外部ツールの追加の練習:作業ディレクトリの変更
  8. 7.8 実践:CTFを解きながらAIエージェントの拡張
    1. 7.8.1 7.8より前のAIエージェントでの解析例
    2. 7.8.2 QRコードの読み込み
    3. 7.8.3 ROT13
    4. 7.8.4 Base64
    5. 7.8.5 実践問題:外部ツール破損したZIPファイルの復元機能の実装
  9. 7.9 おまけ:マルチモーダルLLM対応
    1. 7.9.1 AIエージェントへの実装
    2. 7.9.2 実行例
  10. 7.10 AIエージェントで他の章の課題にチャレンジ
    1. 7.10.1 第3章の場合
    2. 7.10.2 第6章の場合
    3. 7.11 本章のおわりに
    4. コラム:本章のAIエージェントの脆弱性を見つけてみよう

付録

【参考文献】

【口コミ】

  • ※口コミはありません。
ページトップへ戻る