🚀 Windows取證MCP服務器
專為Linux環境設計的全面取證工具包,無需依賴任何Windows工具,可使用純Python庫原生解析Windows工件。
🚀 快速開始
本項目是一個專為Linux環境打造的Windows取證工具包,無需依賴Windows工具,使用純Python庫即可解析Windows工件。以下是快速上手的步驟:
安裝
前提條件
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
python3 --version
從PyPI安裝
uv tool install winforensics-mcp
從源代碼安裝
git clone https://github.com/x746b/winforensics-mcp.git
cd winforensics-mcp
uv sync
uv venv && source .venv/bin/activate
uv pip install -e ".[all]"
驗證安裝
uv run python -m winforensics_mcp.server
添加到Claude CLI
從PyPI安裝
claude mcp add winforensics-mcp --scope user -- uv run winforensics-mcp
從源代碼安裝
claude mcp add winforensics-mcp \
--scope user \
-- uv run --directory /path/to/winforensics-mcp python -m winforensics_mcp.server
驗證添加
claude mcp list
LLM集成(CLAUDE.md)
為了實現AI輔助取證分析,需將文件包含在案例目錄中。它具有以下優點:
- 以編排器為先的指導:確保大語言模型(LLM)在使用低級解析器之前先使用高級工具。
- 令牌效率:通過合理選擇工具,將API成本降低50%以上。
- 調查工作流程:提供逐步的方法,以實現一致的分析。
使用方法
將CLAUDE.md複製到案例目錄:
cp /path/to/winforensics-mcp/CLAUDE.md /your/case/directory/
LLM將自動遵循以編排器為先的方法:
| 問題 |
使用的編排器 |
| "malware.exe是否被執行?" |
investigate_execution |
| "用戶做了什麼?" |
investigate_user_activity |
| "在所有地方查找此哈希值" |
hunt_ioc |
| "構建事件時間線" |
build_timeline |
快速開始示例
此二進制文件是否被執行?
調查mimikatz.exe是否在/mnt/evidence系統上被執行
investigate_execution編排器會檢查預取、Amcache和SRUM:
{
"target": "mimikatz.exe",
"execution_confirmed": true,
"confidence": "HIGH",
"evidence": [
{"source": "Prefetch", "finding": "執行3次,最後一次在2024-03-15T14:23:45Z"},
{"source": "Amcache", "finding": "SHA1: abc123..., 首次出現時間: 2024-03-14T09:00:00Z"},
{"source": "SRUM", "finding": "網絡: 發送15.2 MB; 前臺運行: 47秒"}
]
}
在所有工件中查找IOC
在/mnt/evidence中查找哈希值204bc44c651e17f65c95314e0b6dfee586b72089
hunt_ioc工具會搜索預取、Amcache、SRUM、MFT、USN、瀏覽器、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日誌 |
解析Windows事件日誌,支持過濾、搜索和預定義的安全查詢 |
| 註冊表 |
分析SAM、SYSTEM、SOFTWARE、SECURITY、NTUSER.DAT等註冊表項 |
| 遠程收集 |
通過WinRM(密碼或哈希傳遞)收集工件 |
執行工件分析
| 類別 |
功能 |
| PE分析 |
靜態分析,包括哈希(MD5/SHA1/SHA256/導入哈希)、導入、導出和加殼檢測 |
| 預取 |
提供執行證據,包括運行次數、時間戳和加載的文件 |
| Amcache |
從Amcache.hve獲取SHA1哈希和首次出現時間戳 |
| SRUM |
從SRUDB.dat獲取應用程序資源使用情況、CPU時間和網絡活動信息 |
文件系統工件分析
| 類別 |
功能 |
| MFT |
解析主文件表,支持時間戳篡改檢測 |
| USN日誌 |
用於文件操作的更改日誌和已刪除文件的恢復 |
| 時間線 |
從MFT、USN、預取、Amcache、EVTX生成統一的時間線 |
用戶活動分析
| 類別 |
功能 |
| 瀏覽器 |
分析Edge、Chrome、Firefox的歷史記錄和下載記錄 |
| LNK文件 |
分析Windows快捷方式,獲取最近訪問的文件信息 |
| ShellBags |
分析文件夾導航歷史,支持可疑路徑檢測 |
| RecentDocs |
基於註冊表的最近文檔跟蹤 |
網絡取證
| 類別 |
功能 |
| PCAP分析 |
解析PCAP/PCAPNG文件,包括會話、DNS查詢、HTTP請求和可疑連接 |
API監控捕獲分析
| 類別 |
功能 |
| APMX解析 |
解析API Monitor捕獲文件(.apmx64/.apmx86),包括進程元數據、API調用提取和參數值 |
| 模式檢測 |
從捕獲的API調用序列中檢測注入、空心化、憑證轉儲等攻擊模式,並與MITRE ATT&CK映射 |
| 句柄關聯 |
跨調用跟蹤句柄值,重建攻擊鏈(OpenProcess -> VirtualAllocEx -> WriteProcessMemory -> CreateRemoteThread) |
| 注入分析 |
提取豐富的注入鏈詳細信息:目標PID/進程、shellcode大小、分配地址、技術分類 |
| API知識庫 |
26,944個Windows API定義,包括參數簽名、DLL映射和類別瀏覽 |
惡意軟件檢測
| 類別 |
功能 |
| YARA掃描 |
使用來自signature-base的718條規則,檢測APT、勒索軟件、Webshell、黑客工具等 |
| VirusTotal |
進行哈希/IP/域名聲譽查詢,支持緩存和速率限制(支持免費層級) |
| DiE集成 |
通過Detect It Easy檢測加殼程序(UPX、Themida、VMProtect)、編譯器、.NET和安裝程序 |
編排器
| 工具 |
功能 |
investigate_execution |
關聯預取、Amcache和SRUM,回答“此二進制文件是否被執行?” |
investigate_user_activity |
關聯瀏覽器、ShellBags、LNK和RecentDocs,生成用戶活動時間線 |
hunt_ioc |
在所有工件源中搜索IOC(哈希/文件名/IP/域名),可選進行YARA掃描 |
build_timeline |
從多個源構建統一的取證時間線 |
實用工具
| 工具 |
功能 |
ingest_parsed_csv |
導入Eric Zimmerman工具的CSV輸出(MFTECmd、PECmd、AmcacheParser) |
📦 安裝指南
前提條件
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
python3 --version
從PyPI安裝
uv tool install winforensics-mcp
從源代碼安裝
git clone https://github.com/x746b/winforensics-mcp.git
cd winforensics-mcp
uv sync
uv venv && source .venv/bin/activate
uv pip install -e ".[all]"
驗證安裝
uv run python -m winforensics_mcp.server
💻 使用示例
此二進制文件是否被執行?
調查mimikatz.exe是否在/mnt/evidence系統上被執行
investigate_execution編排器會檢查預取、Amcache和SRUM:
{
"target": "mimikatz.exe",
"execution_confirmed": true,
"confidence": "HIGH",
"evidence": [
{"source": "Prefetch", "finding": "執行3次,最後一次在2024-03-15T14:23:45Z"},
{"source": "Amcache", "finding": "SHA1: abc123..., 首次出現時間: 2024-03-14T09:00:00Z"},
{"source": "SRUM", "finding": "網絡: 發送15.2 MB; 前臺運行: 47秒"}
]
}
在所有工件中查找IOC
在/mnt/evidence中查找哈希值204bc44c651e17f65c95314e0b6dfee586b72089
hunt_ioc工具會搜索預取、Amcache、SRUM、MFT、USN、瀏覽器、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"}
]
}
📚 詳細文檔
工具參考
編排器(高級調查)
| 工具 |
描述 |
investigate_execution |
關聯預取、Amcache和SRUM,證明二進制文件的執行情況 |
investigate_user_activity |
關聯瀏覽器、ShellBags、LNK和RecentDocs,分析用戶活動 |
hunt_ioc |
在所有工件中搜索IOC(哈希/文件名/IP/域名);yara_scan=True可添加YARA威脅情報 |
build_timeline |
從多個工件源構建統一的時間線 |
執行工件分析
| 工具 |
描述 |
file_analyze_pe |
靜態PE分析,包括哈希、導入、導出和加殼檢測 |
disk_parse_prefetch |
解析預取文件,獲取執行證據 |
disk_parse_amcache |
解析Amcache.hve,獲取SHA1哈希和時間戳 |
disk_parse_srum |
解析SRUDB.dat,獲取應用程序資源和網絡使用情況 |
惡意軟件檢測(YARA)
| 工具 |
描述 |
yara_scan_file |
使用718條YARA規則掃描文件(Mimikatz、CobaltStrike、Webshell、APT、勒索軟件) |
yara_scan_directory |
批量掃描目錄中的惡意軟件 |
yara_list_rules |
列出可用的/捆綁的YARA規則 |
威脅情報(VirusTotal)
| 工具 |
描述 |
vt_lookup_hash |
在VirusTotal上查找文件哈希(MD5/SHA1/SHA256) |
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 |
提取HTTP請求,包括URL、方法、用戶代理 |
pcap_search |
在數據包負載中搜索字符串或正則表達式模式 |
pcap_find_suspicious |
檢測C2指示器、信標、DNS隧道 |
API監控捕獲分析(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、shellcode大小、技術) |
apmx_get_calls_around |
獲取特定記錄周圍的調用上下文窗口 |
apmx_search_params |
在所有記錄中搜索特定的參數值 |
api_analyze_imports |
全面的PE導入分析,包括模式檢測和MITRE ATT&CK映射 |
api_detect_patterns |
從PE導入表中檢測攻擊模式 |
api_lookup |
查找Windows API簽名(26,944個API,包括參數、DLL、類別) |
api_search_category |
按類別瀏覽API(例如,“進程注入”、“文件管理”) |
加殼檢測(DiE)
| 工具 |
描述 |
die_analyze_file |
分析文件的加殼程序、編譯器、保護器、.NET情況 |
die_scan_directory |
批量掃描目錄中的加殼可執行文件 |
die_get_packer_info |
獲取加殼程序的信息(難度、解包工具) |
文件系統
| 工具 |
描述 |
disk_parse_mft |
解析$MFT,支持時間戳篡改檢測 |
disk_parse_usn_journal |
解析$J,獲取文件操作和已刪除文件信息 |
用戶活動
| 工具 |
描述 |
browser_get_history |
解析Edge/Chrome/Firefox的歷史記錄和下載記錄 |
user_parse_lnk_files |
解析Windows快捷方式,獲取目標路徑 |
user_parse_shellbags |
解析ShellBags,獲取文件夾導航歷史 |
事件日誌
| 工具 |
描述 |
evtx_list_files |
列出目錄中的EVTX文件 |
evtx_get_stats |
獲取事件計數、時間範圍、事件ID分佈 |
evtx_search |
使用過濾器(時間、事件ID、關鍵字)進行搜索 |
evtx_security_search |
預定義的安全事件搜索(登錄、進程創建等) |
evtx_attack_summary |
緊湊的TSV摘要,用於快速分類 - 每行一個事件,僅包含與攻擊相關的列 |
evtx_explain_event_id |
獲取事件ID的描述 |
註冊表
| 工具 |
描述 |
registry_get_key |
獲取特定的註冊表項和值 |
registry_search |
按模式搜索註冊表值 |
registry_get_persistence |
獲取啟動項和服務 |
registry_get_users |
從SAM中獲取用戶賬戶信息 |
registry_get_usb_history |
獲取USB設備歷史記錄 |
registry_get_system_info |
獲取操作系統版本、主機名、時區 |
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密鑰
export VIRUSTOTAL_API_KEY="your-api-key-here"
mkdir -p ~/.config/winforensics-mcp
echo "your-api-key-here" > ~/.config/winforensics-mcp/vt_api_key
你可以在virustotal.com獲取免費的API密鑰。免費層級的速率限制為每分鐘4次請求;客戶端會處理速率限制並將結果緩存24小時。
故障排除
DiE(Detect It Easy)未找到
sudo apt install detect-it-easy
移除MCP服務器
claude mcp remove winforensics-mcp --scope user
📄 許可證
本項目使用MIT許可證。感謝以下項目的貢獻:
本項目為數字取證與事件響應(DFIR)社區而構建,無需Windows環境。
🔍 相關項目