ManishReal01/ThreatLens
GitHub: ManishReal01/ThreatLens
ThreatLens是一个集成14个开源情报源的开源威胁情报平台,提供自动化指标关联分析与SOC可视化仪表盘,帮助安全团队高效追踪和研判威胁活动。
Stars: 0 | Forks: 0
# ThreatLens — 开源威胁情报平台





## 功能特性
- ✅ **14 个活跃威胁源** — URLhaus, OTX, ThreatFox, CISA KEV, Feodo Tracker, MalwareBazaar, SSLBL, Spamhaus DROP, Emerging Threats, OpenPhish, PhishTank, NVD CVE, VirusTotal 丰富化, GeoIP 丰富化
- ✅ **63,000+ 个已索引 IOC** — IP, 域名, URL, 哈希值 (MD5/SHA1/SHA256) 以及 CVE
- ✅ **关联引擎** — 通过共现、时间、子网、恶意软件家族和 TTP 重叠信号自动检测活动;包含 337+ 个关联威胁活动
- ✅ **SOC 指挥中心仪表板** — 实时威胁地图、实时告警、IOC 摄取趋势和顶级威胁行为者
- ✅ **IOC 搜索与过滤** — 跨 7 种 IOC 类型的全文搜索,支持严重性过滤
- ✅ **批量查询** — 粘贴最多 100 个 IOC 进行即时批量查询,并支持 CSV 导出
- ✅ **严重性评分** — 综合分数由信息源可信度 (35%)、来源数量 (25%) 和时效性 (40%) 加权计算
- ✅ **威胁行为者情报** — 完整的 MITRE ATT&CK 对手数据库,包含 IOC 关联
- ✅ **MITRE ATT&CK 矩阵** — 交互式技术热力图可视化
- ✅ **分析师工作区** — 针对每个 IOC 的标签、备注和监视列表,用于分类工作流
- ✅ **GeoIP 威胁地图** — 按严重性显示 IP IOC 来源的世界地图
- ✅ **PDF 报告** — 支持按 IOC 和威胁行为者导出 PDF 报告
## 技术栈
| 层级 | 技术 |
|---|---|
| 后端 | FastAPI + Python 3.9+, APScheduler |
| ORM | SQLAlchemy async (`asyncpg`) |
| 数据库 | PostgreSQL (Supabase transaction pooler) |
| 数据迁移 | Alembic |
| 前端 | Next.js 14 (App Router), TypeScript, Tailwind CSS v3 |
| 图表 | Recharts |
| 地图 | react-simple-maps |
| 关系图 | React Flow |
| PDF | ReportLab |
| HTTP 客户端 | `httpx` async 配合 `tenacity` 重试/退避机制 |
## 快速开始
### 1. 克隆仓库
```
git clone https://github.com/ManishReal01/threatlens.git
cd threatlens
```
### 2. 配置环境
复制并填写示例文件:
```
cp .env.example backend/.env
cp frontend/.env.example frontend/.env.local
```
`backend/.env` 中的最低配置要求:
```
# 必须使用 Transaction Pooler URL(端口 6543)
DATABASE_URL=postgresql+asyncpg://postgres.[ref]:[password]@aws-0-ap-south-1.pooler.supabase.com:6543/postgres
# 可选 — 留空以禁用该 feed
OTX_API_KEY=
URLHAUS_API_KEY=
VT_API_KEY=
```
### 3. 运行数据库迁移
```
cd backend
pip install -r requirements.txt
alembic upgrade head
```
### 4. 启动后端
```
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
### 5. 启动前端
```
cd frontend
npm install
npm run dev
```
在浏览器中打开 [http://localhost:3000](http://localhost:3000)。
## 信息源
| 信息源 | IOC 类型 | 是否需要认证 |
|---|---|---|
| [URLhaus](https://urlhaus.abuse.ch/) | URL, 域名 | API key (abuse.ch) |
| [AlienVault OTX](https://otx.alienvault.com/) | IP, 域名, 哈希值, URL | API key |
| [ThreatFox](https://threatfox.abuse.ch/) | IP, 域名, 哈希值, URL | API key (abuse.ch) |
| [CISA KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) | CVE | 无 |
| [Feodo Tracker](https://feodotracker.abuse.ch/) | IP (僵尸网络 C2) | 无 |
| [MalwareBazaar](https://bazaar.abuse.ch/) | SHA256, MD5, SHA1 | 无 |
| [SSLBL](https://sslbl.abuse.ch/) | SHA1 (SSL 证书) | 无 |
| [Spamhaus DROP](https://www.spamhaus.org/drop/) | IP | 无 |
| [Emerging Threats](https://rules.emergingthreats.net/) | IP | 无 |
| [OpenPhish](https://openphish.com/) | URL | 无 |
| [PhishTank](https://www.phishtank.com/) | URL | 无 |
| [NVD CVE](https://nvd.nist.gov/) | CVE | 无 |
| [MITRE ATT&CK](https://attack.mitre.org/) | 威胁行为者组织 + 技术 | 无 |
| [VirusTotal](https://www.virustotal.com/) | IP, 哈希值, URL (丰富化) | API key |
| [GeoIP Enricher](https://ip-api.com/) | IP 地理位置 (丰富化) | 无 |
## 关联引擎
ThreatLens 通过触发五个独立信号,自动将相关的 IOC 聚类为威胁活动:
| 信号 | 权重 | 逻辑 |
|---|---|---|
| 共现 | 0.6–0.9 | IOC 在 ≥2 次信息源采集中共同出现 |
| 恶意软件家族 | 0.85 | 共享恶意软件家族标签 |
| TTP 重叠 | 0.80 | IOC 关联至具有相同技术的威胁行为者 |
| 子网聚类 | 0.7–0.85 | IP 共享 /24 子网 |
| 时间 | 0.50 | IOC 在 ±3 小时窗口内被摄取 |
仅当 **≥2 个信号被触发** 且合并权重大于等于 0.4 时,边缘才会被保留。具有 ≥5 个成员的集群将成为威胁活动。结果可在 `/campaigns` 中查看。
## 架构
```
┌─────────────────────────────────────────────────────────────┐
│ Next.js 14 Frontend (Port 3000) │
│ Dashboard · IOC Search · Bulk Lookup · Campaigns │
│ Threat Actors · ATT&CK Matrix · Analyst Workspace │
└───────────────────┬─────────────────────────────────────────┘
│ REST API
┌───────────────────▼─────────────────────────────────────────┐
│ FastAPI Backend (Port 8000) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ IOC Router │ │ Feed Router │ │ Campaigns Router │ │
│ └──────────────┘ └──────────────┘ └──────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ APScheduler — 14 feed jobs (staggered, long-interval)│ │
│ │ URLhaus · OTX · ThreatFox · CISA KEV · Feodo │ │
│ │ MalwareBazaar · SSLBL · Spamhaus · Emerging Threats │ │
│ │ OpenPhish · PhishTank · NVD · MITRE ATT&CK · VT │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Correlation Engine (every 6h) │ │
│ │ 5 signals → BFS clustering → campaign upsert │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Normalization + Upsert pipeline │ │
│ │ Canonicalize → NormalizedIOC → upsert_ioc() │ │
│ └──────────────────────────────────────────────────────┘ │
└───────────────────┬─────────────────────────────────────────┘
│ asyncpg (transaction pooler, port 6543)
┌───────────────────▼─────────────────────────────────────────┐
│ PostgreSQL (Supabase) │
│ iocs · ioc_sources · feed_runs · threat_actors │
│ campaigns · campaign_iocs · ioc_relationships │
│ tags · notes · watchlist │
└─────────────────────────────────────────────────────────────┘
```
## 环境变量
所有变量均位于 `backend/.env` 中。仅 `DATABASE_URL` 为必填项。
| 变量 | 是否必填 | 描述 |
|----------|----------|-------------|
| `DATABASE_URL` | **是** | Supabase **transaction pooler** URL — 端口 **6543**。格式:`postgresql+asyncpg://postgres.[ref]:[pass]@aws-0-region.pooler.supabase.com:6543/postgres` |
| `ALLOWED_ORIGINS` | 否 | 逗号分隔的 CORS 源。默认值:`http://localhost:3000` |
| `OTX_API_KEY` | 否 | [AlienVault OTX](https://otx.alienvault.com/) API key。留空以禁用。 |
| `URLHAUS_API_KEY` | 否 | [abuse.ch](https://abuse.ch/) API key — 由 URLhaus 和 ThreatFox 共享。留空以同时禁用这两者。 |
| `VT_API_KEY` | 否 | [VirusTotal](https://www.virustotal.com/) 免费 API key。留空以禁用 VT 丰富化。 |
计划间隔和分页限制可以在 `.env` 中被覆盖 — 有关完整列表,请参见 `.env.example` 和 `backend/app/config.py`。
## 许可证
MIT 许可证 — 详见 [LICENSE](LICENSE)。
标签:AV绕过, CISA KEV, Cloudflare, CVE, ESC4, FastAPI, IOC, IP地址, masscan, MITRE ATT&CK, nuclei, OSINT, OTX, PDF报告, PostgreSQL, Python, SOC仪表盘, ThreatFox, TIP, URLhaus, 严重性评分, 域名, 威胁关联引擎, 威胁地图, 威胁情报平台, 威胁源, 安全分析工作台, 安全运营中心, 恶意哈希, 批量查询, 指标关联, 攻击者画像, 数字签名, 无后门, 测试用例, 网络安全, 网络映射, 自动化活动检测, 资产探测, 逆向工具, 隐私保护