peterhanily/maccrab

GitHub: peterhanily/maccrab

完全本地运行的 macOS 端点威胁检测引擎,基于 Apple Endpoint Security 框架和 Sigma 规则提供实时安全监控、攻击链检测与 AI 编码工具防护。

Stars: 4 | Forks: 0

# MacCrab **macOS 实时威胁检测 —— 无需云服务、无需 SIEM、无需遥测。** [![状态](https://img.shields.io/badge/status-alpha-f59e0b)]() [![构建](https://img.shields.io/badge/build-passing-brightgreen)]() [![测试](https://img.shields.io/badge/tests-929%20passing-brightgreen)]() [![版本](https://img.shields.io/badge/version-1.7.12-blue)](https://github.com/peterhanily/maccrab/releases) [![网站](https://img.shields.io/badge/site-maccrab.com-e04820)](https://maccrab.com) [![许可证](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE) [![macOS](https://img.shields.io/badge/macOS-13%2B%20(Ventura)-lightgrey)]() [![Swift](https://img.shields.io/badge/Swift-5.9%2B-F05138)]() MacCrab 是一个设备端安全引擎,通过 Apple 的 Endpoint Security 框架、兼容 Sigma 的检测规则库、行为评分和时序序列分析来实时监控您的 Mac。所有功能均作为原生 Endpoint Security System Extension 在本地运行,并配备 SwiftUI 菜单栏仪表板——无需云控制台,没有供应商锁定,数据也不会离开您的设备。可以将它视为在 Windows 上由 Sysmon + Sigma + 轻量级 SIEM 提供的功能,但却是为 macOS 原生打造的。 **目标用户:** 安全研究人员、希望获得端点可见性的开发者、macOS 管理员、注重隐私的用户,以及任何希望了解自己设备上实际发生了什么,**并且能够接受运行 Alpha 阶段软件的人。** **版本发布:** 已签名、已公证且支持自动更新的构建版本会通过 Sparkle 在 [maccrab.com/appcast.xml](https://maccrab.com/appcast.xml) 上发布。发布历史请参见 [CHANGELOG.md](CHANGELOG.md)。 ## 快速开始 ### 选项 A:Homebrew(推荐) ``` # 1. 安装 brew tap peterhanily/maccrab https://github.com/peterhanily/maccrab brew install --cask maccrab # 2. 打开 dashboard open /Applications/MacCrab.app # 3. 在 Overview 界面点击 "Enable Protection",然后在 System Settings → General → Login Items & Extensions → # Endpoint Security Extensions 中批准该 # extension。 ``` ### 选项 B:从源码构建(开发者) ``` # 1. Clone 并 build git clone https://github.com/peterhanily/maccrab.git && cd maccrab make dev # builds, codesigns, compiles rules, starts daemon # 2. 检查状态 .build/debug/maccrabctl status # 3. 打开 dashboard make app ``` ## 您将获得的功能 一旦运行,MacCrab 将为您提供: - **实时警报** —— 检测到可疑活动(浏览器生成的 shell、未签名二进制文件的持久化、凭据访问等)时,发出 macOS 通知和实时警报仪表板提示 - **SwiftUI 菜单栏仪表板** 包含 15 个视图 —— 安全概览、带有批量操作的警报分类、实时事件流、攻击活动时间轴、规则浏览器、AI Guard 状态等 - **CLI 威胁狩猎** —— 使用 `maccrabctl hunt "show processes connecting to unusual ports"` 对您的事件数据进行自然语言查询 - **行为评分** —— 即使没有任何单一规则达到严重级别触发条件,进程树中积累的可疑指标依然会触发警报 - **攻击活动检测** —— 多步骤攻击链(下载、执行、持久化、回连)会在进程谱系和时间窗口之间进行关联 - **AI 编码工具防护** —— 监控 Claude Code、Codex、Cursor 及其他 5 种 AI 工具的凭据访问、项目边界越界和提示注入行为 - **默认零遥测** —— 所有数据保存在本地 SQLite 数据库中;可选的 LLM 后端在任何外部调用前会对数据进行脱敏处理 ## MacCrab 功能对比 | 功能 | MacCrab | Santa | osquery | 商业 EDR | |------------|:-------:|:-----:|:-------:|:--------------:| | 实时内核事件(90+ 种 ES 类型) | 是 | 仅执行 | 计划任务 | 是 | | 兼容 Sigma 的规则 | **是** | 否 | 否 | 视情况而定 | | 时序序列检测 | **是** | 否 | 否 | 部分支持 | | 行为评分 | **是** | 否 | 否 | 是 | | AI 编码工具防护 | **是** | 否 | 否 | 否 | | 威胁情报源 (abuse.ch) | **是** | 否 | 否 | 是 | | 基线异常检测 | **是** | 否 | 否 | 是 | | TCC 权限监控 | **是** | 否 | 部分支持 | 部分支持 | | 进程谱系 DAG | **是** | 否 | 部分支持 | 是 | | 原生 macOS 仪表板 | **是** | 是 | 否 | 仅 Agent | | 自我防护(8 层) | **是** | 否 | 否 | 是 | | 完全本地运行 | **是** | **是** | **是** | 否 | | 开源 | **是** | **是** | **是** | 否 | | 所需基础设施 | **无** | 同步服务器 | Fleet 服务器 | 云控制台 | ## 隐私 MacCrab 具有**零遥测**且无回传行为。所有数据均在本地收集并存储在 SQLite 中。除非您明确启用可选功能(LLM 后端、威胁情报源或 Fleet 遥测),否则不会有任何数据离开您的设备 —— 并且当您启用这些功能时,用户名、私有 IP、主机名和凭据会在传输前被自动隐去。 阅读完整的[隐私政策](PRIVACY.md)。 ## 安全 MacCrab 的检测引擎作为 System Extension 运行(一个由 `sysextd` 管理的沙盒用户空间进程,这是 Endpoint Security 的要求)。CLI 和仪表板以您的用户身份运行,对数据库具有只读权限。该引擎通过 8 层篡改检测保护自身的完整性,包括二进制完整性检查、反调试和进程注入检测。 如需报告漏洞,**请勿公开提出 issue** —— 请改为发送邮件至 maccrab@peterhanily.com。 阅读完整的[安全政策](SECURITY.md)。 ## 文档 | 文档 | 内容 | |---|---| | [TROUBLESHOOTING.md](TROUBLESHOOTING.md) | Sysext 批准失败、FDA 静默丢弃、`make compile-rules` 错误、“防护已激活但无警报”、Webhook 验证拒绝、Homebrew 升级清理 | | [UPGRADE.md](UPGRADE.md) | v1.2 LaunchDaemon → v1.3 SystemExtension 迁移、同系列升级说明、回滚指南 | | [FAQ.md](FAQ.md) | 14 大常见问题:自定义规则、离开设备的数据、离线环境使用、SIEM 导出、许可证、macOS 版本、Apple Silicon | | [Rules/README.md](Rules/README.md) | Sigma YAML 规则编写、字段映射、序列规则语法 | | [docs/daemon_config.example.json](docs/daemon_config.example.json) | 带注释的参考配置,包含每个可调参数和每种输出接收器类型 | | [docs/suppressions.example.json](docs/suppressions.example.json) | 按规则划分的进程允许列表格式 | | [PRIVACY.md](PRIVACY.md) | 数据清单 —— 收集了什么、离开了什么、隐去了什么 | | [SECURITY.md](SECURITY.md) | 威胁模型、权限边界、漏洞披露 | | [CHANGELOG.md](CHANGELOG.md) | 带日期的版本历史 | ## 架构 ``` MacCrab Detection Pipeline +--------------------+ +---------------------+ +----------------------+ | Event Sources | | Enrichment | | Detection | | | | | | | | ES Framework ----------> Process Lineage DAG | | Single-Event Rules | | Unified Log ----------> Code Signing Cache | | (Sigma YAML) | | TCC Monitor ----------> Quarantine Origin +---->| Sequence Rules | | Network Coll. ----------> Threat Intel Feeds | | Baseline Anomaly | | DNS Collector ----------> Cert Transparency | | Statistical Anomaly | | Event Tap ----------> YARA Scanner | | Behavioral Scoring | | System Policy ----------> Entropy Analysis | | AI Guard | | FSEvents ----------> CDHash Extraction | | Rootkit Detector | | Crash Reports ---------> | | Power Anomaly | +--------------------+ +---------------------+ +----------+-----------+ | v +----------+-----------+ | Incident Grouper | | Dedup & Suppression | | Self-Defense (8 ly) | +----------+-----------+ | +------------+------------+------------+-----+--------+ | | | | | | v v v v v v +-------+ +---------+ +---------+ +-------+ +------+ +------+ | CLI | | JSONL | | macOS | |Webhook| |Syslog| | Fleet| |stdout | | File | | Notif | | POST | |5424 | | Tele | +-------+ +---------+ +---------+ +-------+ +------+ +------+ ``` ## CLI 参考 ``` maccrabctl status # Daemon status maccrabctl alerts # Recent alerts maccrabctl events tail 20 # Live event stream maccrabctl watch # Streaming alert tail maccrabctl rules list # Loaded rules maccrabctl hunt "show critical alerts" # NL threat hunting maccrabctl report --hours 48 # Incident report maccrabctl suppress # Suppress false positive maccrabctl cdhash 1234 # CDHash lookup maccrabctl tree-score 20 # Behavioral scoring maccrabctl mcp list # MCP server inventory maccrabctl extensions --suspicious # Browser extension scan ``` ## MCP 服务器 MacCrab 附带了一个内置的 [Model Context Protocol](https://modelcontextprotocol.io/) 服务器(`maccrab-mcp`),允许 AI 编码工具直接从编辑器查询您的安全数据。 **设置** —— 将代码库根目录中的 `.mcp.json` 复制到您的项目,或手动添加条目: ``` { "mcpServers": { "maccrab": { "command": "/path/to/.build/debug/maccrab-mcp" } } } ``` 使用 `swift build --target maccrab-mcp` 构建 MCP 二进制文件。 **可用工具 (11):** | 工具 | 用途 | |------|---------| | `get_alerts` | 查询带有严重性、时间和抑制过滤器的警报 | | `get_events` | 按类别、关键字或时间窗口搜索事件 | | `get_campaigns` | 列出检测到的攻击活动及其相关警报 | | `get_status` | Daemon 状态、规则数量、运行时间、数据库大小 | | `hunt` | 跨所有存储的事件进行自然语言威胁狩猎 | | `get_security_score` | 安全态势评分 (0–100) 及按因素划分的明细 | | `suppress_alert` | 通过 ID 抑制误报警报 | | `get_alert_detail` | 单个警报的完整详细信息:LLM 调查、d3fend 技术、修复提示 | | `suppress_campaign` | 一次性抑制某个攻击活动及其所有相关警报 | | `get_ai_alerts` | 过去 24 小时内的所有 AI Guard 警报(凭据、边界、注入) | | `scan_text` | 在您的 AI 工具处理不受信任的文本之前,检查其是否包含提示注入 | **斜杠命令** (`.claude/commands/`):`/security-check`、`/threat-hunt `、`/alerts`。 ## 卸载 ### Homebrew ``` brew uninstall --cask maccrab ``` Cask 的卸载块会通过 `systemextensionsctl` 停用 System Extension,并移除 MacCrab.app、CLI 二进制文件以及任何 1.3 之前版本的 LaunchDaemon 产物。 ### 手动 / 源码构建 ``` sudo ./scripts/uninstall.sh ``` 卸载脚本会停止 daemon(如果是从开发版本运行)、移除二进制文件、停用 System Extension,并在删除您的数据(事件、规则、日志)前进行询问。传递 `-y` 以跳过提示。 如需同时移除用户级别的数据: ``` rm -rf ~/Library/Application\ Support/MacCrab rm -f ~/Library/Preferences/com.maccrab.app.plist ``` ## 检测栈 MacCrab 通过 5 层检测层次结构来评估事件: | 层级 | 描述 | |------|-------------| | **1. 规则** | 编译为 JSON 的兼容 Sigma 的 YAML 规则。按类别索引以实现 O(1) 调度;超过 50 毫秒的规则将被记录以进行分析。 | | **2. 异常** | Welford z-score 统计异常;二阶马尔可夫链进程树;带有加权指标和反馈调整权重的行为评分。 | | **3. 序列** | 具有进程谱系关联、1 万个部分匹配上限、LRU 正则表达式缓存的时序多步骤规则。 | | **4. 攻击活动** | 消灭链、警报风暴、AI 妥协、协同攻击和横向移动检测,带有增量的 O(1) 索引。 | | **5. 跨进程** | 在整个进程谱系图中的关联,带有受信任的辅助程序和未解析目标的哨兵。 |
事件源(点击展开) MacCrab 从 19 个实时事件源中提取数据,涵盖从内核级进程活动到应用层权限的各个方面。顶层收集器包括: | 来源 | 捕获内容 | |--------|------------------| | **Endpoint Security 框架** | 90 多种内核事件类型:进程 exec/fork/exit、文件 create/write/rename/unlink、信号传递、kext 加载、mmap、iokit 操作 | | **Unified Log** | 来自 18 个子系统的实时流(`com.apple.securityd`、`com.apple.authd`、`com.apple.xpc`、`com.apple.install`、蓝牙、Wi-Fi、AirDrop 等) | | **TCC 权限监视器** | 监视系统和用户 TCC 数据库中针对辅助功能、完全磁盘访问权限、屏幕录制、摄像头、麦克风等的授权/撤销 | | **网络连接收集器** | 带有目标 IP、端口、主机名解析和归属进程的出站 TCP/UDP 连接 | | **DNS 收集器** | 通过 BPF 进行 DNS 查询/响应监控,用于 DGA 检测、隧道和域名信誉检查 | | **Event Tap 监视器** | CGEvent tap 监控,用于键盘记录器检测和可疑输入录制 | | **系统策略监视器** | Gatekeeper、XProtect、SIP、MDM 和 auth-plugin 强制执行活动 | | **FSEvents 回退** | 当 ES 文件事件不可用时,提供文件系统事件流以作覆盖 | | **eslogger / kdebug** | 当原生 ES 客户端不可用时,作为回退的 ES 事件流 | 请参阅下面的监视器和收集器表格,以获取包括 USB、剪贴板、超声波、Rootkit、浏览器扩展、MCP、EDR/RMM 和 TEMPEST/SDR 监视器在内的完整列表。
监视器和收集器(点击展开) | 监视器 | 用途 | 轮询间隔 | |---------|---------|--------------| | ESCollector | Endpoint Security 框架事件 | 实时 | | UnifiedLogCollector | 系统日志(18 个子系统,包括蓝牙、Wi-Fi、AirDrop) | 实时 | | NetworkCollector | TCP/UDP 连接 | 5s | | DNSCollector | DNS 查询 (BPF) | 实时 | | TCCMonitor | 隐私权限更改 | 实时 | | FSEventsCollector | 文件系统事件(非 root 回退) | 实时 | | EMonitor | EDR/RMM/内部威胁/远程访问工具扫描 | 120s | | USBMonitor | USB 设备连接/断开 | 10s | | ClipboardMonitor | 剪贴板内容 + 注入检测 | 2s | | UltrasonicMonitor | DolphinAttack/NUIT 音频注入 | 可配置 | | RootkitDetector | 双 API 进程交叉引用 | 120s | | EventTapMonitor | 键盘记录器检测 | 实时 | | SystemPolicyMonitor | SIP、XProtect、MDM、auth 插件 | 300s | | BrowserExtensionMonitor | Chrome/Firefox/Brave/Edge/Arc 扩展 | 启动时 | | MCPMonitor | 跨 AI 工具的 MCP 服务器配置 | 启动时 | | TEMPESTMonitor | Van Eck 攻击:SDR 设备 + 显示异常 | 60s |
分析引擎(点击展开) | 引擎 | 描述 | |--------|-------------| | **基线异常检测** | 学习正常进程行为、网络目标和文件访问模式的模型;在可配置的学习期后对偏差发出警报 | | **统计异常检测器** | Welford 在线算法用于每个进程的滚动均值/标准差;标记出固定权重评分遗漏的 z-score 偏差 | | **行为评分** | 随着时间衰减,为每个进程积累加权的可疑指标;当分数超过可配置的阈值时触发复合警报,即使没有单一规则达到严重级别触发条件 | | **事件分组器** | 通过进程谱系、时间邻近度和 MITRE 战术进展将相关警报聚类到攻击时间轴中;生成叙述性摘要 | | **熵分析** | 对命令行、域名和有效载荷进行香农熵计算,以检测混淆、DGA 域和 DNS 隧道 | | **Rootkit 检测器** | 交叉引用 `proc_listallpids()` 和 `sysctl(KERN_PROC_ALL)` 以查找指示用户态 Rootkit 活动的隐藏进程 | | **崩溃报告挖掘器** | 扫描 DiagnosticReports 以查找漏洞利用指标(EXC_BAD_ACCESS、缓冲区溢出、ASan 故障、释放后使用) | | **电源异常检测器** | 监控电源断言和热压力,以检测加密货币挖掘和持续的 C2 信标 |
AI Guard(点击展开) 监控 AI 编码工具进程的不安全行为。通过可执行路径和进程祖先进程识别 Claude Code、Codex、OpenClaw、Cursor、Aider、Copilot、Continue.dev 和 Windsurf。 | 组件 | 描述 | |-----------|-------------| | **AI 进程追踪器** | 识别并追踪 AI 工具进程及其子进程树 | | **凭据围栏** | 当 AI 工具子进程访问 28 种敏感路径模式(SSH 密钥、`.env` 文件、AWS 凭证、钥匙串、浏览器凭据存储、kubeconfig 等)之一时发出警报 | | **项目边界强制** | 检测 AI 工具在当前项目目录之外读取或写入文件的行为 | | **提示注入扫描器** | 使用 forensicate.ai 分析扫描 AI 工具读取的文件中的注入模式 | | **按工具划分的活动** | 仪表板 AI Guard 选项卡显示按严重性排序的实时各工具警报明细(凭据 / 注入 / 边界 / 其他) | `Rules/ai_safety/` 中有 22 条专用的 AI 安全检测规则。使用 `scan_text` MCP 工具在您的 AI 工具处理之前主动检查不受信任的输入。
LLM 推理后端(点击展开) MacCrab 集成了可插拔的 LLM 后端,用于威胁狩猎、调查摘要和自适应规则生成。所有功能在没有配置后端时都能优雅降级。云提供商会接收自动隐私脱敏(用户名、私有 IP 和主机名在传输前会被隐去)。 | 后端 | 配置 | 用例 | |---------|--------|----------| | **Ollama**(推荐) | `MACCRAB_LLM_PROVIDER=ollama` | 完全本地,零云依赖 —— 最适合隐私敏感环境 | | **Claude API** | `MACCRAB_LLM_PROVIDER=claude` + `MACCRAB_LLM_CLAUDE_KEY` | 通过 API 调用 Anthropic 的 Claude 模型 | | **兼容 OpenAI** | `MACCRAB_LLM_PROVIDER=openai` + `MACCRAB_LLM_OPENAI_KEY` | OpenAI 或任何兼容的端点(LM Studio、vLLM 等) | | **Gemini** | `MACCRAB_LLM_PROVIDER=gemini` | 通过 API 调用 Google Gemini | | **Mistral** | `MACCRAB_LLM_PROVIDER=mistral` | 通过 API 调用 Mistral AI | LLM 驱动的功能: | 功能 | 命令 / 触发器 | |---------|-------------------| | **自然语言威胁狩猎** | `maccrabctl hunt ""` 或仪表板中的 AI 分析选项卡 | | **调查摘要** | 当攻击活动触发时自动生成;作为 `maccrab.llm.investigation-summary` 警报存储 | | **主动防御建议** | 与攻击活动警报一起生成;作为 `maccrab.llm.defense-recommendation` 警报存储 | | **AI 生成的检测规则** | 使用 `RuleGenerator.generateFromCampaignEnhanced()` 从观察到的攻击活动中自动生成 | 所有 LLM 设置均可在仪表板的 **Settings > AI Backend** 中配置,或通过 `daemon_config.json` 配置。
威胁情报(点击展开) | 情报源 | IOC 类型 | 更新间隔 | |------|----------|:---------------:| | **abuse.ch Feodo Tracker** | C2 IP 地址 | 4 小时 | | **abuse.ch URLhaus** | 恶意 URL 和域名 | 4 小时 | | **abuse.ch MalwareBazaar** | 恶意文件哈希 (SHA-256) | 4 小时 | | **自定义 IOC 列表** | 用户提供的哈希、IP、域名 | 更改时 |
富化管道(点击展开) 每个事件在经过规则评估前都会通过富化处理: | 富化器 | 添加的内容 | |----------|--------------| | **进程谱系 DAG** | 父子关系的滑动窗口有向无环图;在父进程退出后依然存活;完整的祖先进程链重建 | | **代码签名缓存** | 签名者类型(Apple、App Store、Developer ID、ad-hoc、unsigned)、团队 ID、签名 ID、公证状态、平台二进制标志 | | **隔离来源** | 从 macOS QuarantineEventsV2 数据库中获取的下载 URL、下载应用程序和时间戳 | | **证书透明度** | 标记连接到具有新颁发证书(<24小时)、不常见 CA 或域名仿冒模式的域名的连接 | | **YARA 扫描器** | 对高严重性警报中引用的文件进行按需 YARA 规则匹配 | | **威胁情报查询** | 根据缓存的 IOC 源检查文件哈希、目标 IP 和域名 | | **熵分析** | 对命令参数和域名进行香农熵评分 |
自我防护(8 层)(点击展开) Daemon 通过持续的篡改检测来保护自身的完整性: 1. **二进制完整性** —— 启动时的 SHA-256 哈希值,定期重新检查 2. **规则完整性** —— 已编译规则的目录哈希 3. **配置文件监控** —— dispatch source 监视修改情况 4. **数据库篡改检测** —— 对事件/警报存储进行完整性检查 5. **反调试** —— 通过 `sysctl` 检查检测调试器附加 6. **信号拦截** —— 监控来自非系统源的 SIGKILL/SIGTERM 7. **LaunchDaemon plist 监控** —— 对 plist 的移除或修改发出警报 8. **进程注入检测** —— 检测向 daemon 注入的企图
抑制管理器(点击展开) 从 `suppressions.json` 加载的按规则划分的进程允许列表。操作员可以在不完全禁用规则的情况下抑制已知的误报: ``` { "maccrab.deep.event-tap-keylogger": ["/usr/libexec/universalaccessd"], "rule-id": ["/path/to/safe/process"] } ``` CLI(`maccrabctl suppress`)会写入同一个文件。Daemon 在发出警报前会检查抑制情况。
响应动作(点击展开) 规则可以触发从被动到主动的可配置响应动作: | 动作 | 描述 | |--------|-------------| | `log` | 始终开启 —— 写入警报存储和 JSONL | | `notify` | macOS 通知横幅 | | `kill` | 终止触发警报的进程 | | `quarantine` | 将触发警报的文件移动到隔离库 | | `script` | 运行自定义 shell 脚本,将警报上下文作为环境变量传入 | | `blockNetwork` | 阻止网络连接(需要 Network Extension) |
## 按 MITRE ATT&CK 战术划分的规则覆盖范围 规则以兼容 Sigma 的 YAML 格式存放在 `Rules//` 目录下。运行 `find Rules -name "*.yml" | wc -l` 获取当前总数,或运行 `ls Rules/` 查看战术目录。覆盖范围涵盖了与 macOS 相关的每一个 MITRE ATT&CK 战术 —— Defense Evasion、Credential Access、Persistence、Supply Chain、Execution、Discovery、Privilege Escalation、AI Safety、Command and Control、Lateral Movement、Collection、Exfiltration、Initial Access、TCC Abuse、Container、Impact —— 以及位于 `Rules/sequences/` 下的时间多步骤检测。随着规则的添加、收紧或弃用,数量会在不同版本之间波动;代码库树是权威来源。 ## 输出目标 | 目标 | 格式 | |--------|--------| | **CLI 标准输出** | 带有严重性指示符的人类可读彩色输出 | | **JSONL 文件** | 每行一个 JSON 对象,适用于日志摄取管道 | | **macOS 通知** | 用于高和严重级别的原生 `UserNotifications` 警报 | | **Webhook** | JSON POST 发送到可配置的 URL,用于集成 Slack、Teams、PagerDuty | | **Syslog** | 基于 UDP/TCP 的 RFC 5424 结构化数据,可转发到任何 syslog 接收器 | | **Fleet 遥测** | 可选择注册到 Fleet 服务器,以实现集中式的多主机可见性 | ## SwiftUI 仪表板 一款原生状态栏应用程序,通过侧边栏导航布局涵盖了 15 个视图:
所有仪表板视图(点击展开) | 视图 | 描述 | |------|-------------| | **概览** | 一目了然的统计信息:事件/秒、按严重性划分的警报计数、热门进程、威胁情报状态 | | **警报** | 带有严重性过滤、批量抑制和事件分组的实时警报仪表板 | | **攻击活动** | 更高层级的攻击链检测:消灭链、警报风暴、协同攻击 | | **事件** | 带有搜索、类别过滤和进程祖先进程深入查看的实时事件流 | | **规则** | 带有启用/禁用开关、MITRE 战术分组和规则向导的规则浏览器 | | **防御** | 主动响应动作:终止、隔离、网络阻断、DNS 黑洞 | | **AI Guard** | AI 编码工具活动:凭据围栏警报、边界违规、MCP 服务器监控 | | **浏览器扩展** | 已安装的扩展清单,带有危险权限风险评分 | | **威胁情报** | abuse.ch 源状态、IOC 计数、自定义情报导入 | | **软件包新鲜度** | 手动供应链风险检查(npm、PyPI、Homebrew、Cargo)+ 供应链警报 | | **AI 分析** | 由 LLM 驱动的威胁狩猎、调查摘要、防御建议 | | **集成** | MISP、Webhook、Syslog、Fleet 配置 | | **权限** | TCC 权限时间轴可视化 | | **ES 健康** | Daemon 状态、数据库健康度、收集器清单、事件吞吐量 | | **文档** | 内置文档和参考资料 | 其他视图:Settings > AI Backend(LLM 提供商配置)、响应动作日志。
## 最新动态
v1.7 —— 操作员自助服务、可观察性、热修复纪律 (2026-04) v1.7 系列的重点在于填补“MacCrab 认为出了问题”与“操作员真正能够采取行动”之间的鸿沟,并在过程中发布了多个由现场反馈驱动的热修复。 - **v1.7.** —— `SchemaMigrator` 多存储热修复。共享 `events.db` 上的共存 EventStore + AlertStore 在两者都达到 schema v2 后,会静默跳过彼此的迁移,导致 AlertStore 准备阶段崩溃,daemon 进入 10 秒的无限重启循环。此修复按版本顺序幂等地重新应用了存储的迁移;storage-init 错误现在使用 `.public` 隐私级别记录日志(不再有 `` 脱敏);自动恢复会备份损坏的附属文件;新增了 `maccrabctl repair --fix-storage` 操作员逃生通道。现有安装无数据丢失。 - **v1.7.5** —— Heartbeat 被拆分为 `heartbeat.json`(同步存活性,不会死锁)和 `heartbeat_rich.json`(异步富负载)。添加了 `maccrabctl repair` 自我诊断。当旧版本排队卸载时,仪表板会显示僵尸 sysext 横幅。 - **v1.7.4** —— 热修复了 v1.7.3 中的一个静默心跳回退问题,该问题是由在每写入器守卫之上分层的外部进行中守卫引起的。 - **v1.7.3** —— 热修复了一个内存回退(从瞬时的 2.31 GB 峰值回到了约 50 MB 稳定状态)。 - **v1.7.2** —— 包含发布前审查的 8 项延迟队列清理。 - **v1.7.1** —— 对 4 个主要面板进行了仪表板面板丰富度审查。 - **v1.7.0** —— MCP 归属:事件通过 3 个新的事件列(`mcp_server_name`、`mcp_server_category`、`ai_tool_session_id`)溯源到触发它们的 AI 工具会话。发布管道现在在 `scripts/pre-release-audit.sh` 中编纂了其不变量(8 项架构检查,作为每个发布的 DMG 的关卡)。每个发布的热修复都针对其修复的错误类别增加了一项检查。
v1.4 – v1.6 —— 性能、防御面、Fleet (2026-04) - **v1.6.x** —— 内存上限回退修复(CampaignStore 之前打开的是 `events.db` 而不是 `campaigns.db` —— 被新的 events.db 句柄计数检查捕获)。DaemonConfig 解码器修复了 snake_case 覆盖被静默丢弃为默认值的问题。添加了大量功能:TEMPEST/SDR 检测、EDR/RMM 发现、用于快照的 Vitter Algorithm R 水库抽样。 - **v1.5.x** —— 防御面扩展(DNS 黑洞、网络阻断器、持久化防护、通过仪表板连接的终止/隔离响应动作)。 - **v1.4.x** —— Sparkle 自动更新基础设施、Homebrew cask tap、Fleet 遥测服务器(`fleet/server.py`)、14 种仪表板语言本地化。
v1.3 —— 通过 SystemExtension 实现原生 Endpoint Security (2026-04) v1.3 是自 v1.0 以来最大的架构变更。MacCrab 现在作为原生 Endpoint Security **System Extension** 运行,可从 `MacCrab.app` 内部激活 —— 这与每款商业 macOS EDR(CrowdStrike、SentinelOne、Jamf Protect、Microsoft Defender)所使用的架构一致。在 macOS Catalina 及更高版本上,AMFI 仅向通过 `OSSystemExtensionRequest` 从已批准的 `.systemextension` 包加载的二进制文件授予 `com.apple.developer.endpoint-security.client` 权限 —— 无论配置文件是否有效,LaunchDaemons 都会被绝对拒绝。 - **SystemExtension 激活** —— 不再需要 `sudo maccrabd`;打开 MacCrab.app 并点击 Enable Protection。`sysextd` 将从此时开始管理其生命周期。 - **原生 ES 客户端** —— `com.apple.developer.endpoint-security.client` 在 bundle ID `com.maccrab.agent` 下获得批准。三级回退链(eslogger → kdebug → FSEvents)对于开发者构建依然是首选支持方案。 - **网络收敛强化 (1.3.4)** —— 未解析的目标 IP 不再将良性 HTTPS 流量归入 `:443`;新增受信任辅助程序扇出门控;49 条受信任云后缀列表。 - **误报回归测试套件** —— 每一个在实际安装中观察到的真实 FP 现在都有一行对应的 `@Test`。**138 个套件中的 643 个测试**,FP 回归在 CI 阶段被拦截。 - **降噪过程 (1.2.1 → 1.2.4)** —— 参考工作站从 2,856 个警报/24小时降至约 3 个/天(减少 99.9%),且未降低检测保真度。 - **已公证的 Developer ID 分发** —— 已签名 DMG、Homebrew cask tap (`peterhanily/maccrab`)、可复现的发布管道。 - **Sparkle 自动更新 (1.3.5)** —— EdDSA 签名的 `appcast.xml` 托管在 Cloudflare Pages 上的 `maccrab.com`;在状态栏菜单和“设置”中提供“检查更新…”选项。 - **仪表板中的手动响应动作 (1.3.9)** —— `AlertDetailView` 上的“终止进程”/“隔离文件”/“阻止目标”按钮执行实际操作:带有 `pkill -f` 回退的 `kill(SIGTERM)`;带有 `com.apple.quarantine` xattr + `chmod 000` + 取证附属文件的移动至库操作;通过 `osascript` 管理员权限提示进行的 PF anchor 写入。类型化错误区分了“root 所有”、“已退出”和“未找到”。 - **强化的数据库权限 (1.3.9)** —— SQLite WAL/SHM 附属文件为 0o640(对仪表板具有组可读权限),而不是全局可读。关闭了跨用户读取近期事件的漏洞。 - **自我允许列表 (1.3.8)** —— MacCrab 不再对其自身的活动发出警报(brew 升级、xpcproxy、FDA 授权)。 完整版本历史请参见 [CHANGELOG.md](CHANGELOG.md)。
v1.0.0 —— 初始发布 - 5 层检测层次结构(规则、序列、异常、攻击活动、跨进程) - LLM 推理后端:Ollama、Claude、兼容 OpenAI、Gemini、Mistral - NL 威胁狩猎、LLM 调查摘要、主动防御建议 - AI Guard 监控 8 种编码工具 + MCP 服务器 - 软件包新鲜度检查(npm、PyPI、Homebrew、Cargo) - 超声波攻击检测(DolphinAttack、NUIT、SurfingAttack) - 剪贴板、浏览器扩展、USB 监控 - TLS 指纹识别和 C2 信标检测 - 从观察到的攻击中自动生成规则(模板 + LLM 增强) - 加密数据库 (AES-256) - HTML 事件报告 - 通过交叉引用的进程枚举进行 Rootkit 检测 - 针对漏洞利用指标的崩溃报告挖掘 - 电源/热异常检测(加密货币挖掘、C2 信标) - 用于进程完整性验证的 CDHash 提取 - TEMPEST / Van Eck 攻击检测(17 种 SDR 设备,显示异常监控) - EDR/RMM 工具发现(跨 5 个类别的 30 多种工具) - 仪表板的 14 种语言本地化
## 开发
dev.sh(点击展开) `scripts/dev.sh` 脚本是主要的开发驱动程序。它一步完成构建、使用 ES 权限进行代码签名、编译规则并重启 daemon: ``` ./scripts/dev.sh # Full cycle (sudo for ES) ./scripts/dev.sh --no-es # Without root (limited event sources) ./scripts/dev.sh --build # Build + sign only, don't start ./scripts/dev.sh --restart # Restart daemon without rebuilding ./scripts/dev.sh --stop # Stop daemon and app ./scripts/dev.sh --status # Show daemon status ```
### Make 目标 ``` make dev Build + restart daemon + open app (one command) make restart Restart daemon (no rebuild) make stop Stop daemon and app make status Show daemon status make watch Live stream alerts make build Build debug binaries make release Build release binaries make compile-rules Compile YAML rules to JSON make clear-data Delete local events/alerts make new-rule Create rule from template make bundle-app Package the SwiftUI app into .app bundle make install Install system-wide (sudo) make uninstall Remove system install (sudo) make run-root Run with Endpoint Security (sudo) ``` ### 测试套件 ``` make test # Run tests (summary) make test-full # Full test suite with verbose output make test-fp # False positive tests against benign system activity make test-detection # Detection tests -- triggers all categories safely make test-integration # Integration tests (daemon + CLI + rules) make test-stress # 60-second stress test for event throughput make lint-rules # Lint all YAML rules for format, UUID uniqueness, tags ```
测试文件(点击展开) | 文件 | 范围 | |------|-------| | `Tests/MacCrabCoreTests/MacCrabCoreTests.swift` | 核心引擎单元测试 | | `Tests/MacCrabCoreTests/PipelineTests.swift` | 端到端管道测试 | | `Tests/MacCrabCoreTests/DeepMacOSTests.swift` | macOS 特定集成测试 | | `Tests/MacCrabCoreTests/AIGuardTests.swift` | AI Guard 子系统测试 | | `Tests/MacCrabCoreTests/SuppressionTests.swift` | 抑制管理器测试 | | `Tests/MacCrabCoreTests/ForensicTests.swift` | 取证组件测试(Rootkit、崩溃、电源、CDHash、威胁狩猎器) | | `scripts/false-positive-test.sh` | 针对真实系统事件的 FP 回归测试 | | `scripts/detection-test.sh` | 每个检测类别的安全触发器测试 | | `scripts/rule-lint.sh` | YAML 验证、UUID 唯一性、ATT&CK 标签检查 | | `scripts/stress-test.sh` | 用于性能验证的高吞吐量事件洪泛 |
### 红队模拟 ``` make test-detection # 15 detection categories (~2 min) make test-campaign # 5-wave kill chain simulation (~5 min) make test-campaign SUSTAINED=1 # Slow burn (~12 min, more realistic) make test-fp # False positive validation (105 system processes) make test-stress 120 # Sustained operation monitor (120s) ``` 所有测试都是安全的 —— 产物位于 `/tmp` 中,使用 localhost 连接,退出时清理。 ## 检测规则 ### 格式 MacCrab 使用兼容 Sigma 的 YAML 格式。单事件规则遵循 [标准 Sigma 规范](https://sigmahq.io/docs/)。时间序列规则通过 `type: sequence`、`steps`、`window` 和 `correlation` 字段对格式进行了扩展。 规则在运行时被检测引擎加载之前,会通过 `Compiler/compile_rules.py` 从 YAML 编译为优化的 JSON 谓词格式。
示例:单事件规则(点击展开) ``` title: Shell Spawned by Browser Process id: d1a2b3c4-0001-4000-a000-000000000001 status: stable description: > Detects a shell interpreter spawned as a child of a browser process, which may indicate exploitation or malicious download execution. author: MacCrab Community date: 2026/03/31 references: - https://attack.mitre.org/techniques/T1059/004/ tags: - attack.execution - attack.t1059.004 logsource: category: process_creation product: macos detection: selection_parent: ParentImage|endswith: - '/Safari' - '/Google Chrome' - '/Firefox' - '/Microsoft Edge' - '/Arc' - '/Brave Browser' selection_child: Image|endswith: - '/sh' - '/bash' - '/zsh' condition: selection_parent and selection_child falsepositives: - Browser extensions that legitimately invoke shell scripts - Web development tools level: high ```
示例:时间序列规则(点击展开) 序列规则定义了具有时间窗口、排序约束和进程谱系关联的多步骤攻击链: ``` title: Download to Persistence to C2 Attack Chain id: e1f2a3b4-0001-4000-b000-000000000001 status: experimental description: > Detects a complete attack chain: file downloaded to Downloads/tmp, executed as unsigned binary, installs persistence via LaunchAgent/Daemon, then makes outbound network connection (C2 callback). author: MacCrab Community date: 2026/03/31 tags: - attack.execution - attack.persistence - attack.command_and_control type: sequence window: 120s correlation: process.lineage ordered: true steps: - id: execute logsource: category: process_creation product: macos detection: selection: Image|contains: - '/Downloads/' - '/tmp/' filter_signed: SignerType: - 'apple' - 'appStore' - 'devId' condition: selection and not filter_signed - id: persist logsource: category: file_event product: macos detection: selection_la: TargetFilename|contains: '/LaunchAgents/' TargetFilename|endswith: '.plist' selection_ld: TargetFilename|contains: '/LaunchDaemons/' TargetFilename|endswith: '.plist' condition: selection_la or selection_ld process: execute.descendant - id: c2 logsource: category: network_connection product: macos detection: selection: DestinationIsPrivate: 'false' condition: selection process: execute.descendant trigger: persist and c2 level: critical ```
序列规则字段(点击展开) | 字段 | 描述 | |-------|-------------| | `type: sequence` | 将规则标记为时间序列(由 `SequenceEngine` 处理) | | `window` | 从第一步到最后一步的最大时间跨度(例如 `120s`、`5m`、`1h`) | | `correlation` | 步骤的关联方式:`process.lineage`、`process.same`、`file.path`、`network.endpoint` 或 `none` | | `ordered` | 步骤是否必须按列出的顺序发生(`true`)或以任何顺序发生(`false`) | | `steps[].process` | 与另一个步骤的进程关系:`.descendant`、`.ancestor`、`.same`、`.sibling` | | `trigger` | 必须满足的基于步骤 ID 的布尔表达式,才能触发规则 |
### 编写自定义规则 1. 在相应的 `Rules//` 目录中创建一个新的 `.yml` 文件 2. 遵循带有 `logsource.product: macos` 的 Sigma YAML 格式 3. 分配一个唯一的 UUID 作为规则 `id` 4. 使用 MITRE ATT&CK 技术打标签(例如 `attack.t1059.004`) 5. 记录已知的误报 6. 编译并测试: ``` make compile-rules maccrabctl rules list | grep "your rule title" make lint-rules # Validates format, UUID uniqueness, and tags make test-fp # Verify no false positives against normal activity ``` ## 配置
环境变量(点击展开) | 变量 | 默认值 | 描述 | |----------|---------|-------------| | `MACCRAB_RULES_DIR` | `~/Library/Application Support/MacCrab/compiled_rules/` | 编译后的 JSON 规则目录 | | `MACCRAB_LOG_DIR` | `~/Library/Application Support/MacCrab/logs/` | JSONL 警报和事件日志目录 | | `MACCRAB_WEBHOOK_URL` | *(无)* | JSON POST webhook 交付的 URL | | `MACCRAB_SYSLOG_HOST` | *(无)* | Syslog 接收器的主机名或 IP | | `MACCRAB_SYSLOG_PORT` | `514` | Syslog 接收器端口 | | `MACCRAB_SYSLOG_PROTO` | `udp` | Syslog 传输协议(`udp` 或 `tcp`) | | `MACCRAB_MIN_SEVERITY` | `low` | 最小输出严重级别(`informational`、`low`、`medium`、`high`、`critical`) |
基线引擎(点击展开) 基线异常引擎会在可配置的学习构建正常活动的配置文件。配置存储在 `~/Library/Application Support/MacCrab/baseline_config.json` 中: ``` { "learningPeriodDays": 7, "processFrequencyThreshold": 0.01, "networkDestinationThreshold": 0.005, "fileAccessPathThreshold": 0.01, "updateIntervalMinutes": 60, "excludedProcesses": [ "/usr/libexec/xpcproxy", "/usr/sbin/mDNSResponder" ] } ```
警报去重(点击展开) | 设置 | 默认值 | 描述 | |---------|---------|-------------| | 抑制窗口 | 300 秒 | 相同(规则、进程、上下文)元组能够再次触发之前的时间 | | 每小时每条规则最大警报数 | 50 | 每条规则警报量的硬性上限 | | 去重键字段 | 规则 ID、进程路径、文件路径或目标 IP | 用于计算去重键的字段 |
## 系统要求 | 要求 | 详情 | |-------------|---------| | **macOS** | 13.0+ (Ventura 或更高版本) | | **Swift** | 5.9+ | | **SystemExtension 批准** | 在系统设置 → 通用 → 登录项与扩展 → Endpoint Security Extensions 中进行一次性用户批准(发布版本)。开发版本通过回退链跳过此步骤。 | | **ES 权限** | `com.apple.developer.endpoint-security.client` —— 通过已批准的配置文件发布在发布版的 DMG 中;开发版本使用 `eslogger` / `kdebug` / FSEvents 回退链 | | **完全磁盘访问权限** | 授予 MacCrab.app(发布版)或您的终端模拟器(开发版)以进行 TCC 数据库监控 | | **Python** | 3.9+ 且带有 PyYAML(`pip install pyyaml`),用于规则编译器 | ## 签名与分发
本地开发(点击展开) Apple 将 Endpoint Security 权限限制为仅通过 `OSSystemExtensionRequest` 从已批准的 `.systemextension` 包加载的二进制文件 —— 无论配置文件是否有效,LaunchDaemons 和独立二进制文件都会被 AMFI 拒绝。对于本地开发,MacCrab 的 daemon 拥有三级回退链(`eslogger` 子进程 → `kdebug` → FSEvents),因此开发版本无需您自己的 ES 权限批准即可完全正常工作。 ### 快速开发周期 ``` make dev # build, ad-hoc codesign, compile rules, restart make dev-no-es # same without sudo (no eslogger proxy) make status # daemon status make stop # stop daemon and app ``` ### 批准临时签名的 daemon 首次启动时,macOS 可能会阻止临时签名的 `maccrabd` 二进制文件。前往 **系统设置 → 隐私与安全性** 并点击 **仍然允许**。授予您的终端(或用于生产安装的 MacCrab.app)**完全磁盘访问权限**,以进行 TCC 数据库监控。
生产发布构建(点击展开) 发布版 DMG 由 `scripts/build-release.sh`(已被 gitignore —— 包含本地路径和身份)生成。该流程: 1. 使用 `Compiler/compile_rules.py` 将规则编译为 JSON 2. 使用 `swift build -c release` 构建所有 7 个 SPM 目标(`MacCrabCore`、`MacCrabAgentKit`、`MacCrabAgent`、`maccrabd`、`maccrabctl`、`maccrab-mcp`、`MacCrabApp`) 3. 将 `MacCrabAgent` 封装到 `.systemextension` 包中,其 `Info.plist` 包含 `CFBundlePackageType=SYSX` 和 `NSSystemExtensionPointIdentifier=com.apple.system_extension.endpoint_security` 4. 使用 Developer ID Application + 携带 ES 权限的内嵌配置文件对 sysext 进行签名 5. 使用 hardened runtime 对 `MacCrab.app` 进行签名;对 DMG 进行公证和装订 6. 更新 appcast 条目,升级 Homebrew cask 如果您拥有自己已批准的 ES 权限(需要 Apple Developer Program),您可以使用自己的配置文件对 `MacCrabAgent` 重新签名。
## 项目结构
完整目录布局(点击展开) ``` maccrab/ ├── Package.swift ├── Makefile ├── entitlements.plist ├── LICENSE # Apache 2.0 ├── CONTRIBUTING.md │ ├── Sources/ │ ├── MacCrabCore/ # Core detection library │ │ ├── Events/ # Unified event model │ │ │ ├── Event.swift │ │ │ ├── EventEnums.swift │ │ │ ├── ProcessInfo.swift │ │ │ ├── FileInfo.swift │ │ │ ├── NetworkInfo.swift │ │ │ └── TCCInfo.swift │ │ ├── Collectors/ # 8 event source implementations │ │ │ ├── ESCollector.swift # Endpoint Security client │ │ │ ├── ESHelpers.swift # ES type conversion │ │ │ ├── UnifiedLogCollector.swift # Unified Log stream │ │ │ ├── TCCMonitor.swift # TCC database watcher │ │ │ ├── NetworkCollector.swift # Network connections │ │ │ ├── DNSCollector.swift # DNS query monitor │ │ │ ├── EventTapMonitor.swift # CGEvent tap monitor │ │ │ ├── SystemPolicyMonitor.swift # Gatekeeper/XProtect │ │ │ └── FSEventsCollector.swift # FSEvents fallback │ │ ├── Enrichment/ # Event enrichment pipeline │ │ │ ├── EventEnricher.swift # Orchestrator │ │ │ ├── ProcessLineage.swift # Process ancestry DAG │ │ │ ├── CodeSigningCache.swift # Code signing info │ │ │ ├── QuarantineEnricher.swift # Download provenance │ │ │ ├── CertTransparency.swift # CT log monitoring │ │ │ ├── ThreatIntelFeed.swift # abuse.ch IOC feeds │ │ │ ├── YARAEnricher.swift # YARA file scanning │ │ │ └── CDHashExtractor.swift # Process CDHash extraction │ │ ├── Detection/ # Rule evaluation and analysis │ │ │ ├── RuleEngine.swift # Single-event Sigma engine │ │ │ ├── SequenceEngine.swift # Temporal sequence engine │ │ │ ├── BaselineEngine.swift # Anomaly baseline │ │ │ ├── StatisticalAnomaly.swift # Welford's z-score detector │ │ │ ├── BehaviorScoring.swift # Per-process suspicion scoring │ │ │ ├── IncidentGrouper.swift # Attack timeline clustering │ │ │ ├── EntropyAnalysis.swift # Shannon entropy / DGA detection │ │ │ ├── AlertDeduplicator.swift # Dedup and rate limiting │ │ │ ├── SuppressionManager.swift # Per-rule process allowlists │ │ │ ├── ResponseAction.swift # Kill, quarantine, script, etc. │ │ │ ├── SelfDefense.swift # 8-layer tamper protection │ │ │ ├── RootkitDetector.swift # Hidden process detection │ │ │ ├── CrashReportMiner.swift # Exploitation indicator mining │ │ │ ├── PowerAnomalyDetector.swift # Power/thermal anomaly detection │ │ │ └── ThreatHunter.swift # Natural language threat hunting │ │ ├── AIGuard/ # AI coding tool safety │ │ │ ├── AIToolRegistry.swift # Tool identification │ │ │ ├── AIProcessTracker.swift # Process tree tracking │ │ │ ├── CredentialFence.swift # Sensitive file access alerts │ │ │ ├── ProjectBoundary.swift # Directory escape detection │ │ │ └── PromptInjectionScanner.swift # Injection pattern scanning │ │ ├── Fleet/ # Optional fleet telemetry │ │ │ ├── FleetClient.swift # Fleet server enrollment │ │ │ └── FleetTelemetry.swift # Telemetry serialization │ │ ├── Storage/ # Persistence and output │ │ │ ├── AlertStore.swift # SQLite alert storage │ │ │ ├── EventStore.swift # SQLite event ring buffer │ │ │ ├── CommandSanitizer.swift # Input sanitization │ │ │ ├── NotificationOutput.swift # macOS notification delivery │ │ │ ├── WebhookOutput.swift # JSON POST webhook │ │ │ └── SyslogOutput.swift # RFC 5424 syslog sender │ │ ├── Output/ # Report generation │ │ │ └── ReportGenerator.swift # HTML incident reports │ │ └── Models/ │ │ └── Alert.swift # Alert model │ │ │ ├── MacCrabAgentKit/ # Shared daemon bootstrap library │ ├── MacCrabAgent/ # SystemExtension executable (ships in .systemextension bundle) │ │ └── main.swift │ ├── maccrabd/ # Legacy standalone daemon (dev-only fallback) │ │ └── main.swift │ ├── maccrabctl/ # CLI control tool │ │ └── main.swift │ ├── maccrab-mcp/ # MCP server for AI agent integration │ │ └── main.swift │ └── MacCrabApp/ # SwiftUI menubar app + SystemExtension activator │ ├── MacCrabApp.swift │ ├── AppState.swift │ ├── Views/ │ │ ├── MainView.swift # Tab navigation │ │ ├── AlertDashboard.swift # Alert list + detail │ │ ├── EventStream.swift # Live event stream │ │ ├── RuleBrowser.swift # Rule list + toggles │ │ ├── RuleWizard.swift # Rule authoring wizard │ │ ├── TCCTimeline.swift # Permission timeline │ │ ├── AIActivityView.swift # AI tool monitoring │ │ ├── SettingsView.swift # Configuration │ │ ├── ResponseActionsView.swift # Response action config │ │ ├── DocsView.swift # Built-in docs │ │ ├── StatusBarMenu.swift # Menu bar interface │ │ └── Components.swift # Shared UI components │ └── ViewModels/ │ └── ViewModels.swift │ ├── Rules/ # Sigma-compatible detection rules │ ├── defense_evasion/ │ ├── credential_access/ │ ├── persistence/ │ ├── supply_chain/ │ ├── execution/ │ ├── discovery/ │ ├── privilege_escalation/ │ ├── ai_safety/ │ ├── command_and_control/ │ ├── lateral_movement/ │ ├── collection/ │ ├── exfiltration/ │ ├── initial_access/ │ ├── tcc/ │ ├── container/ │ ├── impact/ │ └── sequences/ │ ├── Compiler/ │ └── compile_rules.py # Sigma YAML to JSON compiler │ ├── scripts/ │ ├── dev.sh # Development cycle driver │ ├── bundle-app.sh # .app bundle creator │ ├── install.sh / uninstall.sh # System-wide install/remove │ ├── detection-test.sh # Safe detection trigger tests │ ├── false-positive-test.sh # FP regression tests │ ├── rule-lint.sh # YAML rule validation │ ├── stress-test.sh # Event throughput stress test │ ├── integration-test.sh # Daemon + CLI integration │ ├── test.sh # Test runner wrapper │ ├── check_duplicate_ids.py # UUID uniqueness check │ ├── coverage_matrix.py # ATT&CK coverage report │ └── validate_rules.py # Rule schema validator │ ├── fleet/ # Optional fleet server │ ├── server.py │ └── requirements.txt │ └── Tests/ └── MacCrabCoreTests/ ├── MacCrabCoreTests.swift # Core engine tests ├── PipelineTests.swift # Pipeline integration tests ├── DeepMacOSTests.swift # macOS-specific tests ├── AIGuardTests.swift # AI Guard tests ├── SuppressionTests.swift # Suppression manager tests └── ForensicTests.swift # Forensic component tests ```
## 贡献 我们欢迎贡献检测规则和代码。完整指南请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ### 规则 特别欢迎贡献检测规则。规则采用 [Detection Rule License 1.1](https://github.com/SigmaHQ/Detection-Rule-License) (DRL 1.1) 授权。要贡献规则: 1. 以 Sigma YAML 格式编写您的规则 2. 将其放入相应的 `Rules//` 目录中 3. 确保它具有唯一的 UUID、MITRE ATT&CK 标签以及已记录的误报情况 4. 运行 `make lint-rules` 进行验证 5. 运行 `make test-fp` 检查误报 6. 提交 Pull Request ### 代码 代码贡献采用 [Apache License 2.0](LICENSE) 授权。我们使用 Swift 的带有 actor 的结构化并发模型以确保线程安全。代码风格指南和测试期望请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 - **代码**:[Apache License 2.0](LICENSE) - **检测规则** (`Rules/`):[Detection Rule License 1.1 (DRL 1.1)](https://github.com/SigmaHQ/Detection-Rule-License) ## 致谢 - [**SigmaHQ**](https://github.com/SigmaHQ/sigma) —— 感谢其提供的 Sigma 检测规则格式以及启发了本项目规则结构的社区驱动规则库 - [**Objective-See Foundation**](https://objective-see.org/) —— 感谢其在开源 macOS 安全研究、工具和参考实现方面的先驱工作,这些为 MacCrab 的设计提供了参考 - [**coreSigma (Nebulock)**](https://github.com/nebulock/coreSigma) —— 感谢其 pySigma macOS ESF 管道工作,展示了针对 Endpoint Security 事件的 Sigma 规则评估 - [**abuse.ch**](https://abuse.ch/) —— 感谢其开放的威胁情报源(Feodo Tracker、URLhaus、MalwareBazaar),为 MacCrab 的威胁情报富化提供了支持 - **Apple Endpoint Security 框架** —— 感谢其提供内核级别的可见性,使 macOS 上的实时检测成为可能
标签:AI安全, AI编程工具监控, AMSI绕过, API接口, Chat Copilot, DNS 解析, EDR, Endpoint Security框架, Homebrew, JSONLines, macOS安全, Mac管理员, Sigma规则, Swift, SwiftUI, Sysmon, Web归档检索, 威胁检测, 安全引擎, 安全研究人员, 搜索语句(dork), 无云依赖, 时序分析, 本地安全, 本地部署, 目标导入, 端点检测与响应, 系统开源, 系统扩展, 系统菜单栏, 网络安全, 脆弱性评估, 脱壳工具, 逆向工具, 防病毒, 隐私保护, 零信任