ryoshu404/macollect

GitHub: ryoshu404/macollect

一个零依赖的模块化 macOS 取证工件收集器,用于事件响应和威胁狩猎场景下快速采集持久化机制、进程快照、TCC 权限等关键证据并输出结构化 JSON。

Stars: 0 | Forks: 0

# macollect macollect 是一个用 Python 编写的模块化 macOS 取证工件收集器,用于收集相关的关注项并生成适用于事件响应、威胁狩猎和安全自动化工作流的结构化 JSON 输出。macollect 的目标是提供一个简单、无依赖的收集器,该收集器可以集成到其他安全工作流中,或直接用于分析。 该工具收集持久化机制、运行进程快照、代码签名元数据、TCC 隐私权限、扩展属性、凭据工件以及跨八个独立收集模块的 Unified Log 活动。 macollect 无需第三方依赖,专为开箱即用的企业 IR 部署而设计。 # 功能 macollect 实现了八个独立的收集模块: - 系统基线(macOS 版本、架构、SIP 状态、执行用户上下文) - 持久化枚举(LaunchAgents、LaunchDaemons、BTM、Login Items、shell 配置、sudoers、cron) - 进程快照(PID 树、RUID/EUID、命令行、二进制路径) - 代码签名增强(签名状态、Team ID、公证信息、Mach-O 验证) - TCC 数据库收集(系统级和每用户隐私权限授予) - 扩展属性收集(隔离标志、下载来源) - 凭据和 shell 工件收集(shell 历史、SSH 工件、keychain 元数据) - Unified Log 收集(可配置时间窗口,过滤至安全相关子系统) 每个模块生成独立的结构化输出,并包含自己的 flags 数组用于异常发现。 # 架构 macollect 遵循模块化编排器架构,其中每个收集模块独立运行并生成自己的结构化输出。 收集流程: ``` sudo macollect ↓ Orchestrator ↓ ┌─────────────────────────────────────┐ │ Module 1: System Baseline │ │ Module 2: Persistence │ │ Module 3: Process Snapshot │ │ Module 4: Code Signing Enrichment │ │ Module 5: TCC Databases │ │ Module 6: Extended Attributes │ │ Module 7: Credential Artifacts │ │ Module 8: Unified Log │ └─────────────────────────────────────┘ ↓ ReportBuilder ↓ JSONFormatter ↓ output.json ``` 每个组件负责单一的职责: | 组件 | 职责 | |-----------|---------------| | Orchestrator | 按顺序运行模块并组装结果 | | Collection Modules | 收集工件并输出各模块的 flags | | ReportBuilder | 组装结构化输出信封 | | JSONFormatter | 生成确定性 JSON 输出 | # 设计决策 ## 只读保证 macollect 绝不修改系统状态。每个收集操作都是严格只读的。不会在目标系统上创建、移动或删除任何文件。这是硬性的架构约束,而非运行时选项。 ## 零第三方依赖 macollect 完全基于 Python 标准库编写。除了工具本身之外,不需要 `pip install`。这是针对企业 IR 部署的刻意设计约束,因为引入依赖链的工具会在受限环境中造成摩擦,并在安全敏感的场景中带来供应链风险。 ## Sudo 要求 macollect 需要 sudo 执行。某些工件来源(例如 TCC 数据库、sudoers、keychain 元数据和某些进程属性)在标准用户上下文中无法访问。该工具不会静默地收集不完整的快照,而是在未使用提升的权限运行时快速失败。 ## ESF 边界 macollect 不使用 Apple 的 Endpoint Security Framework。ESF 提供实时内核级事件流,并且需要具有 Apple 颁发的授权的原生 Swift 或 C 实现。macollect 是一个基于轮询的工件收集器,它读取收集时磁盘和内存中已存在的状态。Python 足以胜任此类工作。实时事件流推迟到未来的 Swift ESF 配套项目中。 ## 每模块 Flags 每个模块通过 flags 数组独立地输出其异常。Flags 不会聚合到全局列表中。这使得发现与其来源保持一致,并简化了分类工作。分析师可以直接转到引发 flag 的模块,而无需交叉引用单独的发现部分。 ## 模块化架构 每个收集模块实现为具有单个 `collect()` 方法的独立类。模块之间互不知晓。这种分离保持了代码库的可维护性,并允许通过 `--modules` 标志选择性地运行模块,而无需修改收集逻辑。 # 仓库结构 ``` macollect/ ├── src/ │ └── macollect/ │ ├── cli.py │ ├── pipeline.py │ ├── report.py │ ├── modules/ │ │ ├── system_baseline.py │ │ ├── persistence.py │ │ ├── process_snapshot.py │ │ ├── code_signing.py │ │ ├── tcc_databases.py │ │ ├── extended_attributes.py │ │ ├── credential_artifacts.py │ │ └── unified_log.py │ └── formatters/ │ └── json_formatter.py ├── samples/ ├── tests/ ├── README.md └── pyproject.toml ``` # 安装 需要 Python 3.11+ 需要 sudo 执行。 克隆仓库: ``` git clone https://github.com/ryoshu404/macollect.git cd macollect ``` 创建虚拟环境: ``` python -m venv .venv source .venv/bin/activate ``` 以可编辑模式安装项目: ``` pip install -e . ``` 验证安装: ``` macollect --version ``` # 用法 运行完整收集: ``` sudo macollect ``` 将输出写入特定文件: ``` sudo macollect --output /path/to/output.json ``` 仅运行特定模块: ``` sudo macollect --modules persistence process_snapshot ``` 设置自定义 Unified Log 时间窗口(默认:24 小时): ``` sudo macollect --time-window 48 ``` 查看可用选项: ``` macollect --help ``` 检查已安装版本: ``` macollect --version ``` # 示例输出 在 v1 发布后添加 # 路线图 ## v1.0 覆盖范围 macollect v1.0 实现了八个收集模块: - 系统基线和收集上下文 - 跨所有主要 macOS 持久化机制的持久化枚举 - 带有 flag 逻辑的即时进程快照 - 针对持久化和标记进程二进制文件的代码签名增强 - 针对系统级和每用户隐私权限的 TCC 数据库收集 - 针对下载来源的扩展属性收集 - 凭据和 shell 工件收集 - 过滤至安全相关子系统的 Unified Log 收集 ## v1.x 候选 以下内容被记录为 v1.0 后的计划添加项: - 通过 `lsmp` 对标记的 PID 进行 Mach port 快照 - 通过 `lsregister` 进行 URL scheme 枚举 - 对所有标记的 PID 进行完整的 `launchctl procinfo` 增强 - 应用程序包中的 Dylib 存在性检查 - 通过 `mdls` 获取可疑文件的 Spotlight 元数据 - 用于网络上下文的 Bonjour/dns-sd 枚举 # 相关项目 该项目是更大型安全工具产品组合的一部分。 ### Statica (已完成) 用 Python 编写的模块化静态分析流水线。从任意文件中提取文件哈希、可打印字符串和常见的入侵指标。是 macollect 的天然收集前伴侣。 GitHub: https://github.com/ryoshu404/statica ### IOC Correlation Service (计划中) 用 Go 编写的威胁情报关联服务。macollect 输出的未来增强集成层。 ### Swift ESF Telemetry Tool (计划中) 使用 Apple 的 Endpoint Security Framework 的 macollect 实时内核事件流伴侣。对于需要实时事件遥测而非基于轮询的工件收集的环境,这是自然的 v2 演进方向。 # 作者 R. Santos GitHub: https://github.com/ryoshu404 # 许可证 MIT
标签:EDR, Google搜索, Homebrew安装, HTTP工具, JSON, LaunchAgents, LaunchDaemons, Python, TCC数据库, TCC权限, 二进制发布, 代码签名, 企业安全, 凭证收集, 取证, 后渗透, 启动项, 库, 应急响应, 开源工具, 扩展属性, 持久化枚举, 数字取证, 数据包嗅探, 无后门, 无线安全, 统一日志, 网络安全审计, 网络资产管理, 脆弱性评估, 自动化脚本, 艺术品收集器, 进程快照, 逆向工具