guado1983-star/Threat-Mapper
GitHub: guado1983-star/Threat-Mapper
ThreatMapper 是一个融合数字日志解析与物理传感器检测的威胁关联平台,通过 MITRE ATT&CK 映射和威胁评分帮助安全团队识别并响应混合型入侵行为。
Stars: 0 | Forks: 0
# ThreatMapper
一个物理-数字威胁检测与关联系统,能够解析安全事件,将它们映射到 **MITRE ATT&CK** 框架,并将数字入侵与现实世界的物理访问关联起来 —— 由 ESP32-CAM 传感器和实时 Web 仪表板驱动。
## 截图
## 功能
### 阶段 1 — 数字日志解析器
- 使用正则表达式模式匹配解析防火墙、SSH 身份验证和审计日志
- 从原始日志行中提取源 IP、用户名、端口和文件路径
- 通过 CLI 参数支持自定义日志文件路径
### 阶段 2 — 物理事件检测
- ESP32-CAM 串行网桥通过串口实时读取 JSON 事件
- 检测移动、徽章扫描、非工作时间入侵以及非法设备连接
- 输出与 threat_mapper 解析器兼容的日志行 —— 无需附加粘合代码
### 阶段 3 — MITRE ATT&CK 映射
- 每种事件类型都映射到一个 MITRE 技术 ID、名称和战术
- 涵盖 4 种战术下的 8 种技术:Credential Access、Discovery、Initial Access、Collection
- 辅助函数:`all_tactics()`、`techniques_by_tactic(tactic)`
### 阶段 4 — 关联引擎与威胁评分
- 基于规则的关联器在可配置的时间窗口内匹配物理和数字事件
- 六条关联规则生成包含 MITRE 映射和建议操作的 `CorrelatedThreat` 对象
- 评分器跨数字、物理和关联源聚合事件,生成排序后的 `ThreatScore` 对象
- 威胁等级:LOW / MEDIUM / HIGH / CRITICAL
### 阶段 5 — SOAR (Security Orchestration, Automation, and Response) *(进行中)*
- 自动响应引擎根据威胁分数阈值触发操作
- CRITICAL 威胁 → 电话警报 + 自动生成的事件报告
- HIGH 威胁 → 警报通知 + 记录建议的操作
- 可插拔的操作体系:封锁 IP、发送警报、创建报告
- 独立于硬件运行 —— 响应任何事件源(数字、物理或关联)
## MITRE ATT&CK 覆盖范围
| 事件 Key | 技术 ID | 名称 | 战术 |
|---|---|---|---|
| `SSH_LOGIN_FAILED` | T1110 | Brute Force | Credential Access |
| `PORT_SCAN` | T1046 | Network Service Scanning | Discovery |
| `HONEYFILE_ACCESSED` | T1083 | File and Directory Discovery | Discovery |
| `MOTION_DETECTED` | T0812 | Device Identification / Physical Recon | Discovery |
| `PHYSICAL_PRESENCE` | T1078 | Valid Accounts / Physical Access | Initial Access |
| `AFTER_HOURS_INTRUSION` | T0867 | Physical Intrusion | Initial Access |
| `CORRELATED_ATTACK` | T1200 | Hardware Additions | Initial Access |
| `HONEYFILE_PHYSICAL_CORRELATION` | T1074 | Data Staged / Insider Threat | Collection |
## 技术栈
| 层级 | 技术 |
|---|---|
| 核心语言 | Python 3.11+ |
| Web 框架 | FastAPI + Uvicorn |
| 模板引擎 | Jinja2 |
| 物理传感器 | ESP32-CAM |
| 固件 | Arduino (C++) |
| 串行网桥 | PySerial |
| 报告 | 纯文本 + REST JSON |
## 安装说明
**环境要求:** Python 3.11+
```
git clone https://github.com/guado1983-star/Threat-Mapper.git
cd Threat-Mapper
pip install -r requirements.txt
```
## 使用说明
### 解析日志文件
```
# 默认 sample log
python threat_mapper.py
# 自定义 log file
python threat_mapper.py logs/my_log.log
```
输出内容包括解析后的事件列表、事件类型摘要、MITRE 映射表以及排序后的威胁评分。带有时间戳的报告将保存到 `reports/` 目录下。
### 运行关联引擎
```
# Batch 模式 — 关联 sample log
python -m core.correlator
# 自定义 log 和时间窗口(秒)
python -m core.correlator --log logs/my_log.log --window 600
```
### 运行威胁评分器
```
python -m core.scorer
python -m core.scorer --log logs/my_log.log
```
### 运行 SOAR 响应器
```
# 评估 sample log 并为所有高于 LOW 的威胁编写 incident reports
python -m core.responder
# 通过 ntfy.sh 发送手机提醒(安装 ntfy app,订阅你的 topic)
python -m core.responder --ntfy-topic my-threat-alerts
# 同时通过 Windows Firewall 阻断 CRITICAL 源 IP(需要管理员权限)
python -m core.responder --ntfy-topic my-threat-alerts --block-ips
# 设置最低 alert level(默认:HIGH — 同时对 CRITICAL 发出警报)
python -m core.responder --ntfy-topic my-threat-alerts --min-alert-level CRITICAL
# 通过 environment variable 而非 flag 设置 topic
set NTFY_TOPIC=my-threat-alerts
python -m core.responder
```
SOAR 也会在每次运行 `python threat_mapper.py` 结束时自动运行,
并可通过仪表板 API `POST /api/respond` 访问。
### 运行 Web 仪表板
```
uvicorn dashboard:app --host 127.0.0.1 --port 3000 --reload
```
然后在浏览器中打开 **http://127.0.0.1:3000**。
| Endpoint | 描述 |
|---|---|
| `/` | 实时仪表板 UI |
| `/api/events` | 以 JSON 格式返回所有已解析的事件 |
| `/api/summary` | 威胁评分、事件计数和 MITRE 明细 |
| `POST /api/respond` | 触发 SOAR 响应(返回执行的操作) |
| `/api/docs` | 自动生成的 Swagger UI |
## 项目结构
```
Threat-Mapper/
├── threat_mapper.py # Log parser and CLI entry point
├── mitre_mapper.py # MITRE ATT&CK technique lookup
├── dashboard.py # FastAPI web dashboard
├── core/
│ ├── models.py # Shared dataclasses (SecurityEvent, PhysicalEvent, CorrelatedThreat, ThreatScore)
│ ├── correlator.py # Physical + digital correlation engine
│ ├── scorer.py # Aggregated threat scoring
│ └── responder.py # SOAR response engine (Phase 5)
├── esp32/
│ └── bridge.py # ESP32-CAM serial bridge
├── templates/
│ └── index.html # Dashboard frontend
├── logs/
│ └── sample_attack.log # Sample log with digital and physical events
└── reports/ # Auto-generated timestamped reports (gitignored)
```
## ESP32 硬件设置 *(即将推出)*
阶段 2 的物理检测需要通过 USB 串口连接的 **ESP32-CAM** 模块。
连接后,网桥会将物理事件与实时日志数据一起直接实时输入到关联引擎中。
## 作者
**guado1983**
- GitHub: [@guado1983-star](https://github.com/guado1983-star)
## 许可证
MIT
标签:AMSI绕过, AV绕过, FastAPI, Python, SOAR, 威胁检测, 安全运营, 扫描框架, 插件系统, 无后门, 物联网安全, 网络测绘, 逆向工具