0xwi11iam/MacDig

GitHub: 0xwi11iam/MacDig

MacDig 是一款 macOS 取证扫描器,通过一条命令采集数百个取证工件并生成评分报告和完整活动时间线,帮助安全与 IT 人员快速排查系统上的可疑行为。

Stars: 0 | Forks: 0

# MacDig - macOS 可疑行为扫描器 MacDig 是一款专为 IT 管理员、安全研究人员和取证调查人员打造的原生 macOS 扫描器。它使用 macOS 原生工具(plutil、sqlite3、log、csrutil、scutil、security 以及自定义的 C 辅助程序)来收集数百个取证工件,并标记异常情况。每次扫描都会生成一份评分报告,其中包含自系统使用第一天起详尽的系统活动时间线。 ## 快速开始 ``` git clone https://github.com/paragon-William/macdig.git cd macdig make all sudo make install sudo macdig ``` 打开 `macdig_output//macdig_report.md` 查看结果。 如需仅扫描特定模块: ``` sudo macdig --modules 4,6,29 # processes, shell history, root detection sudo macdig --skip 1,21,44 # skip download/packaging modules ``` ## 功能 - **50 个取证模块**,涵盖进程、网络、持久化、权限、隐私和系统完整性 - **加权评分引擎**,具有可配置的严重性权重(CRITICAL=25,HIGH=15,MEDIUM=7,LOW=2) - **多格式报告**:Markdown、HTML 和 PDF - **完整活动时间线**(`FULL_TIMELINE.txt`),涵盖自首次记录的系统活动以来每一个可检测到的事件 - **标记白名单**,用于屏蔽已知安全的 Apple 进程、daemon 和路径 - 除 macOS 内置工具和 Python 3 外**零外部依赖** - **可从源码树或全系统安装**于 `/usr/local/bin/macdig` 运行 ## 架构 ``` flowchart TB A[macdig.sh] --> B[50 Collector Modules] B --> C[JSON result files] C --> D[scorer.py] C --> E[reporter.py] D --> E E --> F[macdig_report.md] E --> G[macdig_report.html] E --> H[macdig_report.pdf] E --> I[FULL_TIMELINE.txt] E --> J[summary.txt] ``` 每个收集器都是一个独立的 zsh 脚本,用于写入结构化的 JSON。评分器将标记处理为加权风险评分。报告生成器将所有内容合并为人类可读的输出。 ## 收集器模块 | # | 模块 | 描述 | |---|--------|-------------| | 01 | downloads | 来自 QuarantineEventsV2 的下载历史 | | 02 | usb | USB 设备连接历史 | | 03 | launch_agents | Launch Agents 和 Daemons | | 04 | processes | 带有可疑标记的进程列表 | | 05 | network | 活动的网络连接 | | 06 | shell_history | Shell 和 Python 命令历史 | | 07 | recent_files | 最近访问的文件和文档 | | 08 | tcc | TCC 隐私权限数据库 | | 09 | ssh | SSH 密钥和 authorized_keys 扫描 | | 10 | sudo_logs | Sudo 使用日志 | | 11 | kexts | 已加载的内核扩展 | | 12 | login_items | 登录项和启动程序 | | 13 | cron | Cron 作业和计划任务 | | 14 | failed_logins | 失败的登录尝试 | | 15 | syslogs | 系统日志事件 | | 16 | browser | 已安装的浏览器扩展 | | 17 | cookies | 浏览器 Cookies 和会话数据 | | 18 | emond | Event Monitor Daemon 规则 | | 19 | xpc | XPC 服务配置 | | 20 | file_integrity | 系统文件完整性验证 | | 21 | telemetry | 已安装的软件包和遥测信息 | | 22 | firewall | 防火墙配置 | | 23 | dns | DNS 配置 | | 24 | hosts | Hosts 文件条目 | | 25 | autofs | AutoFS 挂载 | | 26 | keychain | Keychain 访问和完整性 | | 27 | quarantine_xattr | 隔离扩展属性 | | 28 | spotlight | Spotlight 索引状态 | | 29 | root_detect | Root 和提权检测 | | 30 | sip | 系统完整性保护状态 | | 31 | fs_changes | 系统目录中最近的文件系统更改 | | 32 | reverse_shell | 活动的反向 shell 检测 | | 33 | regex_patterns | Shell 历史记录中的恶意模式检测 | | 34 | hidden_files | 隐藏文件和目录扫描 | | 35 | sip_files | SIP 保护文件完整性 | | 36 | wifi | 已保存的 WiFi 网络 | | 37 | proxy | 代理和 VPN 配置 | | 38 | ntp | NTP 时间同步配置 | | 39 | app_store | App Store 凭证和容器 | | 40 | debug_tools | 调试和开发工具的存在情况 | | 41 | permissions | 文件权限审计 | | 42 | spotlight_index | Spotlight 索引数据库 | | 43 | firewall_logs | 应用程序防火墙日志 | | 44 | packages | 软件包安装凭证 | | 45 | crash_logs | 应用程序崩溃日志 | | 46 | dock | Dock 配置和最近使用的项目 | | 47 | volumes | 挂载的卷 | | 48 | sharing | 共享服务配置 | | 49 | timemachine | Time Machine 配置 | | 50 | summary | 所有收集事件的主时间线 | ## 评分 每个收集器模块会为标记分配严重性级别: | 严重性 | 权重 | 示例 | |----------|--------|---------| | CRITICAL | 25 | 可写目录中的 SUID 二进制文件、加密货币挖矿程序 | | HIGH | 15 | /tmp 中的隐藏可执行文件、应用程序防火墙已禁用 | | MEDIUM | 7 | 意外的 root 进程、SSH 远程登录已启用 | | LOW | 2 | 第三方软件包凭证、自定义 hosts 条目 | | INFO | 0 | 系统配置详情 | 根据发现的密度和严重程度应用风险乘数。最终评分范围从 0(干净)到 100(严重)。 ## 报告输出 每次扫描都会在 `macdig_output/` 目录下创建一个带有时间戳的目录,包含: | 文件 | 内容 | |------|----------| | `macdig_report.md` | 完整的 Markdown 报告,包含评分、标记、模块结果和时间线 | | `macdig_report.html` | 带有可折叠部分的样式化 HTML 报告 | | `macdig_report.pdf` | 可打印的 PDF(需要 wkhtmltopdf) | | `FULL_TIMELINE.txt` | 自第 1 天起每个可检测事件的完整按时间顺序排列的日志 | | `summary.txt` | 包含标记详情和模块计数的快速文本摘要 | ## 安装 ### 全系统安装 ``` make all sudo make install ``` 这将放置: - `/usr/local/bin/macdig` -- 主可执行文件 - `/usr/local/share/macdig/` -- 收集器、辅助程序和报告生成器 - `/usr/local/bin/macdig-quarantine_db` -- C 辅助二进制文件 - `/usr/local/bin/macdig-codesign_check` - `/usr/local/bin/macdig-suid_scanner` - `/usr/local/bin/macdig-quarantine_xattr` ### 卸载 ``` sudo make uninstall ``` ### 从源码树运行 ``` make all sudo ./macdig.sh ``` 该脚本会自动检测它是从源码还是安装路径运行。 ## 构建要求 - macOS(已在 Sequoia 上测试) - Xcode Command Line Tools(用于 `cc`) - Python 3(用于报告生成器/评分器) - zsh(macOS 默认 shell) ``` make all # Compile C helpers make test # Validate all 50 modules produce valid JSON ``` ## 用法示例 ``` # 完整扫描 sudo macdig # 定向扫描 -- 仅 persistence 和 network 模块 sudo macdig --modules 3,4,5,11,12,13,19,22,23,29 # 跳过慢速模块 sudo macdig --skip 1,7,17,27,39,42 # 输出到特定目录 sudo macdig --output ~/Desktop/audit # 帮助 macdig --help ``` ## 文件 | 路径 | 用途 | |------|---------| | `macdig.sh` | 入口点 -- 参数解析、模块调度、报告生成 | | `collectors/_helpers.zsh` | 共享工具 -- JSON 转义、文件输出、标记发射器 | | `collectors/##_*.zsh` | 独立的收集器模块(共 50 个) | | `src/reporter.py` | 报告生成器 -- Markdown、HTML、PDF、时间线、摘要 | | `src/scorer.py` | 评分引擎 -- 加权严重性聚合 | | `src/*.c` | 用于隔离 DB 解析、SUID 扫描、代码签名检查的 C 辅助程序 | | `templates/report.html` | HTML 报告模板 | | `Makefile` | 构建、安装、测试、清理目标 | ## 许可证 MIT -- 详情请参阅 LICENSE 文件。 *MacDig -- 了解你的 Mac 都做了什么。*
标签:Windows 调试器, 取证工具, 安全, 异常检测, 系统扫描, 网络安全审计, 超时处理, 运维