
証拠重視のマルウェアリバースエンジニアリング。PE/.NETの詳細な検査、Ghidraによる再構築、AIによるクロスチェック、YARA、ELFデバッグに対応。
AIDebug は、証拠に焦点を当てたマルウェアリバースエンジニアリング用のCLIおよびターミナルUIです。 決定的なオフライン・トリアージ、ファイル全体の16進数検査、詳細なPE構造分析、Capstone逆アセンブリ、Ghidra再構築、オプションのLLMクロスチェック、ローカルELFデバッグ、コンパイル済み学習演習、およびアナリストレビュー用レポートを組み合わせています。
現在のソースバージョン: AIDebug 3.1.0。詳細は 3.1.0 リリースノート を参照してください。
最新の不変の公開リリースは引き続き
AIDebug v3.0.0 であり、
1200km-aidebug として利用可能です。
バージョン一致の3.1.0タグとGitHubリリースが検証済み公開ワークフローを完了するまで、この状態が続きます。
PyPIから安定版パッケージをインストールします:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install 1200km-aidebug==3.0.0
aidebug --version
必要に応じてオプション機能をインストールします:
# リモート/ローカルLLMプロバイダーと検証済みYARA生成
python -m pip install "1200km-aidebug[ai]==3.0.0"
# Frida動的計装
python -m pip install "1200km-aidebug[dynamic]==3.0.0"
# すべてのオプションPython統合
python -m pip install "1200km-aidebug[all]==3.0.0"
開発用:
git clone https://github.com/anpa1200/AIDebug.git
cd AIDebug
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev,dynamic]"
Ghidra、GDB、Bubblewrap、Cコンパイラ、Fridaターゲットコンポーネントは外部ツールであり、それらを必要とするワークフローでのみ使用されます。
メインのターミナルインターフェースでPEまたはELFサンプルを開きます:
aidebug --binary /path/to/sample.exe --offline
フルスクリーンUIなしで決定的分析を実行し、証拠をエクスポートします:
aidebug --binary /path/to/sample.exe \
--offline --no-tui --report --json-export --yara \
--out-dir reports/
Ghidra再構築を使用します:
aidebug --binary /path/to/sample.exe --offline --no-tui --decompile
aidebug --binary /path/to/sample.exe --offline --no-tui \
--decompile-all reports/sample-reconstruction.c
一時的な非実行ELFアーティファクトを通じて1つのC翻訳単位を分析します:
aidebug --source /path/to/example.c --offline --no-tui
ファイル名拡張子に依存せずに任意のファイルを識別します:
aidebug --identify /path/to/renamed-or-unknown-file --offline
--identify は、宣言されたタイプ、MIMEタイプ、一般的な拡張子、信頼度、メソッド、証拠、SHA-256、サイズを含む構造化JSONを報告します。決定的なカバレッジには、一般的な実行可能ファイルおよびバイトコード形式、アーカイブとディスクイメージ、Office/OpenDocument/EPUBコンテナ、ドキュメント、画像、音声/動画、パケットキャプチャ、データベース、レジストリ/イベントログアーティファクト、スクリプト、テキストが含まれます。ZIPベースの形式は、境界付きメンバー名と小さなメタデータ読み取りによって検査されます。ファイルが実行または抽出されることはありません。
追加のシグネチャについては、python-magic とオペレーティングシステムの libmagic データベースをインストールします:
python -m pip install python-magic
決定的なシグネチャ、構造、またはテキストルールが一致しない場合、設定済みのAIプロバイダーが境界付きメタデータ(拡張子、サイズ、SHA-256、最大96バイトのヘッダー、32バイトのテール、サンプルエントロピー、NUL比率)から候補を推測する場合があります。ファイル本体、抽出された文字列、ファイルシステムパスは送信されません。AIのみの結果は ai-inference とラベル付けされ、信頼度は60%に制限され、アナリストの検証が必要です。--offline を使用してフォールバックを完全に無効にします。未解決のタイプは Unknown として終了ステータス2で報告されます。
メインのターミナルインターフェースで S を押すか、ワークスペースで直接開始します:
aidebug --binary /path/to/sample.exe --offline --strings
ワークスペースは、ファイルオフセット、利用可能な場合はマッピング済みアドレス、エンコーディング、バイトおよび文字長、重複出現情報、セクションコンテキスト、信頼度、トリアージスコア、各分類の決定的な理由を保持します。フィルタは、最小長、エンコーディング、カテゴリ、フリーテキスト検索をカバーします。列の並べ替えとページネーションにより、大規模なインベントリを扱いやすくします。選択された各エンコーディングは、サイズ境界付きアーティファクト全体をスキャンします。保持されるインベントリは25,000レコード、値ごとに表示される文字数は4,096文字に制限されます。正確な候補/省略数と完全なバイトカバレッジにより、どちらの上限も可視化されます。各レコードは最大32個のDLL/API注釈と4,096文字の説明を保持します。敵対的なオーバーフローはレコードの理由に報告されます。
検出はマルチラベルです。単一の値が、DLL、Windowsパス、URL、IPアドレス、レジストリキー、コマンド、PowerShellフラグメント、名前付きパイプ、ハッシュ、資格情報候補、ユーザーエージェント、またはその他のサポートされている証拠タイプを同時に示すことができます。ドメイン候補はIDNA正規化され、パッケージ化されたオフラインIANAルートゾーンスナップショットと照合されます。IPアドレスは完全な有効なトークンを占める必要があり、構成割り当ては保守的なフルライン文法と一致する必要があります。これにより、ドット、コロン、等号が含まれているという理由だけで短いバイナリフラグメントが昇格するのを防ぎます。関連するラベルは1つの信頼度ファミリーを共有するため、ip_address と ipv6 が2つの独立した観測として扱われることはありません。既知のDLLとAPIには短い中立的な機能説明が提供されます。未知の名前には、推測された目的ではなく、明示的な未検証フォールバックが提供されます。抽出された名前は存在の証拠であり、コードがそれを呼び出したことやサンプルが悪意があることの証明ではありません。
決定的なインベントリをローカルに印刷するか、表示されるCLIビューをフィルタリングするか、正規の完全なインベントリを所有者のみのJSONとして書き出します:
aidebug --binary /path/to/sample.exe --strings --no-tui
aidebug --binary /path/to/sample.exe --strings --no-tui \
--string-encoding ascii --min-string-length 6 --string-category url
aidebug --binary /path/to/sample.exe --strings --no-tui \
--strings-output reports/sample-strings.json
AI文字列レビューは別のオプトインアクションです。ワークスペース内で A を押してプライバシー/コスト警告を確認するか、CLIモードで明示的に要求します:
aidebug --binary /path/to/sample.exe --strings --no-tui \
--analyze-strings --accept-ai-cost \
--strings-output reports/sample-strings-ai.json
保持された各文字列には安定した証拠IDが割り当てられます。明示的な確認後、AIパスは保持されたすべてのレコードを決定的な境界付きチャンクにわたって計画します。プロバイダーまたは検証の失敗は安全に停止し、可視のまま残ります。応答は、提供されたすべてのIDを説明し、受け入れられる前に厳格なローカルスキーマ、列挙、参照、IOCグラウンディング検証に合格する必要があります。最終的なリデューサーは、生のインベントリではなく検証済みの検出結果を参照します。抽出制限、失敗したバッチ、レビュー済み/送信済みカウントは常に報告されます。不完全なカバレッジは、全体的な評価を unknown に強制します。文字列にはパスワード、APIトークン、顧客データ、攻撃者が作成したプロンプトインジェクションが含まれる可能性があるため、この機能を有効にする前にリモートAI境界を確認してください。
ファイルまたはSHA-256で以前の分析を検査します:
aidebug --history /path/to/sample.exe
aidebug --history 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
PEファイルをロードし、メインGUIで X(または P)を押します。AIDebugはハッシュ化した正確なバイトを提示し、構造的証拠を境界付きのナビゲート可能なビューに整理します。
| 領域 | 証拠 |
|---|---|
| ヘッダー | DOS、NT、COFF、オプションヘッダー、特性、データディレクトリ、緩和フラグ |
| セクション | 完全な IMAGE_SECTION_HEADER フィールド、マッピング済み範囲、エントロピー、権限 |
| インポートとエクスポート | インポート記述子、INT/IATエントリ、遅延インポート、序数、名前、RVA、フォワーダー |
| リソース | タイプ/名前/言語階層、メタデータ、ハッシュ、プレビュー、安全な上書きなしエクスポート |
| リロケーションとASLR | リロケーションブロック/エントリと構造的ASLR互換性評価 |
| TLS | TLSディレクトリ、テンプレートデータ、インデックス、コールバックテーブル、マッピング、終了証拠 |
| 例外とアンワインド | x64ランタイム関数、UNWIND_INFO、操作、ハンドラー、チェーンされたレコード |
| ロード構成 | バージョン管理されたフィールド、Guardフラグ、スタッククッキーとエクスプロイト緩和の証拠 |
| CFG | チェック/ディスパッチポインタ、Guard Function IDターゲット、順序、抑制、整合性チェック |
| Authenticode | 証明書レコード、PKCS#7/X.509証拠、PEイメージダイジェスト比較、署名者検証 |
| デバッグと来歴 | Richヘッダー、デバッグディレクトリ、CodeView RSDS/NB10、PDB GUID、age、パス |
| オーバーレイ | 正確なオフセット、サイズ、ハッシュ、エントロピー、プレビュー、安全なエクスポート |
| .NET / CLR | COR20ヘッダー、メタデータルートとストリーム、ECMA-335テーブル、アセンブリ、参照、リソース |
AIDebugはこれらのビューを構築する際にPEを実行しません。静的証明書検証はWindowsルートトラストまたは失効検証ではなく、Richメタデータは属性情報ではなく、厳密名メタデータは発行者の信頼ではなく、静的緩和フラグは効果的なランタイムポリシーの証明ではありません。
これらの記事は、リポジトリのドキュメントを補完する長文のワークフローとスクリーンショットを提供します:
完全なカタログを開くか、特定のケースから開始します:
aidebug --learn
aidebug --learn mov-load
aidebug --learn lea-arithmetic
aidebug --learn switch-dispatch
バンドルされた各ケースは learning/cases/ の下のスタンドアロンファイルです。AIDebugは選択したケースを一時的なx86-64 ELFにコンパイルし、正確なCソースとコンパイラ生成命令を表示し、Ghidraに独立した再構築を要求し、ビルド来歴を記録し、一時アーティファクトを削除します。生成されたレッスンバイナリは実行されません。
テキスト出力には --no-tui を使用するか、レビュー済みの外部コレクションをロードします:
aidebug --learn movsxd --no-tui
aidebug --learn --learning-collection /path/to/reviewed-cases
AI分析はオプションです。決定的なオフラインモードは資格情報なしで引き続き利用できます。
python -m pip install "1200km-aidebug[ai]==3.0.0"
cp .env.example .env
chmod 600 .env
正確に1つのプロバイダーを設定するか、複数の資格情報が存在する場合は AIDEBUG_LLM_PROVIDER を明示的に設定します:
AIDEBUG_LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=replace_with_your_key
# 代替:
# OPENAI_API_KEY=replace_with_your_key
# GEMINI_API_KEY=replace_with_your_key
# OLLAMA_BASE_URL=http://127.0.0.1:11434/v1
AIDEBUG_ENV_FILE=/absolute/path/to/private.env を使用して、信頼できない分析ディレクトリから構成を分離します。リモート一括分析には明示的な --accept-ai-cost の確認が必要です。サンプル証拠をプロバイダーに送信する前に、リモートAIデータ境界 を確認してください。
GDBベースのアクティブモードは、選択したローカルELFを実行します。隔離された承認済みラボ内でのみ使用してください:
aidebug --binary ./sample.elf --mode debug --breakpoint main
利用可能なコマンドには、break、continue、step、next、finish、registers、changes、io、disassemble、quit が含まれます。Frida動的モードは、サポートされているローカルまたはリモート計装ワークフロー用に別途利用できます。
| 出力 | 想定される用途 |
|---|---|
| HTMLレポート | 人間によるレビューとケースノート |
| バージョン管理されたJSON | カスタム統合入力。ベンダー固有またはSTIXスキーマではありません |
| 文字列インテリジェンスJSON | 正規の保持文字列インベントリと、オプションの検証済みAI注釈およびカバレッジ |
| YARA候補 | レビューとテストを必要とするローカルコンパイル済み検出エンジニアリングシード |
| ATT&CK候補 | アナリスト検証を必要とするテクニックレベルの仮説 |
| CFG可視化 | 関数レベルの制御フローレビュー |
| SQLite履歴 | ローカルセッション証拠とSHA-256ベースの検出結果復元 |
flowchart LR
Input[PE, ELF, or C source] --> Parse[Bounded parsing and hashing]
Parse --> Structure[Hex and PE structure evidence]
Parse --> Strings[Deterministic string intelligence]
Parse --> Disasm[Capstone disassembly]
Disasm --> Patterns[Deterministic patterns]
Disasm --> Ghidra[Ghidra reconstruction]
Patterns --> Offline[Offline findings]
Patterns --> AI[Optional LLM cross-check]
Strings --> StringAI[Opt-in chunked string AI review]
Ghidra --> AI
Offline --> Reports[HTML, JSON, YARA, CFG]
AI --> Reports
StringAI --> StringJSON[Structured string JSON]
Reports --> History[SHA-256-indexed history]AIDebugは、隔離されたマルウェア分析VMまたはラボ内で、検査する権限のあるソフトウェアとシステムに対してのみ使用してください。
信頼できないサンプルを分析する前に、完全な 安全モデル、セキュリティポリシー、および 制限と検証計画 をお読みください。
| ドキュメント | 目的 |
|---|---|
| アナリストワークフロー | 再現可能な分析プロセス |
| 安全モデル | 信頼境界と安全な運用 |
| 検証計画 | テスト可能な機能の主張 |
| サンプル証拠 | 例示的なスクリーンショットとモックアーティファクト |
| 比較 | 範囲とポジショニング |
| リリース準備 | 再現可能なリリースゲート |
| AIDebug 3.1リリースノート | 現在のソースリリースの変更点 |
| AIDebug 3.0リリースノート | 以前の公開リリースの変更点 |
| 変更履歴 | バージョン履歴 |
高速なローカルチェックを実行します:
python -m ruff check .
python -m pytest -q
完全な隔離されたリリースゲートを実行します:
./scripts/release-readiness.sh
貢献ガイダンスについては CONTRIBUTING.md を参照してください。ライブマルウェア、資格情報、プライベートケースデータ、または未編集の証拠をイシューやプルリクエストに添付しないでください。
AIDebugは MITライセンス の下でリリースされています。