tarekhebhoub/Cyber-Threat-Intelligence-Platform
GitHub: tarekhebhoub/Cyber-Threat-Intelligence-Platform
一款支持暗网监控的生产级SaaS网络威胁情报平台,可对邮箱、域名、IP等资产进行自动化爬虫扫描和威胁检测告警。
Stars: 0 | Forks: 0
# 网络威胁情报平台
一款生产就绪的 SaaS 网络威胁情报平台 MVP,支持**暗网监控**功能。
## ✨ 功能特性
- 🔐 **JWT 认证**,支持 `user` / `admin` 角色
- 🗂 **资产管理**:邮箱、域名、IP、软件
- 🕷 **模块化爬虫**:表网 + 粘贴站 + 论坛 + 暗网(Tor)
- 🧠 **检测引擎**:正则 + 关键词规则、资产关联、风险评分
(低/中/高/严重)—— 可扩展至机器学习
- 🔔 **告警**:仪表板 + 邮件渠道
- 📊 **仪表板**:时间线、严重程度分布、风险评分
- ⏱ **Celery + Redis** 后台任务(定时扫描和按需扫描)
- 🛡 **安全**:输入验证、限速、密码脱敏
(我们从不存储泄露的密码,仅存储单向哈希值)
## 🗂 项目结构
```
ThreatIntelegence/
├─ backend/ Django + DRF + Celery
│ ├─ config/ Project settings, urls, celery app
│ ├─ accounts/ Custom User + JWT
│ ├─ assets/ Asset CRUD
│ ├─ threats/ Threat models + detection engine
│ ├─ crawler/ Modular crawlers (surface + Tor)
│ ├─ alerts/ Multi-channel notifications
│ └─ requirements.txt
└─ frontend/ React + Vite + TailwindCSS
├─ src/
│ ├─ pages/ Dashboard, Assets, Threats, Sources, Alerts, Login, Register
│ ├─ components/ Layout, ProtectedRoute, SeverityBadge
│ ├─ context/ AuthContext (JWT)
│ └─ api/ axios client w/ refresh
└─ package.json
```
## 🗄 数据库模型
| 模型 | 关键字段 | 用途 |
|---|---|---|
| `accounts.User` | `username`、`email`、`role`、`organization`、`notify_by_email` | 认证 + 角色 + 可选告警 |
| `assets.Asset` | `owner`、`type`(email/domain/ip/software)、`value`、`is_active` | 我们监控的对象 |
| `crawler.Source` | `name`、`url`、`kind`(surface/paste/forum/darkweb)、`is_active` | 我们搜索的来源 |
| `crawler.CrawlJob` | `source`、`status`、`pages_fetched`、`threats_created` | 任务审计日志 |
| `threats.ScanResult` | `source`、`url`、`content_hash`、`excerpt`(已净化) | 抓取的原始页面 |
| `threats.Threat` | `owner`、`asset`、`category`、`severity`、`risk_score`、`indicators`、`fingerprint` | 检测到的威胁(已去重) |
| `alerts.Alert` | `user`、`threat`、`channel`、`is_read`、`delivered` | 已发送的通知 |
已在高流量列上添加索引(`severity+detected_at`、
`type+value`、`owner+status`、`content_hash`、`is_read`)。
## 🔌 API 端点(v1)
基础路径:`/api/v1/`
### 认证
| 方法 | 路径 | 备注 |
|---|---|---|
| POST | `/auth/register/` | 公开 |
| POST | `/auth/token/` | 获取 JWT(`username`、`password`) |
| POST | `/auth/token/refresh/` | 刷新 JWT |
| GET / PATCH | `/auth/me/` | 当前用户 |
### 资产
| 方法 | 路径 |
|---|---|
| GET / POST | `/assets/` |
| GET / PUT / PATCH / DELETE | `/assets/{id}/` |
| POST | `/assets/{id}/scan_now/` |
### 威胁
| 方法 | 路径 |
|---|---|
| GET | `/threats/`(筛选条件:`severity`、`category`、`status`、`asset`) |
| GET / PATCH | `/threats/{id}/` |
| POST | `/threats/{id}/resolve/` |
| POST | `/threats/{id}/false_positive/` |
| GET | `/threats/scan-results/` |
| GET | `/threats/dashboard/stats/` |
### 爬虫(管理员写入)
| 方法 | 路径 |
|---|---|
| GET / POST | `/crawler/sources/` |
| GET / PUT / DELETE | `/crawler/sources/{id}/` |
| POST | `/crawler/sources/{id}/run/` |
| GET | `/crawler/jobs/` |
### 告警
| 方法 | 路径 |
|---|---|
| GET | `/alerts/` |
| POST | `/alerts/{id}/read/` |
| POST | `/alerts/read_all/` |
| GET | `/alerts/unread_count/` |
## 🚀 后端部署
```
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python manage.py migrate
python manage.py createsuperuser
python manage.py seed_sources # adds a few example sources
python manage.py runserver 0.0.0.0:8000
```
### 后台 Worker(在两个额外的终端中运行)
```
# Worker
celery -A config worker -l info
# Beat (scheduled scans)
celery -A config beat -l info
```
确保 Redis 在本地运行:
```
sudo systemctl start redis # or: docker run -p 6379:6379 redis:7
```
### (可选)暗网爬虫
1. 安装 Tor:
sudo apt install tor
sudo systemctl start tor
2. 验证 Tor SOCKS5 可在 `127.0.0.1:9050` 访问。
3. 在 `backend/.env` 中设置:
ENABLE_DARKWEB=True
TOR_SOCKS_HOST=127.0.0.1
TOR_SOCKS_PORT=9050
4. 通过**来源**页面添加 `darkweb` 类型的来源(需要 admin 角色)。
## 🌐 前端部署
```
cd frontend
npm install
npm run dev
```
Vite 开发服务器运行在 **http://localhost:5173**,并将
`/api/*` 代理到 Django 后端的 `:8000` 端口。
## 🧪 测试
```
cd backend
python manage.py test threats
```
检测引擎包含单元测试,覆盖指标提取、
凭证对检测、密码脱敏和误报抵抗能力。
## 🔐 安全策略
- 泄露的密码**永不持久化**——仅存储截断的 `sha256` 哈希值。
- 摘录在存储前会经过净化处理(`make_excerpt`)。
- DRF 限速:匿名用户 `30/分钟`,认证用户 `120/分钟`(可根据视图覆盖)。
- 所有资产输入都经过验证(邮箱/域名使用正则,IP 使用 `ipaddress` 模块)。
- JWT 访问令牌短生命周期(60 分钟),刷新令牌 7 天。
- 生产环境设置启用 HSTS、安全 cookie、SSL 重定向(`DEBUG=False`)。
- Django 日志级别保持为 INFO;我们特意避免在 WARN 级别记录暗网点击的 URL。
## 🛣 路线图(与分阶段计划匹配)
- ✅ **阶段 1** – 认证、资产 CRUD、简单关键词/正则扫描器
- ✅ **阶段 2** – 模块化爬虫(表网)+ 实体提取
- ✅ **阶段 3** – 支持 Tor 的暗网爬虫
- 🔜 **阶段 4** – 在 `threats/engine.py::classify_ml` 中接入 ML 分类器
(例如 scikit-learn TF-IDF + LogReg,或 transformer 管道)
## 📎 快速冒烟测试(设置完成后)
1. 在 注册一个用户。
2. 添加一个资产(例如 `email: test@example.com`)。
3. 进入**来源**页面(作为 admin)并点击"运行"已初始化的
"Krebs on Security" 来源——或者更快,打开 Django shell:
from threats.engine import analyze
from assets.models import Asset
from accounts.models import User
u = User.objects.first()
Asset.objects.create(owner=u, type="email", value="test@example.com")
print(analyze("dump: test@example.com:Sup3r!", Asset.objects.filter(owner=u)))
4. 在 UI 中查看**威胁**和**告警**。
标签:AMSI绕过, Celery, Dark Web, DAST, Django, GitHub, HTTP/HTTPS抓包, JWT, masscan, React, Redis, REST API, Syscalls, Tor网络, Web安全, 占用监测, 后端开发, 告警系统, 命令控制, 威胁情报平台, 威胁检测, 密码管理, 库, 应急响应, 态势感知, 恶意软件分析, 搜索引擎查询, 数据可视化, 数据采集, 暗网监控, 测试用例, 爬虫系统, 网络安全, 网络安全审计, 网络空间测绘, 蓝队分析, 资产管理, 逆向工具, 速率限制, 隐私保护