🚀 mac_forensics-mcp
mac_forensics-mcp 是一款用於 macOS 數字取證與事件響應(DFIR)的 MCP(模型上下文協議)服務器。它為 macOS 分類收集提供了結構化的取證分析工具,可減少使用大語言模型(LLMs)進行事件調查時的上下文開銷。
🚀 快速開始
此 MCP 服務器為 macOS 分類收集提供了結構化的取證分析工具,在使用大語言模型(LLMs)進行事件調查時,可有效減少上下文開銷。
✨ 主要特性
- 結構化查詢:無需通過原始的 grep 命令在大量文件中進行搜索。
- 自動時間戳歸一化:將 Mac 絕對時間轉換為 UTC 時間。
- 預構建的安全事件檢測模式:可快速檢測各類安全事件。
- 跨工件關聯和時間線構建:幫助用戶全面瞭解事件的發展過程。
- 分頁功能:避免上下文溢出。
- 工件發現:清晰知曉可用的工件信息。
該項目提供了 23 種工具,涵蓋統一日誌、FSEvents、Spotlight、Plists、SQLite 數據庫、擴展屬性、系統日誌等多個方面。
📦 安裝指南
cd /opt/macOS/mac_forensics-mcp
uv venv
uv pip install -e .
📚 詳細文檔
Claude 代碼配置
選項 1:使用 claude mcp add(推薦)
claude mcp add mac-forensics -s user -- /opt/macOS/mac_forensics-mcp/.venv/bin/python -m mac_forensics_mcp.server
claude mcp add mac-forensics -- /opt/macOS/mac_forensics-mcp/.venv/bin/python -m mac_forensics_mcp.server
驗證是否添加成功:
claude mcp list
移除配置:
claude mcp remove mac-forensics -s user
選項 2:手動 JSON 配置
將以下內容添加到 ~/.claude/settings.json(用戶級)或 .claude/settings.json(項目級):
{
"mcpServers": {
"mac-forensics": {
"command": "/opt/macOS/mac_forensics-mcp/.venv/bin/python",
"args": ["-m", "mac_forensics_mcp.server"],
"env": {}
}
}
}
可用工具(23 種)
發現
| 工具 |
描述 |
mac_list_artifacts |
發現分類收集中可用的工件 |
統一日誌
| 工具 |
描述 |
mac_unified_logs_search |
使用正則表達式、過濾器和時間範圍搜索日誌 |
mac_unified_logs_security_events |
獲取預定義的安全事件(如用戶創建、SSH 會話等) |
mac_unified_logs_stats |
獲取日誌統計信息:時間範圍、頂級子系統 |
Plist 文件
| 工具 |
描述 |
mac_plist_read |
讀取並解析 plist 文件,可選擇提取鍵路徑 |
mac_plist_search |
搜索匹配模式的鍵 |
mac_plist_timestamps |
提取所有時間戳值並轉換為 UTC 時間 |
數據庫
| 工具 |
描述 |
mac_knowledgec_app_usage |
從 KnowledgeC.db 獲取應用使用情況 |
mac_safari_history |
獲取 Safari 瀏覽歷史 |
mac_safari_searches |
從 Safari 中提取搜索查詢 |
mac_tcc_permissions |
獲取 TCC 權限(相機、麥克風、屏幕錄製) |
mac_quarantine_events |
獲取文件下載歷史 |
用戶分析
| 工具 |
描述 |
mac_get_user_accounts |
列出包括已刪除賬戶在內的用戶 |
mac_get_user_timeline |
為特定用戶賬戶構建時間線 |
FSEvents
| 工具 |
描述 |
mac_fsevents_search |
搜索文件系統事件(創建、刪除、修改、重命名) |
mac_fsevents_stats |
獲取 FSEvents 統計信息 |
擴展屬性與 Spotlight
| 工具 |
描述 |
mac_get_extended_attributes |
獲取文件的擴展屬性(隔離、下載 URL 等) |
mac_spotlight_search |
在 Spotlight 索引中搜索文件元數據 |
mac_spotlight_stats |
獲取 Spotlight 索引統計信息 |
系統日誌
| 工具 |
描述 |
mac_parse_fsck_apfs_log |
解析 fsck_apfs.log 文件,用於卷創建、外部設備和反取證分析 |
mac_fsck_apfs_stats |
獲取 fsck_apfs.log 文件的統計信息:設備、卷、時間範圍 |
關聯與調查
| 工具 |
描述 |
mac_build_timeline |
從多個工件構建統一的時間線 |
mac_investigate_event |
通過證據關聯進行深度調查 |
安全事件類型
mac_unified_logs_security_events 工具支持以下事件類型:
| 事件類型 |
描述 |
user_created |
用戶賬戶創建 |
user_deleted |
用戶賬戶刪除 |
user_modified |
用戶賬戶更改 |
ssh_session |
SSH 連接 |
sudo_usage |
Sudo 命令執行 |
auth_success |
成功認證 |
auth_failure |
認證失敗 |
process_exec |
進程執行 |
gatekeeper |
守護程序/隔離事件 |
tcc_prompt |
TCC 權限提示 |
login |
用戶登錄 |
logout |
用戶註銷 |
screen_lock |
屏幕鎖定事件 |
screen_unlock |
屏幕解鎖事件 |
remote_login |
遠程登錄服務 |
persistence |
持久化機制 |
調查事件類型
mac_investigate_event 工具支持對以下事件類型進行深度調查:
| 事件類型 |
描述 |
user_deletion |
通過時間線和證據關聯調查用戶賬戶刪除事件 |
user_creation |
調查用戶賬戶創建事件 |
file_download |
調查文件下載事件(隔離、擴展屬性、瀏覽器歷史) |
ssh_session |
調查 SSH 會話活動 |
malware_execution |
調查潛在的惡意軟件執行事件 |
privilege_escalation |
調查權限提升嘗試事件 |
配置
外部工具路徑
可以通過環境變量配置外部取證工具的路徑。如果未設置,默認使用 /opt/macOS/ 路徑。
| 環境變量 |
默認值 |
描述 |
MAC_FORENSICS_UNIFIEDLOG_ITERATOR_PATH |
/opt/macOS/unifiedlog_iterator |
unifiedlog_iterator 二進制文件的路徑 |
MAC_FORENSICS_FSEPARSER_PATH |
/opt/macOS/FSEventsParser/FSEParser_V4.1.py |
FSEParser 腳本的路徑 |
MAC_FORENSICS_SPOTLIGHT_PARSER_PATH |
/opt/macOS/spotlight_parser/spotlight_parser.py |
spotlight_parser 腳本的路徑 |
自定義路徑示例:
{
"mcpServers": {
"mac-forensics": {
"command": "/opt/macOS/mac_forensics-mcp/.venv/bin/python",
"args": ["-m", "mac_forensics_mcp.server"],
"env": {
"MAC_FORENSICS_UNIFIEDLOG_ITERATOR_PATH": "/custom/path/unifiedlog_iterator",
"MAC_FORENSICS_FSEPARSER_PATH": "/custom/path/FSEParser.py",
"MAC_FORENSICS_SPOTLIGHT_PARSER_PATH": "/custom/path/spotlight_parser.py"
}
}
}
}
依賴項
- Python 3.10+
- uv(用於虛擬環境和包管理)
- mcp >= 1.0.0
- biplist(可選,用於處理格式錯誤的 plist 文件)
外部工具(可選,用於解析原始工件):
unifiedlog_iterator - 用於解析 .logarchive 包
FSEParser - 用於解析 FSEvents (.fseventsd)
spotlight_parser - 用於解析 Spotlight 索引
架構
mac_forensics_mcp/
├── server.py # MCP 服務器和工具定義
├── config.py # 可配置的外部工具路徑
├── parsers/
│ ├── plist_parser.py # Plist 文件解析
│ ├── unified_log_parser.py # 統一日誌分析
│ ├── sqlite_parser.py # SQLite 數據庫(KnowledgeC、Safari、TCC)
│ ├── fsevents_parser.py # FSEvents 解析
│ ├── spotlight_parser.py # Spotlight 索引解析
│ ├── xattr_parser.py # 擴展屬性解析
│ └── fsck_apfs_parser.py # fsck_apfs.log 解析
├── correlation/
│ ├── timeline_builder.py # 跨工件時間線關聯
│ └── event_investigator.py # 特定事件調查
└── utils/
├── timestamps.py # Mac/WebKit/HFS 時間戳轉換
└── discovery.py # 工件發現
取證價值
此 MCP 服務器是基於實際的 macOS DFIR 調查開發的,具有以下關鍵取證能力:
| 能力 |
工具 |
| 用戶賬戶取證 |
mac_get_user_accounts, mac_get_user_timeline, mac_investigate_event |
| 文件活動跟蹤 |
mac_fsevents_search, mac_spotlight_search |
| 下載分析 |
mac_quarantine_events, mac_get_extended_attributes |
| 安全事件檢測 |
mac_unified_logs_security_events |
| 外部設備檢測 |
mac_parse_fsck_apfs_log |
| 跨工件關聯 |
mac_build_timeline, mac_investigate_event |
參考資料
💻 使用示例
發現分類收集中的工件
mac_list_artifacts(artifacts_dir="/path/to/triage")
查找用戶刪除事件
mac_unified_logs_security_events(
log_path="/path/to/unified_logs.csv",
event_type="user_deleted"
)
深度調查用戶刪除事件
mac_investigate_event(
artifacts_dir="/path/to/triage",
event_type="user_deletion",
target="username"
)
獲取 Safari 搜索歷史
mac_safari_searches(
db_path="/path/to/History.db",
query_filter="delete"
)
從 plist 文件中讀取已刪除用戶
mac_plist_read(
plist_path="/path/to/com.apple.preferences.accounts.plist",
key_path="deletedUsers"
)
查找外部設備活動
mac_parse_fsck_apfs_log(
log_path="/path/to/fsck_apfs.log",
external_only=True
)
搜索特定卷
mac_parse_fsck_apfs_log(
log_path="/path/to/fsck_apfs.log",
volume_filter="suspicious_volume"
)
構建用戶活動時間線
mac_get_user_timeline(
artifacts_dir="/path/to/triage",
username="username"
)
搜索 FSEvents 中的文件活動
mac_fsevents_search(
fseventsd_path="/path/to/.fseventsd",
path_filter="/Users/username",
event_types=["created", "deleted"]
)
🤝 貢獻
該項目基於 macOS DFIR 調查的經驗教訓開發,歡迎貢獻更多工具和事件模式。
👨💻 作者
xtk
為 DFIR 社區而構建。