返回 MCP 目录
public公开dns本地运行

mac_forensics-mcp

macOS数字取证与事件响应MCP服务器,提供23种结构化取证分析工具,支持统一日志、文件系统事件、用户活动等跨证据关联分析,帮助调查人员高效进行macOS事件调查。

article

README

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

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端