navaneedm7/threat-hunting-dashboard
GitHub: navaneedm7/threat-hunting-dashboard
基于 Streamlit 和模拟 SIEM 数据构建的威胁狩猎仪表盘,用于展示从日志狩猎、MITRE ATT&CK 检测到攻击时间线重建的完整 SOC 分析工作流程。
Stars: 0 | Forks: 0
# 🛡️ 威胁狩猎仪表盘
一个基于 Streamlit 构建的威胁狩猎工作台,使用模拟的 SIEM 遥测数据
(Windows 身份验证日志、Sysmon 风格的进程创建以及网络
连接日志)。它允许您狩猎原始日志,查看映射到 MITRE ATT&CK 的
检测结果,重建攻击时间线,并记录调查笔记 —
展示 SOC/威胁狩猎分析师的端到端工作流程。
## 为什么做这个项目
这个作品集项目旨在展示:
- 对真实 SIEM(Splunk / Sentinel / ELK)摄取的日志源的理解
- 检测工程:编写可解释的、基于规则的检测
- 将检测结果映射到 **MITRE ATT&CK** 框架
- 构建面向分析师的工具(查询接口、告警研判、案例笔记)
- 从不同的日志源重建多阶段攻击
## 内嵌的攻击场景
合成数据集(`data/generate_logs.py`)在约 1,500 行正常后台活动的基础上,
植入了一个真实的多阶段入侵:
| 阶段 | 技术 | MITRE ID | 描述 |
|---|---|---|---|
| 1 | Phishing | T1566.001 | 恶意 Word 文档生成 PowerShell |
| 2 | Execution | T1059.001 | 混淆/编码的 PowerShell 命令 |
| 3 | C2 | T1071 | 从外部 IP 下载 Payload |
| 4 | Credential Access | T1003.001 | LSASS 内存转储 (procdump) |
| 5 | Brute Force | T1110 | 针对 `svc_sql` 的密码喷洒 |
| 6 | Lateral Movement | T1021.002 | PsExec 风格的远程执行 |
| 7 | C2 | T1071.004 | 固定间隔的 DNS Beaconing |
| 8 | Exfiltration | T1041 | 向攻击者 IP 传出 245MB 数据 |
仪表盘的检测规则捕获了每个阶段 —— “攻击时间线”页面
按时间顺序重建了完整的杀伤链。
## 功能
- **概览** — KPI 卡片、按严重程度/技术分类的发现、随时间变化的事件量
- **狩猎查询** — 跨身份验证/进程/网络日志的交互式过滤,支持
一键“快速狩猎”(编码的 PowerShell、Office→shell、罕见进程)
- **检测** — 映射到 MITRE 的告警流,包含严重程度、证据和
调查/重新打开工作流;可导出为 CSV
- **攻击时间线** — 按时间顺序重建入侵过程
- **案例笔记** — 针对每项发现的分析师笔记,展示调查工作流程
## 技术栈
- **Streamlit** — UI/仪表盘框架
- **Pandas** — 日志解析和查询
- **Plotly** — 交互式图表
- 检测逻辑是纯 Python/Pandas —— 完全透明,没有黑盒
## 项目结构
```
threat-hunting-dashboard/
├── data/
│ ├── generate_logs.py # synthetic log generator (run once)
│ ├── auth_logs.csv
│ ├── process_logs.csv
│ └── network_logs.csv
├── detections/
│ └── rules_engine.py # 9 MITRE-mapped detection rules
├── app/
│ └── main.py # Streamlit application
├── requirements.txt
└── README.md
```
## 设置与运行
```
# 1. 克隆 / 解压项目
cd threat-hunting-dashboard
# 2. 安装依赖
pip install -r requirements.txt
# 3. (可选)使用不同的 seed 重新生成 synthetic dataset
python data/generate_logs.py
# 4. 启动 dashboard
streamlit run app/main.py
```
应用将在 `http://localhost:8501` 打开。
## 部署(用于您的简历链接)
此代码库可直接免费部署到 [Streamlit Community Cloud](https://streamlit.io/cloud):
1. 将此代码库推送到 GitHub
2. 访问 share.streamlit.io → 新建应用 → 指向 `app/main.py`
3. 在您的简历/LinkedIn 上分享公开的 URL
## 已实现的检测规则
| 规则 | MITRE 技术 | 来源 |
|---|---|---|
| 可疑的 PowerShell(编码/隐藏) | T1059.001 | 进程 |
| Office 应用程序生成 Shell | T1566.001 | 进程 |
| 凭据转储 (LSASS) | T1003.001 | 进程 |
| 暴力破解 | T1110 | 身份验证 |
| 暴力破解 → 成功登录 | T1110 → T1078 | 身份验证 |
| 横向移动工具 (PsExec/WMI) | T1021.002 | 进程 |
| DNS Beaconing(固定间隔) | T1071.004 | 网络 |
| 数据外发(大量传输) | T1041 | 网络 |
| 已知恶意 IP 连接 | T1071 | 网络 |
## 扩展本项目
进一步发展的想法(面试中很好的讨论点):
- 将 CSV 摄取替换为实时的 **Elasticsearch** 或 **Splunk** 后端
- 为“已知恶意 IP”规则添加真实的威胁情报源(例如 AbuseIPDB API)
- 添加一个评分/风险模型,将每个主机的多个发现聚合为
整体风险评分
- 使用 Docker + docker-compose 进行容器化,实现一键设置
- 添加用户身份验证,以实现多分析师案例管理视图
## 免责声明
本项目中的所有数据均为**合成生成** —— 未使用任何真实日志、IP
或凭据。可安全公开发布。
标签:IP 地址批量处理, Kubernetes, OpenCanary, Python, Streamlit, 安全, 安全运营中心, 无后门, 网络映射, 访问控制, 超时处理, 逆向工具