dylanpatriarchi/argus

GitHub: dylanpatriarchi/argus

一个用 Nim 编写的极简教育型 EDR 工具,通过采集和标准化主机遥测数据,运行基于规则的检测引擎并映射 MITRE ATT&CK 来帮助理解终端威胁检测原理。

Stars: 0 | Forks: 0

# Argus **一个使用 Nim 编写的、极简的、具有教育意义的 EDR / endpoint 监控工具。** Argus 负责观察主机上发生的事件 —— 包括进程、文件和网络事件 —— 将它们标准化为单一的类型化事件模型,并运行一个声明式的、 基于规则的检测引擎,该引擎会引发映射到 MITRE ATT&CK 的警报。 ## 原则 - **仅用于防御和观察。** Argus 仅读取遥测数据。它绝不会 注入、篡改、隐藏或修改其他进程。此代码库中 没有任何攻击性功能,以后也绝不会添加。 - **最小权限原则。** 每个 collector 都明确记录了它所需的 确切权限及其原因。没有任何组件会要求超出其遥测需求的权限,并且 Argus 永远不会要求您削弱主机安全性来运行它。 - **尽早标准化。** 原始平台结构仅停留在 collector 边界处。 下游的所有内容 —— engine、rules、sinks —— 仅能看到标准化的 `Event` 类型。 - **负责任地处理数据。** 命令行和文件路径通常包含 个人数据。Argus 仅收集规则所需的最少数据,并允许您 通过配置进一步缩小范围。 ## Pipeline ``` collectors ──▶ normalizer ──▶ event bus ──▶ rule engine ──▶ alert sinks (platform) (to Event) (in-proc) (YAML rules) (json/console) ``` ## 快速开始 需要 Nim 2.0 或更高版本。 ``` nimble build # produces ./argus nimble test # runs the unit suite nimble lint # type-checks every module ./argus version # version + scope disclaimer ./argus demo # a synthetic alert through both sinks ./argus check-trace tests/data/sample_trace.jsonl ``` `argus demo` 会发出一个 **合成的** 警报 —— 产生该警报的过程 不会观察您机器上的任何内容。它的存在是为了在任何 collector 存在之前,就能看到警报 sinks 正常工作: ``` [CRITICAL] ARG-DEMO-001 Interactive shell spawned by a web server, then outbound connection when 2026-08-01T10:15:35.512Z host argus-demo attack T1059.004 · execution https://attack.mitre.org/techniques/T1059/004/ evidence · process_start /usr/bin/bash (pid 4711) exe /usr/bin/bash cmdline bash -i parent /usr/sbin/nginx (pid 1240) user www-data (uid 33) · net_connect tcp 203.0.113.10:4444 ``` 相同的警报也会以单行 JSON 的形式输出,这正是 SIEM 将会 接收的格式。 ## 作为库使用 ``` import argus let ev = initEvent( action = aProcessStart, actor = initActor(pid = 4711, ppid = 1240, exe = "/usr/bin/bash", cmdline = @["bash", "-i"], parentExe = "/usr/sbin/nginx")) let alert = initAlert("MY-RULE-001", "Shell from web server", sevHigh, @[ev], attack = AttackRef(tactic: "execution", technique: "T1059.004")) let sinks = newSinkGroup(newConsoleSink(), newJsonFileSink("alerts.jsonl")) sinks.submit(alert) sinks.close() ``` ## 状态 正在按里程碑逐步构建中。有关事件 schema、collector 接口、规则格式和完整的路线图,请参阅 [`docs/design.md`](docs/design.md)。 | # | 里程碑 | 状态 | |---|-----------|--------| | 1 | 脚手架、`Event` 模型、警报 sinks、测试 | ✅ 完成 | | 2 | 规则引擎 v1:YAML 规则、字段匹配、ATT&CK | 计划中 | | 3 | 进程 collector (Linux) | 计划中 | | 4 | 文件 collector (inotify) | 计划中 | | 5 | 网络 collector | 计划中 | | 6 | 有状态关联窗口 | 计划中 | | 7 | CLI、配置、入门规则包、演示 | 计划中 | 里程碑 1 **没有 collectors**:Argus 尚未观察任何内容。它 提供了标准化的事件模型、JSON 传输格式和警报 sinks, 所有这些都已通过单元测试覆盖。 ### 权限 目前暂无 —— 尚未收集任何数据。每个 collector 都将记录其 所需的权限以及在无权限时可用的降级后备方案,正如 [`docs/design.md`](docs/design.md#3-collector-interface) 中所述。Argus 永远不会 要求您禁用主机安全性,也不会授予超出其 遥测需求的权限。 ## 许可证 MIT —— 详见 [LICENSE](LICENSE)。
标签:EDR, Homebrew安装, Nim, 云计算, 安全教学, 终端安全, 脆弱性评估, 规则引擎