内容
<div align="center">
# ⚔️ SigmaLineage 中枢
### *情境感知 EVTX 猎杀 · 血统优先分类 · 零噪音容忍度*
[](https://python.org)
[](https://github.com/jlowin/fastmcp)
[](https://github.com/WithSecureLabs/chainsaw)
[](https://sigmahq.io)
---
> **"Sigma 命中的意义在于其故事。进程血统链 *是* 故事。"**
</div>
---
## 🎯 为什么选择 SigmaLineage?
现代安全运营中心(SOC)中的 EVTX 分类是 **与噪音赛跑**。您有数百万事件、数百个警报和数秒的时间来决定什么是真实的。
<table>
<tr>
<td width="50%" valign="top">
### 🔍 对于 SOC 分析师
通用警报淹没了真正的事件,产生了 **大量误报**。您不需要更多的警报,而是需要 **从噪音中提取信号**。
SigmaLineage 的 **罕见基线引擎** 自动显示:
- 🚨 异常的进程到端口连接
- 👤 可疑的用户日志事件签名
- 🌐 没有人进行的奇怪 URL 查询
**快速找到真正的威胁。**
</td>
<td width="50%" valign="top">
### 🧬 对于检测工程师
一个 Sigma 规则触发了。但这是系统管理员在执行任务还是攻击者正在横向移动?
**进程血统链是我们的核心护城河。**
SigmaLineage 跟踪完整的父→子执行树 - 最高可达 5+ 代 - 将孤立的警报转化为可视的杀伤链。您可以立即看到:
- 这个 cmd.exe 是否由 `services.exe` 或 `w3wp.exe` 启动?
- `rundll32` 是否从 `ProgramData` 启动?
- `WmiPrvSE.exe` 是否刚刚启动了一个反向 shell?
**停止追逐幽灵。确认杀伤链。**
</td>
</tr>
</table>
---
> 🧠 **通过结合快速的 Sigma 匹配、自动的血统图绘制和多维罕见基线,SigmaLineage 中枢将原始 EVTX 日志转化为可行动的、丰富的上下文情报 - 适用于 AI 代理和人类分析师。**
---
## 🔧 构建于
| 组件 | 角色 |
|---|---|
| `src/sigmalineage_mcp/mappings/sigma-event-logs-all.yml` | Chainsaw 字段映射定义 |
| `sigma_lineage.py` | 进程血统运行器脚本 |
| `src/sigmalineage_mcp/` | FastMCP 服务器编排 |
---
## 工具概述
### 1) `run_sigma`
运行 Chainsaw Sigma 猎杀命令并返回规则命中的摘要。
**输入:**
- `evtx_path`(要扫描的日志文件或文件夹)
- `sigma_rules_path`(包含 Sigma 规则的目录)
- `mapping_path`(Chainsaw 映射 yaml,默认为 `src/sigmalineage_mcp/mappings/sigma-event-logs-all.yml`)
- `output_dir`(写入 `hunt.json` 的目录)
**输出亮点:**
- `hunt_json_path`
- `hit_count`
- `top_rules`
- `top_source_files`
---
### 2) `run_sigma_lineage`
运行 Sigma 猎杀(或加载现有结果)并跟踪命中进程的父/子进程血统。
**输入:**
- 所有 `run_sigma` 输入
- `levels`(跟踪祖先级别,默认为 `5`)
- `skip_hunt`(跳过运行 Chainsaw 猎杀,而是加载现有的 `hunt.json`,默认为 `false`)
**输出亮点:**
- `hunt_json_path`
- `process_lineage_json_path`
- `process_lineage_md_path`
- `sigma_hit_count`
- `indexed_evtx_files`
- `indexed_events`
**血统亮点示例输出:**

---
### 3) `rare_events_baseline`
从解析的 CSV 事件日志中计算罕见的元组组合,并与基线比较以突出异常。
**输入:**
- `target_csv_path`(要分析的 CSV 文件或文件夹)
- `baseline_csv_path`(可选,默认为目标范围本身)
- `max_results`(默认为 `25`)
- `max_baseline_count`(基线出现过滤阈值,默认为 `2`)
**分析的元组家族:**
- `process_dst_port_protocol`:映射进程名称、目标端口和协议的唯一组合。
- `user_channel_event_id`:映射用户、日志通道和事件 ID 的唯一组合。
- `url_host_process`:映射访问的 URL/域、主机计算机和启动进程名称的唯一组合。
**罕见基线分析输出示例:**

---
## 文件夹结构
```text
sigmalineage-mcp/
sigma_lineage.py # 血统追踪器 CLI 脚本
pyproject.toml # 项目配置和依赖项
README.md # 此文件
src/
sigmalineage_mcp/
__init__.py
__main__.py # 标准脚本入口点
config.py # 路径配置
server.py # FastMCP 服务器编排
mappings/
sigma-event-logs-all.yml # Chainsaw 映射文件
services/
chainsaw_runner.py # Chainsaw 子进程运行器
lineage_runner.py # 血统追踪器子进程运行器
rarity.py # 纯 Python CSV 罕见基线引擎
```
---
## 安装
### 先决条件
1. **Chainsaw CLI**:确保 `chainsaw` 已安装并可在您的 `PATH` 中(例如 `~/.local/bin/chainsaw`)。
2. **Python**:需要 Python 3.10+。
### 设置
从存储库根目录:
```bash
uv sync
```
---
## 运行服务器
### 直接执行
启动 FastMCP 标准输入/输出服务器:
```bash
uv run sigmalineage-mcp
```
### MCP 客户端配置
要将此 MCP 服务器连接到不同的 AI 客户端,请使用下面的标准 JSON 配置片段,并将其放在特定于工具的配置文件位置。
#### 标准 JSON 片段
```json
{
"mcpServers": {
"sigmalineage-mcp": {
"command": "uv",
"args": [
"run",
"--project",
"/absolute/path/to/sigmalineage_mcp",
"sigmalineage-mcp"
],
"env": {
"SIGMALINEAGE_PROJECT_ROOT": "/absolute/path/to/sigmalineage_mcp"
}
}
}
}
```
*注意:将 `/absolute/path/to/sigmalineage_mcp` 替换为系统上克隆此存储库的实际路径。*
#### 客户端配置文件路径
* **Cursor**:添加到 Cursor GUI 设置面板(`设置 -> 功能 -> MCP`)或编辑 `~/.cursor/mcp.json`(Linux/macOS)或 `%USERPROFILE%\.cursor\config\mcp.json`(Windows)。
* **Antigravity**:添加到位于 `~/.gemini/antigravity/mcp_config.json` 的 `mcp_config.json` 配置文件。
* **OpenCode**:添加到 `~/.config/opencode/opencode.json`(Linux/macOS)或存储库根目录中的项目级 `opencode.json` 文件。
* **Claude Desktop**:添加到全局配置文件:
* macOS:`~/Library/Application Support/Claude/claude_desktop_config.json`
* Windows: `%APPDATA%\Claude\claude_desktop_config.json`
* Linux: `~/.config/Claude/claude_desktop_config.json`