trac3r00/siem-detect
GitHub: trac3r00/siem-detect
一款低依赖的跨格式 Sigma 规则检测引擎,让用户无需部署完整 SIEM 即可直接对日志文件进行威胁检测并输出 MITRE ATT&CK 映射结果。
Stars: 0 | Forks: 0
# siem-detect
一款轻量、低依赖的 **Sigma 检测引擎**,专为日志设计——面向希望直接针对日志数据*运行* Sigma 规则,而无需部署完整 SIEM 的 SOC 分析师和检测工程师。
将其指向一个日志文件(JSON、syslog、nginx/Apache、Linux auth 或 Windows EVTX-as-JSON),它将:
1. **解析** 日志为结构化事件,并自动检测其 `logsource`。
2. **匹配** 每一个事件与内置(或自定义)的 **Sigma 规则** 集,支持字段修饰符(`contains`、`cidr`、`endswith`、`re`、`base64`、`gt/lt` 等)以及完整的 `condition` 微型语言(`and`/`or`/`not`、括号、`1 of selection*`、`all of them`)。
3. **报告** 准备好供分析师查看的结论,并将每次检测映射到 **MITRE ATT&CK** 的技术和战术——以 markdown、JSON 或 JSONL 格式输出。
## 为什么会有这个项目
像 [Hayabusa](https://github.com/Yamato-Security/hayabusa) 和 [Chainsaw](https://github.com/WithSecureLabs/chainsaw) 这样的工具能在 **Windows EVTX** 上运行 Sigma 规则,非常出色——但它们是仅限于 Windows 取证的 Rust 二进制程序。`sigma-cli`/pySigma 可以将规则转换为*后端查询*,但它们本身从不进行任何匹配。`siem-detect` 填补了中间的空白:这是一个微型、易读、跨格式的 Python 引擎,你可以轻松将其加入 pipeline、CI 检查或分类分析笔记本中。
## 架构
```
┌───────────────────────────────┐
log file ─►│ logsource.py — parsers │──► events[] + {product,service}
(any of │ jsonl · json · syslog · │
5 formats) │ auth · nginx · evtx-json │
└───────────────┬───────────────┘
│
┌───────────────▼───────────────┐
Sigma ───►│ sigma.py — rule model + │
rules │ field matchers + condition │
(YAML) │ evaluator (AND/OR/NOT/1 of) │
└───────────────┬───────────────┘
│
┌───────────────▼───────────────┐
│ engine.py — scan + Report │──► markdown / JSON / JSONL
│ verdict + MITRE ATT&CK roll-up│ + CI exit code
└───────────────────────────────┘
```
## 快速开始
```
# 安装(可编辑模式)到 venv 中
python3.11 -m venv .venv && source .venv/bin/activate
pip install -e .
# 使用内置 ruleset 扫描 Linux auth log
siem-detect /var/log/auth.log
# 扫描 nginx access log,输出 JSON
siem-detect access.log -f nginx -o json
# 从 stdin 导入 Windows Sysmon(EVTX 导出为 JSON)
cat sysmon.jsonl | siem-detect - -f evtx-json
# 使用您自己的 rules,仅报告 high+ 严重级别
siem-detect app.log -r ./my-rules --min-level high
# CI gate:如果有任何 critical 触发则非零退出
siem-detect audit.jsonl --fail-on critical
```
### 输出示例
```
# siem-detect 报告 — 判定:🔴 CRITICAL
- events scanned: 6
- rules loaded: 14 · matched: 4
- total detections: 5
- by level: 🔴 critical: 1 🟠 high: 2 🟡 medium: 2
- MITRE ATT&CK: `T1190`×2, `T1110.004`×2, `T1505.003`×1
| # | level | rule | ATT&CK | event # | key fields |
|---|-------|------|--------|---------|------------|
| 1 | 🔴 critical | Web Shell Upload Or Access | T1505.003 | 2 | uri=/uploads/shell.php?cmd=id; status=200 |
| 2 | 🟠 high | Web SQL Injection Attempt In URI | T1190 | 0 | src_ip=203.0.113.9; uri=…union+select… |
| … |
```
## 支持的日志格式
| `--format` | 来源 | logsource 定位 |
|-------------|------------------------------------------|------------------------------|
| `auto` | 嗅探前约 50 行 | 根据检测到的格式推导 |
| `jsonl` | 每行一个 JSON 对象 | 无(匹配任何规则) |
| `json` | 单个 JSON 数组/对象 | 无 |
| `syslog` | 类似 RFC3164 格式 `time host prog[pid]: msg` | `product: linux` |
| `auth` | Linux `/var/log/auth.log` (sshd/sudo) | `product: linux, service: auth` |
| `nginx` | nginx/Apache 组合访问日志 | `category: webserver` |
| `evtx-json` | 导出为 JSON 的 Windows EVTX | `product: windows` |
Windows 解析器会将 `evtx_dump`、EvtxECmd 和 winlogbeat 生成的常见 `{"Event": {"System": {...}, "EventData": {...}}}` 结构展平为扁平的 Sigma 字段。
## 内置规则集(14 条规则)
| 平台 | 规则 |
|----------|-------|
| **linux** | SSH 暴力破解(外部)、SSH 无效用户、反向 shell 单行命令、sudo→root 提权 |
| **web** | SQL 注入、路径遍历 / LFI、web-shell 访问、HTTP 认证暴力破解 |
| **windows** | 编码/隐藏的 PowerShell、LSASS 凭据转储、特权组添加 |
| **cloud** | AWS CloudTrail 被禁用、AWS root 控制台登录、AWS IAM 访问密钥被创建 |
每条规则都带有 MITRE ATT&CK 标签(`attack.tNNNN[.NNN]`)和 `level`。
将你自己的 `*.yml` Sigma 规则放入任何目录中,并传入 `-r` 参数即可。
## Sigma 支持范围
已实现 [Sigma 规范](https://sigmahq.io/docs)的子集包括:
- **logsource** 定位(`category` / `product` / `service`)
- 作为字典(隐式 AND)和列表(OR)的 **selections**、字段列表(OR),以及 `keywords` 块(对整个事件进行子字符串 OR 匹配)
- **field modifiers**:`contains`、`startswith`、`endswith`、`all`、`re`、`cidr`、`base64`、`base64offset`、`windash`、`lt`/`lte`/`gt`/`gte`、`cased`、`exists`
- **condition**:`and` / `or` / `not`、括号、`1 of pattern*`、`all of pattern*`、`1 of them`、`all of them`
- 指向嵌套 JSON 的点分字段路径(`userIdentity.type`)
尚未实现(超出了主机端匹配器的范围):规则关联、后端查询转换和字段映射 pipeline——请使用 pySigma 来处理这些任务。
## 开发
```
pip install -e ".[dev]"
pytest -q # 30 tests: engine, parsers, end-to-end
```
## 供应链安全 (CI)
每次 push、PR 以及每周的定时任务都会运行 **[OSV-Scanner](https://github.com/google/osv-scanner)** 检查门([`.github/workflows/security.yml`](.github/workflows/security.yml)):解析后的依赖树会被冻结到锁定文件中,并与 [OSV.dev](https://osv.dev) 漏洞数据库进行比对。如果依赖项携带了已知的 CVE,构建就会失败——因此,即使没有代码更改,新披露的安全公告也会及时显现。
## 许可证
MIT — 请参阅 [LICENSE](LICENSE)。
标签:Python, Sigma规则, SOC分析, URL发现, 安全检测, 无后门, 目标导入, 逆向工具