logicshrey/Dark-Web-Exposure-Threat-Intelligence
GitHub: logicshrey/Dark-Web-Exposure-Threat-Intelligence
一个基于 FastAPI 与 React 的暗网威胁情报平台,实现多源泄露监控、证据归一化、案例结构化与可信上报。
Stars: 1 | Forks: 0
# CITADEL
CITADEL 是一个基于 FastAPI 后端和 React/Vite 前端构建的暗网威胁与曝光情报平台。它摄取实时来源的发现,进行归一化和增强,过滤噪声,将相关证据整合为曝光案例,实时更新推送,并现在可以导出高管级别的 PDF 智能报告。
## 技术栈
- 后端:`FastAPI`、`Pydantic`、`requests`、`reportlab`
- 前端:`React`、`Vite`、`Recharts`、`Axios`、`Framer Motion`
- 智能分析:`regex`、`spaCy`、`Sentence-BERT`、`scikit-learn`,可选 `transformers`
- 持久化:本地 JSON 监控存储,以及可选的 MongoDB 告警存储
- 实时更新:通过 `/events/stream` 的服务器发送事件(SSE)
## 活跃应用
- `backend/`:活跃的 FastAPI 后端
- `frontend-react/`:活跃的 React/Vite 前端
- `frontend/`:遗留的 Streamlit 界面,保存在仓库中,但不是主 UI
## 本次升级的变更
- 增加了严格的大小写和证据归一化,并保持对旧版存储案例的向后兼容性
- 新增模块化信号质量层,支持:
- 来源可信度加权
- 带原因的置信度评分
- 用于去重的事件签名
- 噪声关键词抑制与垃圾感知过滤
- 通过收紧合并逻辑和相关规则,减少案例碎片化
- 升级案例负载以支持:
- 结构化的受影响资产
- 执行摘要与技术摘要
- 为何触发告警的推理说明
- 泄露来源元数据
- 更清晰的证据片段
- 通过 `/export/report/pdf` 新增 PDF 报告导出
- 更新 React 执行仪表板以导出过滤后的 PDF 报告
- 更新 React 监控工作区以显示结构化的案例摘要、置信度、严重性与证据预览
## 核心架构
### 后端流程
```
Source collectors / manual analysis
-> normalization + cleaning
-> regex / NLP / entity enrichment
-> signal quality scoring
-> correlation + prioritization
-> structured exposure case creation
-> local monitoring store
-> SSE updates to the React UI
```
### 主要后端文件
- `backend/main.py`:FastAPI 应用、路由与 SSE 端点
- `utils/nlp_engine.py`:编排、分析与案例构建
- `utils/source_intel_service.py`:公开来源收集与来源聚合
- `utils/signal_quality.py`:噪声抑制、置信度评分与事件签名
- `utils/case_schema.py`:严格的案例/证据/报告模型与兼容性归一化
- `utils/local_store.py`:案例、观察列表、审计与调度器状态的本地 JSON 持久化
- `utils/reporting.py`:PDF 报告生成
- `utils/monitoring_runtime.py`:观察列表调度器与事件总线
## 监控数据模型
案例被归一化为包含以下内容的规范结构:
- `case_id`
- `org_id`
- `category`
- `severity`
- `confidence_score`
- `risk_score`
- `affected_assets`
- `evidence`
- `leak_origin`
- `exposure_summary`
- `technical_summary`
- `recommended_actions`
- `why_this_was_flagged`
- `triage_status`
旧版字段(如 `title`、`summary`、`executive_summary`、`priority` 与 `case_status`)仍保留以保持向后兼容。
## 安装设置
1. 创建并激活虚拟环境。
2. 安装依赖:
```
pip install -r requirements.txt
```
3. 安装 spaCy 模型:
```
python -m spacy download en_core_web_sm
```
4. 创建 `.env` 文件并配置要使用的提供者。
示例环境变量:
```
MONGO_URI=mongodb://localhost:27017
MONGO_DB_NAME=dark_web_threat_intel
MONGO_COLLECTION=analyses
TELEGRAM_API_ID=
TELEGRAM_API_HASH=
TELEGRAM_SESSION_STRING=
PASTEBIN_API_KEY=
DEHASHED_EMAIL=
DEHASHED_API_KEY=
GITHUB_TOKEN=
INTELX_API_KEY=
INTELX_API_BASE=https://free.intelx.io
LEAKIX_API_KEY=
```
## 运行后端
```
uvicorn backend.main:app --host 0.0.0.0 --port 8001
```
## 运行 React 前端
```
cd frontend-react
npm install
npm run dev
```
## 主要 API 端点
- `POST /analyze`
- `POST /collect-intel`
- `GET /alerts`
- `GET /stats`
- `GET /monitoring/stats`
- `GET /cases`
- `GET /cases/{case_id}`
- `PATCH /cases/{case_id}`
- `GET /cases/export`
- `GET /export/report/pdf`
- `GET /watchlists`
- `POST /watchlists`
- `PUT /watchlists/{watchlist_id}`
- `DELETE /watchlists/{watchlist_id}`
- `POST /watchlists/{watchlist_id}/run`
- `GET /audit-events`
- `GET /events/stream`
## PDF 报告导出
PDF 报告导出端点支持高管友好的过滤导出:
```
curl -L "http://127.0.0.1:8001/export/report/pdf?severity=Critical&category=Credential%20Leak"
```
支持的过滤器:
- `start_date`
- `end_date`
- `severity`
- `category`
- `org_id`
生成的 PDF 包含:
- 封面页
- 执行摘要
- 严重性与置信度概览
- 详细案例章节
- 附录(实体与来源列表)
## 运行测试
针对信号质量、案例整合、相关性与 PDF 生成的回归测试已提供:
```
python -m unittest discover -s tests
```
## 注意事项
- 如果 MongoDB 不可用,CITADEL 仍可使用本地监控存储继续运行
- 观察列表调度器与 SSE 流程保持与现有 React 监控工作区的向后兼容
- 报告生成使用 `reportlab`,已包含在 `requirements.txt` 中
- 仓库仍包含遗留的 Streamlit 应用,但该系统的活跃 UI 为 `frontend-react/`
标签:Apex, AV绕过, CVRP签名验证, FastAPI, NLP实体识别, OSINT监控, PDF报告, React, React仪表盘, Sentence-BERT, Shadcn UI, spaCy, Syscalls, Vite, 事件关联, 企业级报告, 信号质量, 分类与聚类, 去重, 反情报, 取证摘要, 合规报告, 后端框架, 噪声过滤, 威胁情报, 实时暴露情报, 实时流, 开发者工具, 情报平台, 报告导出, 数据泄露监控, 暗网威胁, 服务器发送事件, 机器学习, 来源可信度, 泄露检测, 漏报抑制, 监控仪表板, 结构化资产, 网络犯罪报告, 置信度评分