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技术, 威胁情报, 开发者工具, 无后门, 网络安全, 逆向工具, 隐私保护