🚀 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 社区而构建。