GuftarRaza/Project-bluePrint
GitHub: GuftarRaza/Project-bluePrint
将多源杂乱的安全日志自动标准化、去重并映射 MITRE ATT&CK,生成统一时间线以辅助安全事件调查与威胁狩猎。
Stars: 0 | Forks: 0
# project-blueprint
**智能事件时间线与攻击路径重建器**
将杂乱、多源的安全日志转换为单一的 **UTC 标准化、按时间排序、映射至 MITRE ATT&CK** 的时间线 —— 适用于 SOC 分诊、DFIR、威胁狩猎和紫队工作。
无需再手动关联 Sysmon、Windows Event Logs、IIS 和 SIEM 导出文件中的电子表格,只需放入文件,即可获得带有技术标签、缺失分析和已保存调查会话的统一时间线。
## 功能
- **模块化摄入** — 为通用 CSV(包括 Microsoft Defender / Sentinel 高级搜寻 schema)、Sysmon/Windows Event JSON、IIS/W3C 日志和原生 `.evtx` 提供可插拔的解析器。
- **标准化引擎** — 所有时间戳均被解析为带时区的 UTC;原始时间戳通过 `--assume-tz` 进行本地化。
- **MITRE ATT&CK 标记** — 基于规则的匹配器,支持 AND/OR 谓词组;具备 LogonType 感知的登录规则,以减少误报。
- **跨源去重** — 在多个数据源中看到的相同事件会折叠为一个。
- **缺失分析** — 标记时间顺序上的缺失,这可能表明日志已丢失或被篡改。
- **持久化** — 在 SQLite 中保存/加载调查会话。
- **三种接口** — CLI、FastAPI 后端和拖放式 Streamlit 仪表板。
## 安装
```
git clone https://github.com/GuftarRaza/project-blueprint.git
cd project-blueprint
pip install -e ".[all,dev]" # everything
# 或选择 extras:".[api]", ".[ui]", ".[evtx]"
```
核心安装 (`pip install -e .`) 仅需要 pandas。解析 EVTX 需要使用 `evtx` 扩展依赖。
## 用法
### CLI
```
project-blueprint csv:samples/defender.csv iis:samples/web.log \
--assume-tz UTC --gap-threshold 30 --save case-001
```
每个输入都是一个 `:` 对。运行 `project-blueprint -h` 查看可用选项。
### Streamlit 仪表板
```
streamlit run app/streamlit_app.py
```
在侧边栏上传日志,选择一个解析器,并探索 **Timeline**、**MITRE ATT&CK** 和 **Gap analysis** 标签页。保存会话并稍后重新加载。
### FastAPI 后端
```
uvicorn project_blueprint.api:app --reload
```
| 方法 | Endpoint | 用途 |
|--------|----------|---------|
| GET | `/health` | 健康检查 |
| GET | `/parsers` | 列出可用的解析器 |
| POST | `/timeline` | 上传日志文件,获取时间线 + 缺失分析 + MITRE 摘要 |
| GET | `/sessions` | 列出已保存的会话 |
| GET | `/sessions/{id}` | 加载一个会话 |
| DELETE | `/sessions/{id}` | 删除一个会话 |
交互式文档位于 `http://127.0.0.1:8000/docs`。
## 扩展
### 添加解析器
```
# src/project_blueprint/parsers/myparser.py
from ..schema import blank_row
from . import register_parser
@register_parser("myformat")
def parse_myformat(path):
rows = []
for record in ...:
row = blank_row()
row["timestamp_utc"] = ...
row["source"] = "myformat"
# ...populate canonical fields...
rows.append(row)
return rows
```
在 `parsers/__init__.py` 中导入它,以便运行装饰器。就是这样 —— 它现在已可供 CLI、API 和 UI 使用。
### 添加 MITRE 规则
将一个 `MitreRule` 追加到 `mitre.py` 的 `DEFAULT_RULES` 中。每条规则包含多个 AND 谓词组;如果任何一组完全匹配,则该规则触发。
```
MitreRule("T1486", "Data Encrypted for Impact", "Impact", [
[field_contains("command_line", r"vssadmin delete|\.locked")],
])
```
## 标准化事件 schema
解析器将每条记录标准化为:`timestamp_utc, source, host, user, event_id, process, command_line, src_ip, dst_ip, logon_type, message, raw`。
## 项目布局
```
src/project_blueprint/
schema.py canonical fields
normalize.py timestamp -> UTC
mitre.py ATT&CK rule engine + default ruleset
timeline.py parse -> tag -> sort -> dedup, gaps, summary
storage.py SQLite sessions
cli.py command line
api.py FastAPI backend
parsers/ csv, sysmon_json, iis, evtx (+ registry)
app/streamlit_app.py
tests/
samples/
```
## 测试
```
pytest
```
## 免责声明
内置的规则集是一个用于演示的**入门级集合**。在依赖输出结果进行调查之前,请根据您的环境调整检测、阈值和时区处理。
## 许可证
MIT — 见 [许可证](LICENSE)。
标签:AV绕过, Cloudflare, FastAPI, Kubernetes, MITRE ATT&CK, Streamlit, 安全规则引擎, 安全运营, 库, 应急响应, 扫描框架, 访问控制, 逆向工具