Alejandr0leo/threatlens
GitHub: Alejandr0leo/threatlens
ThreatLens 是一款 IOC 富化与威胁情报聚合工具,通过并行查询多个情报源为威胁指标提供综合风险评分和判定结论。
Stars: 0 | Forks: 0
# ThreatLens — IOC 富化与 Threat Intelligence
ThreatLens 接收威胁指标(**IP、域名和哈希**),向多个威胁情报源进行查询,并为每个指标提供一个**综合判定**结果,同时支持在终端输出报告、生成 Markdown/JSON 文件以及提供可视化仪表板。
## 功能特性
- **自动检测并规范化** IOC 类型(IPv4、域名、URL→host、MD5/SHA1/SHA256 哈希)。
- 对混淆指标的 **"Refang"(去混淆)** 处理:将 `1[.]2[.]3[.]4`、`hxxp://malo[.]com` 还原为真实格式。
- **并行查询多个情报源**,并将其信号整合为一个 0–100 的风险评分。
- 为每个 IOC 提供**明确的判定结论**:🔴 恶意 · 🟠 可疑 · 🟡 低危 · 🟢 干净 · 🔵 信息性 · ⚪ 未知。
- **优雅降级**:未配置 API key 的情报源将被自动忽略;网络错误不会中断分析进程。
## 🛰️ 情报源
| 情报源 | IOC | API key |
|---|---|---|
| local | 全部 | — (离线,默认启用) |
| Tor exit nodes | IP | — (无需 key) |
| abuse.ch Feodo Tracker | IP | `ABUSE_CH_API_KEY` |
| abuse.ch URLhaus | 域名 / IP | `ABUSE_CH_API_KEY` |
| abuse.ch ThreatFox | 全部 | `ABUSE_CH_API_KEY` |
| VirusTotal v3 | 全部 | `VT_API_KEY` |
| AbuseIPDB | IP | `ABUSEIPDB_API_KEY` |
**abuse.ch 的 Auth-Key 是免费的** (https://github.com/Alejandr0leo),并且适用于 Feodo、URLhaus 和 ThreatFox。
VirusTotal 和 AbuseIPDB 提供*免费层* (free tier)。如果未配置任何 key,`local` 和 `Tor` 源依然会保持启用状态。
## 快速使用
```
# 1. 安装依赖
pip install -r requirements.txt
# 2. (可选)配置 keys
export ABUSE_CH_API_KEY="tu_auth_key"
export VT_API_KEY="tu_api_key"
# 3a. 从文件分析
python cli.py --file data/sample_iocs.txt
# 3b. 分析 IOCs + 保存报告
python cli.py 8.8.8.8 malicious-test.com 44d88612fea8a8f36de82e1278abb02f --markdown reporte.md
# 3c. 可视化 Dashboard
streamlit run dashboard.py
```
### 输出示例(终端)
```
🔴 MALICIOSO [ 90] 45.155.205.99 (ip)
└ feodo: IP de C2 listada (familia: Emotet).
🔵 INFORMATIVO [ 0] 192.168.1.10 (ip)
└ local: IP privada (RFC1918): no es una amenaza enrutable en Internet.
🟢 LIMPIO [ 0] 8.8.8.8 (ip)
```
## 架构
```
threatlens/
├── threatlens/
│ ├── ioc.py # Detección, validación y "refang" de IOCs
│ ├── sources.py # Fuentes de inteligencia (pluggables)
│ ├── engine.py # Orquesta consultas en paralelo + agrega veredicto
│ └── report.py # Reportes en Markdown / JSON
├── data/
│ └── sample_iocs.txt # IOCs de muestra
├── cli.py # Ejecución por terminal
├── dashboard.py # Dashboard visual (Streamlit)
└── config.example.env # Plantilla de variables de entorno
```
**技术栈:** Python · requests · pandas · Streamlit · 使用 ThreadPoolExecutor 实现并发。
### 判定结果是如何计算的?
每个情报源都会返回一个风险评分(0–100)。引擎会提取所有阳性信号中的**最大值**,并将其映射到相应的风险区间:≥70 恶意,40–69 可疑,1–39 低危,有数据且评分为 0 则为干净,无数据则为未知。私有/保留 IP 将被标记为信息性(不属于互联网威胁)。
## Roadmap
- [ ] 支持对完整 URL 和电子邮件地址的富化。
- [ ] 导出为 STIX 2.1 / MISP 格式。
- [ ] 持久化磁盘缓存,并为 feeds 提供 "watch" 模式。
- [ ] 接入更多情报源(GreyNoise、AlienVault OTX、Shodan)。
## 作者
**Nikolay Alejandro León Duarte** — 系统工程学生(专注于网络安全、CTI、Python)
GitHub: [github.com/Alejandr0leo](https://github.com/Alejandr0leo)
*本项目为教育/作品集用途。请负责任地使用,并尊重各情报源的使用条款。*
标签:CLI, IOC富化, Kubernetes, Python, WiFi技术, 威胁情报, 开发者工具, 无后门, 网络安全, 逆向工具, 隐私保护