Winforensics Mcp について
Winforensics Mcp は、Windows ランタイムなしでオフライン証拠を調べる、Linux 環境向けの Windows デジタルフォレンジック MCP サーバーです。DFIR 調査担当者向けに、アーティファクト解析、相関、IOC 検索、タイムライン作成を提供します。
主な機能
- 01Windows ログ、レジストリ、ファイルシステムの解析
- 02実行痕跡とユーザー活動の分析
- 03アーティファクトの相関と統合タイムライン作成
- 04YARA ルールスキャンと振る舞い IOC の検索
- 05PCAP と API Monitor キャプチャの分析
活用シーン
- 01バイナリの実行有無と関連活動の調査
- 02複数の証拠ソースから IOC を検索
- 03ログとファイルシステムの記録からイベントの時系列を再構成
MCP 対応
ローカル stdio MCP サーバーとして動作し、Windows フォレンジックツールを MCP クライアントに公開します。クライアント設定に winforensics-mcp を登録します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Windows フォレンジック MCP サーバー
Linux から Windows DFIR を実施 - Windows ランタイムへの依存なしで Linux 環境向けに設計された、包括的なフォレンジックツールキットです。Windows のアーティファクトをネイティブに解析できます。Windows Search 用の Rust SIDR サイドカーも任意で利用できます。
関連プロジェクト
- mem_forensics-mcp - 統合メモリフォレンジック MCP サーバー - Rust の速度と Vol3 の対応範囲を組み合わせたマルチティアエンジン
- mac_forensics-mcp - macOS DFIR - 統合ログ、FSEvents、Spotlight、Plist、SQLite データベース、拡張属性
機能
コアフォレンジック
| カテゴリ | 機能 |
|---|---|
| EVTX ログ | コンパクトな構造化クエリ、フィールドフィルター、ログオン相関、NTLM サマリー、JSONL エクスポート |
| オフライン NTDS | 認証情報を復号せずに、SAM アカウント、ドメイン SID、信頼メタデータを正確に照会 |
| レジストリ | SAM、SYSTEM、SOFTWARE、SECURITY、NTUSER.DAT を分析。ページ分割クエリ、正規化された FILETIME、USBSTOR/WPD の相関に対応 |
| リモート収集 | WinRM 経由でアーティファクトを収集(パスワードまたはパス・ザ・ハッシュ) |
実行アーティファクト
| カテゴリ | 機能 |
|---|---|
| PE 分析 | ハッシュ(MD5/SHA1/SHA256/imphash)、インポート、エクスポート、パッカー検出による静的分析 |
| Prefetch | 実行回数、タイムスタンプ、読み込まれたファイルを含む実行証跡 |
| Amcache | Amcache.hve から SHA1 ハッシュと初回検出タイムスタンプを取得 |
| SRUM | アプリケーション/時刻による正確なフィルタリング、生のリソースカウンター、ネットワーク使用量の MB/MiB 合計、SRUDB.dat からの任意の集計 |
ファイルシステムアーティファクト
| カテゴリ | 機能 |
|---|---|
| MFT | ADS メタデータとタイムスタンプ改ざんの検出に対応した Master File Table の解析 |
| USN ジャーナル | ファイル操作の変更ジャーナルと削除ファイルの復元 |
| タイムライン | MFT、USN、Prefetch、Amcache、EVTX を統合したタイムライン |
ユーザーアクティビティ
| カテゴリ | 機能 |
|---|---|
| ブラウザー | Edge、Chrome、Firefox の履歴とダウンロード |
| LNK ファイル | 最近アクセスしたファイルを調べる Windows ショートカット分析 |
| ShellBags | UsrClass.dat と NTUSER.DAT の両方からフォルダーの移動履歴を取得。UNC 共有と閲覧されたアーカイブ内部(libfwsi)を含む |
| RecentDocs | レジストリベースの最近使ったドキュメントの追跡 |
| Windows Search | SIDR を利用した Windows.edb ファイル、インターネット履歴、アクティビティ履歴、System.Search.AutoSummary の復元 |
ネットワークフォレンジック
| カテゴリ | 機能 |
|---|---|
| PCAP 分析 | PCAP/PCAPNG ファイルを解析 - 通信、DNS クエリ、HTTP リクエスト、不審な接続 |
API Monitor キャプチャ分析
| カテゴリ | 機能 |
|---|---|
| APMX 解析 | API Monitor のキャプチャ(.apmx64/.apmx86)を解析 - プロセスメタデータ、API 呼び出しの抽出、パラメーター値 |
| パターン検出 | キャプチャされた API 呼び出しシーケンスから、MITRE ATT&CK マッピングを用いてインジェクション、プロセスホロウイング、認証情報ダンプなどの攻撃パターンを検出 |
| ハンドル相関 | 呼び出し間でハンドル値を追跡し、攻撃チェーンを再構築(OpenProcess -> VirtualAllocEx -> WriteProcessMemory -> CreateRemoteThread) |
| インジェクション分析 | 強化されたインジェクションチェーンの詳細を抽出:対象 PID/プロセス、シェルコードのサイズ、割り当てアドレス、手法の分類 |
| API ナレッジベース | パラメーターシグネチャ、DLL マッピング、カテゴリ別ブラウジングに対応した 26,944 件の Windows API 定義 |
マルウェア検出
| カテゴリ | 機能 |
|---|---|
| YARA スキャン | signature-base の 718 個のルール。APT、ランサムウェア、ウェブシェル、ハッキングツールに対応 |
| IoC パック | エクスポートされたログ、ファイル名、PCAP ペイロードを横断して調査するための、振る舞いベースの IoC パック。65 個のルールを含む、任意で利用できる GPL-2.0 の impacket-iocs パックも含まれます |
| VirusTotal | キャッシュとレート制限に対応したハッシュ/IP/ドメインのレピュテーション検索(無料プランに対応) |
| DiE 連携 | Detect It Easy を使用して、パッカー(UPX、Themida、VMProtect)、コンパイラー、.NET、インストーラーを検出 |
オーケストレーター
| ツール | 機能 |
|---|---|
investigate_execution | Prefetch、Amcache、SRUM を関連付け、「このバイナリは実行されたか?」に回答します |
investigate_user_activity | Browser、ShellBags、LNK、RecentDocs を関連付け、ユーザーアクティビティのタイムラインを作成します |
hunt_ioc | すべてのアーティファクトソースを横断して IOC(ハッシュ/ファイル名/IP/ドメイン)を検索し、オプションで YARA スキャンも実行します |
hunt_ioc_pack | impacket-iocs など、同梱または外部のメタデータパックから振る舞いベースの IoC を調査します |
build_timeline | 複数のソースから統合フォレンジックタイムラインを作成します |
ユーティリティ
| ツール | 機能 |
|---|---|
ingest_parsed_csv | Eric Zimmerman ツールの CSV 出力(MFTECmd、PECmd、AmcacheParser)をインポートします |
インストール
前提条件
# Install uv (fast Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
# Ensure Python 3.10+
python3 --version
PyPI からインストール
uv tool install winforensics-mcp
ソースからインストール
git clone https://github.com/x746b/winforensics-mcp.git
cd winforensics-mcp
# Install with uv (recommended)
uv sync
# Or install with all optional extras
uv venv && source .venv/bin/activate
uv pip install -e ".[all]"
Windows Search の解析には SIDR 0.9.2 を使用します。ソースリポジトリには、隣接するマニフェストに記録された固定コミットからビルドされた、ARM64(.tools/sidr)および x86_64(.tools/sidr_x86)向けの不要部分を除いた Linux リリースが含まれています。どちらのアーキテクチャでも、次のコマンドで同じリビジョンを再ビルドできます。
bash scripts/build_sidr.sh
サーバーは、明示的に指定されたツール引数、WINFORENSICS_SIDR_PATH、アーキテクチャに対応する同梱バイナリ、PATH の順に SIDR を検出します。実行時に実行ファイルをダウンロードまたはビルドすることはありません。未対応のプラットフォームでは、SIDR 0.9.2 を別途ビルドするか用意してください。SIDR がない場合、windows_search_parse は、圧縮された長い値をすべて復元できないことが明確に示された、部分的な pyesedb フォールバックを使用します。
動作確認
uv run python -m winforensics_mcp.server
# Should start without errors (Ctrl+C to exit)
MCP クライアントへの追加
MCP クライアントの設定で、winforensics-mcp をローカルの stdio サーバーとして登録してください。設定の形式と場所はクライアントによって異なります。mcpServers JSON を受け付けるクライアントで PyPI からインストールする場合(uv tool install winforensics-mcp)、設定は次のようになります。
{
"mcpServers": {
"winforensics-mcp": {
"command": "winforensics-mcp"
}
}
}
ソースをチェックアウトした場合(uv sync)は、次のように設定します。
{
"mcpServers": {
"winforensics-mcp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/winforensics-mcp", "python", "-m", "winforensics_mcp.server"]
}
}
}
例のパスを、チェックアウト先の絶対パスに置き換えてください。クライアントが異なる設定形式を使用している場合は、MCP サーバー設定から同じコマンドと引数を入力してください。winforensics-mcp または uv がクライアントの PATH に含まれていることを確認し、クライアントの MCP サーバー一覧で接続を確認してください。
クイックスタートの例
このバイナリは実行されましたか?
Investigate if mimikatz.exe was executed on the system at /mnt/evidence
investigate_execution オーケストレーターは、Prefetch、Amcache、SRUM を確認します。
{
"target": "mimikatz.exe",
"execution_confirmed": true,
"confidence": "HIGH",
"evidence": [
{"source": "Prefetch", "finding": "Executed 3 times, last at 2024-03-15T14:23:45Z"},
{"source": "Amcache", "finding": "SHA1: abc123..., First seen: 2024-03-14T09:00:00Z"},
{"source": "SRUM", "finding": "Network: 15.2 MB sent; Foreground: 47 seconds"}
]
}
すべてのアーティファクトを対象に IOC を調査する
Hunt for the hash 204bc44c651e17f65c95314e0b6dfee586b72089 in /mnt/evidence
hunt_ioc ツールは、Prefetch、Amcache、SRUM、MFT、USN、Browser、EVTX を検索し、オプションで YARA も使用します。
{
"ioc": "204bc44c651e17f65c95314e0b6dfee586b72089",
"ioc_type": "sha1",
"found": true,
"sources_with_hits": ["Amcache", "MFT"],
"findings": [
{"source": "Amcache", "matches": 1, "details": "bloodhound.exe"},
{"source": "MFT", "matches": 1, "details": "Users\\Admin\\Downloads\\bloodhound.exe"}
]
}
コンパクトな EVTX およびオフライン AD クエリ
compact、fields、where、max_chars を使用して、EVTX の結果を絞り込みます。
{
"evtx_path": "/evidence/Security.evtx",
"event_ids": [4724],
"where": {"EventData.SubjectUserName": {"neq": "Administrator"}},
"compact": true,
"fields": ["EventID", "TimeCreated", "EventData.TargetUserName"],
"max_chars": 12000
}
同じクエリで next_cursor を指定して続きの結果を取得します。evtx_get_event を使うと、完全なレコードを開けます。
以下のヘルパーを使用すると、ログオンの相関分析、出現頻度の低いものから並べる NTLM サマリー、JSONL エクスポートを実行できます。記述子ツールは、明示的な hex/base64 をデコードし、利用できない値をそのまま報告します。NTDS ツールは、SYSTEM や認証情報の復号を行わずに、アカウント、ドメイン、信頼関係のメタデータを照会します。
例、制限事項、完全性に関する仕様については、クエリリファレンスを参照してください。
ツールリファレンス
オーケストレーター(高度な調査)
| ツール | 説明 |
|---|---|
investigate_execution | Prefetch/Amcache/SRUM を相関させ、バイナリの実行を立証します |
investigate_user_activity | Browser/ShellBags/LNK/RecentDocs を相関させ、ユーザーのアクティビティを調査します |
hunt_ioc | すべてのアーティファクトから IOC(ハッシュ/ファイル名/IP/ドメイン)を検索します。yara_scan=True を指定すると、YARA の脅威インテリジェンスが追加されます |
build_timeline | 複数のアーティファクトソースから統合タイムラインを作成します |
実行アーティファクト
| ツール | 説明 |
|---|---|
file_analyze_pe | PE の静的解析を実行します。ハッシュ、インポート、エクスポート、Authenticode のプログラム名、パッカーの検出に対応します |
disk_parse_prefetch | 実行の証拠を得るために Prefetch を解析します |
disk_parse_amcache | SHA1 ハッシュとタイムスタンプを取得するために Amcache.hve を解析します |
disk_parse_srum | SRUDB.dat を解析します。アプリの完全一致/正規表現フィルター、UTC 範囲、導出されたネットワーク単位、オプションの集計に対応します |
マルウェア検出(YARA)
| ツール | 説明 |
|---|---|
yara_scan_file | 718 個の YARA ルール(Mimikatz、CobaltStrike、ウェブシェル、APT、ランサムウェア)でファイルをスキャンします |
yara_scan_directory | ディレクトリを一括スキャンしてマルウェアを検出します |
yara_list_rules | 利用可能な YARA ルールと同梱の YARA ルールを一覧表示します |
振る舞いベースの IoC パック
| ツール | 説明 |
|---|---|
ioc_pack_list | ライセンスのメタデータとともに、同梱および外部の IoC パックを一覧表示します |
hunt_ioc_pack | テキストエクスポート、ファイル名、PCAP ペイロードから振る舞いベースの IoC を検索します |
脅威インテリジェンス(VirusTotal)
| ツール | 説明 |
|---|---|
vt_lookup_hash | VirusTotal でファイルハッシュ(MD5/SHA1/SHA256)を検索します |
vt_lookup_behavior | サンドボックスのドメイン、URL、コマンド、レジストリ/ファイルへの書き込みを上限付きで取得します。完全な結果の永続化はオプションです |
vt_lookup_ip | IP アドレスのレピュテーションと位置情報を取得します |
vt_lookup_domain | ドメインのレピュテーションとカテゴリ分類を取得します |
vt_lookup_file | ファイルのハッシュを計算し、VirusTotal で検索します |
ネットワークフォレンジック(PCAP)
| ツール | 説明 |
|---|---|
pcap_get_stats | PCAP の統計情報(パケット数、プロトコル、通信量上位のホスト)を取得します |
pcap_get_conversations | バイト数を含む TCP/UDP 通信を抽出します |
pcap_get_dns | DNS クエリと応答を抽出します |
pcap_get_http | URL、メソッド、ユーザーエージェントを含む HTTP リクエストを抽出します |
pcap_search | パケットペイロードから文字列または正規表現パターンを検索します |
pcap_find_suspicious | C2 の指標、ビーコニング、DNS トンネリングを検出します |
API Monitor キャプチャ解析(APMX)
| ツール | 説明 |
|---|---|
apmx_parse | .apmx64/.apmx86 キャプチャを解析します。プロセス情報、モジュール、呼び出し回数を取得します |
apmx_get_calls | フィルタリング、ページネーション、時間範囲の指定に対応し、API 呼び出しを抽出します |
apmx_get_call_details | パラメーター値、戻り値、タイムスタンプを含む詳細なレコードを取得します |
apmx_detect_patterns | MITRE ATT&CK ID を含め、攻撃パターン(インジェクション、プロセスのホロウイング、認証情報のダンプ)を検出します |
apmx_correlate_handles | API 呼び出しをまたいでハンドルの生成元/使用先のチェーンを追跡します |
apmx_get_injection_info | インジェクションチェーンの詳細情報(対象 PID、シェルコードのサイズ、手法)を抽出します |
apmx_get_calls_around | 特定のレコード前後の呼び出しコンテキストを取得します |
apmx_search_params | すべてのレコードから特定のパラメーター値を検索します |
api_analyze_imports | パターン検出と MITRE ATT&CK マッピングを含む、PE インポートの完全な解析を実行します |
api_detect_patterns | PE インポートテーブルから攻撃パターンを検出します |
api_lookup | Windows API シグネチャを検索します(パラメーター、DLL、カテゴリを含む 26,944 個の API) |
api_search_category | カテゴリ(例:「プロセスインジェクション」、「ファイル管理」)別に API を参照します |
パッカー検出(DiE)
| ツール | 説明 |
|---|---|
die_analyze_file | パッカー、コンパイラー、プロテクター、.NET を対象にファイルを解析します |
die_scan_directory | ディレクトリを一括スキャンし、パックされた実行ファイルを検出します |
die_get_packer_info | パッカーに関する情報(解析の難易度、アンパックツール)を取得します |
ファイルシステム
| ツール | 説明 |
|---|---|
disk_parse_mft | ADS メタデータとタイムスタンプ改ざんの検出を含めて $MFT を解析します |
disk_parse_usn_journal | ファイル操作と削除済みファイルについて $J を解析します |
ユーザーアクティビティ
| ツール | 説明 |
|---|---|
browser_get_history | Edge/Chrome/Firefox の履歴とダウンロードを解析します |
user_parse_lnk_files | Windows ショートカットを解析して、対象パスを取得します |
user_parse_shellbags | ShellBags(UsrClass.dat + NTUSER.DAT)を解析して、フォルダーの移動、ネットワーク共有、アーカイブの閲覧を調べます |
windows_search_parse | 明示的に指定した Windows.edb を SIDR で解析し、ファイル、インターネット、アクティビティ、インデックス済みコンテンツのレコードをフィルタリングしてページ分割します |
オフライン Active Directory
| ツール | 説明 |
|---|---|
ntds_get_object_by_sam | オフライン SAM アカウントの完全一致セレクターに対し、許可リストに登録されたメタデータを読み取ります |
ntds_get_object_sid | 明示的な曖昧性/完全性ステータスとともに SID メタデータを返します |
ntds_get_domain_info | ドメインメタデータと、証拠に裏付けられたフォレストルートの帰属情報を読み取ります |
ntds_get_trusts | 認証シークレットを含めずに、信頼関係のメタデータをページ分割して読み取ります |
イベントログ
| ツール | 説明 |
|---|---|
evtx_list_files | ディレクトリ内の EVTX ファイルを一覧表示します |
evtx_get_stats | イベント数、期間、イベント ID の分布を取得します |
evtx_search | フィルター、簡潔なフィールド射影、応答量の上限、安定した続きを指定して検索します |
evtx_get_event | ソースに紐付いた参照を使って、正規化されたイベント全体を取得します |
evtx_correlate_logon_id | 明示的な時間枠内で、サブジェクト/ターゲットの LUID の出現を結合します |
evtx_export | ハッシュ、完了時の診断情報、上限付きプレビューとともに、フィルタリング済みの JSONL を保存します |
evtx_ntlm_operational_summary | NTLM 4021/4022/4023 イベントをグループ化し、まれなプロセスとユーザーの組み合わせを提示します |
security_descriptor_decode | 明示的な 16 進数/base64 から、サイズ上限付きの自己相対記述子バイト列をデコードします |
evtx_describe_security_descriptor | EVTX 属性記述子の内容を説明するか、そのソースプレースホルダーを報告します |
evtx_security_search | セキュリティイベントの事前構築済み検索(ログオン、プロセス作成など) |
evtx_attack_summary | 迅速なトリアージ向けの簡潔な TSV サマリー。イベントごとに 1 行で、攻撃に関連する列のみを表示します |
evtx_explain_event_id | イベント ID の説明を取得します |
レジストリ
| ツール | 説明 |
|---|---|
registry_get_key | 特定のキーと値を取得します |
registry_search | パターンで値を検索します |
registry_query | サブツリー範囲、フィールド射影、診断情報に対応した、完全一致/部分一致/正規表現によるページ分割型レジストリクエリ |
registry_get_persistence | Run キーとサービスを取得します |
registry_get_users | SAM からユーザーアカウントを取得します |
registry_get_usb_history | USBSTOR の識別情報、物理シリアル番号、WPD デバイス名、追加のボリュームラベルを関連付けます |
registry_get_system_info | OS バージョン、ホスト名、タイムゾーンを取得します |
registry_get_network | ネットワーク構成を取得します |
ユーティリティ
| ツール | 説明 |
|---|---|
ingest_parsed_csv | Eric Zimmerman の CSV 出力(MFTECmd、PECmd、AmcacheParser、SrumECmd)をインポートします |
forensics_list_important_events | チャネルごとに重要なイベント ID を一覧表示します |
forensics_list_registry_keys | カテゴリごとにフォレンジック用レジストリキーを一覧表示します |
リモート収集
| ツール | 説明 |
|---|---|
remote_collect_artifacts | WinRM を使用してアーティファクトを収集します(パスワードまたはパス・ザ・ハッシュ) |
remote_get_system_info | リモートシステムの情報を取得します |
設定
VirusTotal API キー
# Option 1: Environment variable
export VIRUSTOTAL_API_KEY="your-api-key-here"
# Option 2: Config file
mkdir -p ~/.config/winforensics-mcp
echo "your-api-key-here" > ~/.config/winforensics-mcp/vt_api_key
無料の API キーは virustotal.com で取得できます。無料プランでは 1 分あたり 4 リクエストに制限されています。クライアントはレート制限を処理し、結果を 24 時間キャッシュします。
トラブルシューティング
DiE(Detect It Easy)が見つからない
# Debian/Ubuntu
sudo apt install detect-it-easy
# Or download from https://github.com/horsicq/DIE-engine/releases
SIDR が見つかりません
ソースチェックアウトには、Linux ARM64 および x86_64 用の、不要な部分を取り除いた SIDR リリースが含まれています。現在の Rust ターゲット向けに、固定されたリビジョンを再ビルドするには、次を実行します。
bash scripts/build_sidr.sh
別のインストールを使用する場合は、WINFORENSICS_SIDR_PATH に SIDR 0.9.2 の実行ファイルを設定してください。パーサーは、実行ファイルのパス、バージョン、SHA-256、データベースの状態、抽出の完全性、証拠のハッシュをすべての応答に含めて報告します。同梱されたサイドカーの Apache-2.0 ライセンスについては、.tools/SIDR-LICENSE を参照してください。
MCP サーバーを削除する
MCP クライアントのサーバー設定から winforensics-mcp のエントリーを削除してください。
ライセンス
クレジット:omerbenamram/evtx(Rust EVTX パーサー)、strozfriedberg/sidr(Windows Search)、Rohitab Batra(API Monitor)、Neo23x0/signature-base(YARA ルール)、horsicq/DIE-engine(Detect It Easy)
winforensics-mcp のコアコードは MIT ライセンスです。LICENSE を参照してください。
オプションの同梱 IoC パックには、異なるライセンスが適用される場合があります。
winforensics_mcp/ioc_packs/impacket-iocsには、ThatTotallyRealMyth/Impacket-IoCs に由来する素材が含まれており、GPL-2.0 ライセンスが適用されます。winforensics_mcp/ioc_packs/impacket-iocs/LICENSEを参照してください。
DFIR コミュニティのために開発されています。Windows は不要です >)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。