Olaniyansodiq1234/Production-Hunt-Engine
GitHub: Olaniyansodiq1234/Production-Hunt-Engine
一个用 Python 和 DuckDB 从零构建的 SIEM 风格安全日志分析引擎,能够流式摄入多源日志并自动检测攻击活动。
Stars: 0 | Forks: 0
# 🛡️ Production Hunt 引擎
**一个 SIEM 风格的安全日志分析引擎,能够从原始日志中检测攻击活动。**
使用 Python、DuckDB 和 SQL 从零开始构建。处理 schema drift、重复数据、无效时间戳,并关联 5 个日志源(Auth、DNS、Web、Firewall、Endpoint)的事件。
## 📊 项目概述
| 指标 | 数值 |
|--------|-------|
| 处理的总事件数 | 749,975 |
| 来源 | 5 (Auth, DNS, Web, Firewall, Endpoint) |
| 隔离的行数 | 25 |
| 检测到的活动 | 3 |
| 审查的案例 | 96 |
| 良性 | 86 |
| 已升级 | 10 |
## 🎯 核心功能
- ✅ **流式摄入** – 逐行处理 JSONL 日志
- ✅ **Schema Drift 处理** – 支持 v1/v2/v3 日志格式
- ✅ **隔离** – 隔离无效行并附带原因代码
- ✅ **去重** – 移除重复事件
- ✅ **活动检测** – 识别 3 种攻击模式:
- 暴力破解认证
- 恶意 DNS 查询
- 多阶段攻击 (Web → Firewall → Endpoint)
- ✅ **证据追踪** – 每一个声明都链接到原始源文件 + 行号
- ✅ **案例审查** – 分类 96 个可疑活动 (86 个良性,10 个升级)
## 🏗️ 架构
## 🏗️ 架构图

**数据流:**
1. 原始日志 (JSONL) → Adapters 检测 schema 版本
2. 标准化转换为标准格式
3. DuckDB 存储标准化事件
4. SQL 查询检测攻击活动
5. 报告导出为 CSV/JSON
## 📁 项目结构
UBI-2026-0085-STAGE_5_FINAL/
├── hunt-engine/
│ └── src/
│ ├── adapters/ # Schema 版本处理器
│ ├── pipeline/ # 摄入引擎
│ ├── correlation/ # 活动检测
│ ├── review/ # 案例分类
│ └── cli/ # 命令行界面
├── tests/ # 单元测试
├── queries/ # SQL 检测查询
├── Images/ # 截图
│ ├── verification.png # 数据库验证
│ ├── campaigns.png # 活动检测结果
│ └── tests.png # 测试结果
├── outputs/ # 生成的报告 (clean.db, CSVs, JSONs)
├── Makefile # 自动化
├── requirements.txt # 依赖项
└── README.md
## 🚀 快速开始
### 1. 克隆仓库
```bash
git clone https://github.com/YOUR-USERNAME/production-hunt-engine.git
cd production-hunt-engine
```
### 2. 设置虚拟环境
```bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
### 3. 摄入日志
```bash
python3 hunt-engine/src/cli/main.py ingest
```
### 4. 检测活动
```bash
python3 hunt-engine/src/cli/main.py hunt
```
### 5. 审查案例
```bash
python3 hunt-engine/src/cli/main.py review
```
### 6. 运行测试
```bash
pytest tests/ -v --junitxml=outputs/test-results.xml
```
## 🔧 Makefile 命令
| 命令 | 描述 |
|--------|-------|
| make clean | 删除生成的文件 |
| make build | 设置虚拟环境 |
| make test | 运行测试 |
| make run | 摄入 + 检测 + 报告 |
| make verify | 验证所有输出 |
## 📊 输出示例
### 数据库验证


### 活动图
### 🧪 
### 测试结果
✅ test_database_exists PASSED
✅ test_events_table PASSED
✅ test_sources_exist PASSED
✅ test_campaigns_exist PASSED
✅ test_tp_fp_table PASSED
## 📈 活动检测结果
### 活动 1:Auth 暴力破解
```json
{
"campaign_type": "auth_bruteforce",
"indicators": {"user_name": "user349", "fail_count": 21},
"evidence": [{"source": "auth", "file": "auth.jsonl", "row": 8298}],
"confidence": "high"
}
```
### 活动 2:Firewall 拒绝模式
```json
{
"campaign_type": "firewall_deny",
"indicators": {"src_ip": "", "deny_count": 1934},
"evidence": [{"source": "firewall", "file": "firewall.jsonl", "row": 8}],
"confidence": "medium"
}
```
### 活动 3:DNS Asset 查询
```json
{
"campaign_type": "dns_asset_queries",
"indicators": {"host": "asset-017", "query_count": 5},
"evidence": [{"source": "dns", "file": "dns.jsonl", "row": 39}],
"confidence": "medium"
}
```
## 🔑 关键经验
| 经验 | 含义 |
|--------|-------|
| 证据 > 标签 | 每一个声明都需要源文件 + 行号 |
| 一切自动化 | Makefile、测试、验证 |
| 核对一切 | 每一行都要有交代 |
| 时钟校正 | 必须应用 3,900 秒的漂移 |
| 身份解析 | 别名必须在分组前解析 |
## 🛠️ 技术栈
| 组件 | 技术 |
|--------|-------|
| 语言 | Python 3.11+ |
| 数据库 | DuckDB |
| 测试 | Pytest |
| 数据格式 | JSONL |
| 查询引擎 | SQL |
| 自动化 | Make |
## 📄 交付物
| # | 文件 | 状态 |
|--------|-------|-------|
| 1 | hunt-engine/ | ✅ |
| 2 | tests/ | ✅ |
| 3 | queries/ | ✅ |
| 4 | benchmark.json | ✅ |
| 5 | normalized-timeline.csv | ✅ |
| 6 | campaign-graph.json | ✅ |
| 7 | tp-fp-table.csv | ✅ |
| 8 | data-quality-register.csv | ✅ |
| 9 | evidence-index.csv | ✅ |
| 10 | manifest.sha256 | ✅ |
| 11 | integrity-attestation.md | ✅ |
| 12 | README.md | ✅ |
| 13 | assessment-manifest.json | ✅ |
| 14 | continuity-record.md | ✅ |
| 15 | Makefile | ✅ |
| 16 | test-results.xml | ✅ |
## 👨💻 作者
UBI-2026-0085 – SOC Analyst 项目
📂 GitHub:
🔗 LinkedIn:
## ⭐ 支持
如果这个项目对您有帮助,请给仓库点个 star ⭐!
标签:AMSI绕过, DuckDB, IP 地址批量处理, Python, SIEM引擎, 多线程, 威胁检测, 安全日志分析, 数据清洗, 无后门, 日志关联分析, 时序数据库, 红队行动, 逆向工具