iftikar0016/Threat_Intelligence

GitHub: iftikar0016/Threat_Intelligence

一个聚合 VirusTotal、AlienVault OTX 和 WHOIS 多源威胁情报的自动化查询服务,提供统一风险评分、双层缓存和可视化仪表板。

Stars: 0 | Forks: 0

# 威胁情报查询服务 一个自动化的威胁情报查询服务,聚合来自 **VirusTotal**、**AlienVault OTX** 和 **WHOIS** 的指标信誉数据,内置双层缓存层(Redis + 本地内存回退),并配备了一个高级的赛博朋克风格网络安全仪表板。 ## 架构图 ``` graph TD User([User / Browser]) -->|POST /lookup| API[FastAPI App
app/main.py] API --> Det[Indicator Detector
app/detector.py] Det --> Cache{Cache Manager
app/cache.py} Cache -->|Cache HIT| Return[Return Instantly
Served from Cache] Return --> User Cache -->|Cache MISS| Agg[Aggregator Service
app/aggregator.py] Agg --> VT[VirusTotal Service
async httpx] Agg --> OTX[AlienVault Service
async httpx] Agg --> WHOIS[WHOIS Service
asyncio.to_thread] VT --> VT_API[VirusTotal API] OTX --> OTX_API[OTX API] WHOIS --> WHOIS_API[WHOIS/RDAP Servers] ``` ## 功能 - **自动化指标检测**:检测输入是 **URL**、**IP 地址**、**域名**还是**文件哈希**(MD5、SHA-1、SHA-256)。 - **并发 API 获取**:通过异步 HTTP 流并行解析所有已配置的威胁情报源。 - **统一风险评估**:聚合 API 响应,并将其评分转化为单一的 0-100 风险系数评级。 - **双层缓存**:使用 Redis 进行缓存,如果 Redis 离线,会自动回退到内存字典。 - **高级前端仪表板**:网络安全主题的深色模式 UI,配备风险仪表盘、选项卡式输出、直接的缓存清理控制以及随时可用的测试示例。 ## 快速开始 ### 1. 配置 (`.env`) 克隆配置模板: ``` cp .env.example .env ``` 打开 `.env` 并填入您的威胁情报 API 凭证: * **VirusTotal API Key**:在 [VirusTotal](https://www.virustotal.com/) 注册并粘贴您的密钥。 * **AlienVault OTX API Key**:在 [AlienVault OTX](https://otx.alienvault.com/) 注册并粘贴您的密钥。 *注意:即使密钥为空,应用程序也会运行。未配置的服务将报告状态信息,指出其缺少配置。* ### 2. 使用单条命令运行所有内容 (Docker) 要同时启动 FastAPI Web 应用程序和 Redis 缓存,请运行: ``` docker compose up --build ``` 此单条命令会构建 FastAPI 容器,启动 Redis 容器,在私有网络中将它们连接起来,并对外暴露 Web 应用程序。 运行后,通过以下地址访问仪表板: 👉 **[http://localhost:8000](http://localhost:8000)** ## API 文档 ### `POST /lookup` 提交一个指标以运行聚合的信誉检查。 * **请求体**: { "indicator": "8.8.8.8", "force_refresh": false } * **响应**:返回整合后的指标结果,包括风险评分和缓存状态: { "indicator": "8.8.8.8", "type": "ip", "queried_at": "2026-06-17T18:00:00Z", "risk_score": 0, "results": { "virustotal": { ... }, "alienvault": { ... }, "whois": { ... } }, "served_from_cache": true } ### `GET /lookup/{indicator}` 路径形式的 GET 请求。其响应格式与 POST `/lookup` 一致。 * **示例**:`GET /lookup/github.com?force_refresh=true` ### `DELETE /cache/{indicator_type}/{indicator}` 从缓存中清除一条记录。 * **示例**:`DELETE /cache/ip/8.8.8.8` ### `GET /health` 验证后端配置状态和缓存可用性。 ## 缓存流程详情 1. 用户提交一个指标(例如 `google.com`)。 2. 服务器根据指标类型和规范化后的值创建唯一的缓存键:`ti:domain:google.com`。 3. 如果缓存存在且 TTL(通过 `.env` 中的 `CACHE_TTL_SECONDS` 配置,默认为 1 小时)未过期,服务器会立即返回缓存的文档,并带有 `"served_from_cache": true`。 4. 如果缓存未命中或用户设置了 `force_refresh: true`,聚合器将执行并行查询,更新缓存,并返回 `"served_from_cache": false`。
标签:AV绕过, FastAPI, Redis, 后端开发, 威胁情报, 开发者工具, 异步编程, 搜索引擎查询, 版权保护, 计算机取证, 请求拦截, 运行时操纵, 逆向工具