ZoraizAzeem786/Threat-Intelligence-Portal

GitHub: ZoraizAzeem786/Threat-Intelligence-Portal

一个基于 Flask 的轻量级威胁情报查询门户,聚合多个公开 OSINT 数据源并提供本地缓存以加速 IOC 查询。

Stars: 0 | Forks: 0

# 威胁情报门户 一个轻量级的 Flask 应用,允许分析师查询 **IP / 域名 / 哈希 / CVE / 威胁行为者** 指标,并即时查看公开来源情报(AlienVault OTX、NIST NVD、MITRE ATT&CK)。 ## ✨ 功能 - **实时查询** 按钮 —— 强制发起一次新的 API 请求,绕过 SQLite 缓存。 - **缓存层** —— 结果存储在 `data/cache.db` 中,并带有 TTL(IP/域名为 6 小时,哈希/CVE 为 24 小时,行为者为 6 小时)。 - **历史记录面板** —— 显示最近的查询及其时间戳。 - **响应式 UI** —— 原生 HTML/CSS + 现代化的 Google Fonts,为状态徽标添加了微交互动画。 - **可扩展的后端** —— 易于添加更多数据源(例如 VirusTotal、Shodan)。 ## 📦 安装 ``` # 克隆 / 复制仓库 cd threat_intel_portal # 创建虚拟环境 (Windows) python -m venv venv venv\Scripts\activate # 安装依赖项 (Flask + 其他 libs) pip install -r requirements.txt ``` 根据示例创建一个 `.env` 文件并添加你的密钥: ``` # .env OTX_API_KEY=YOUR_OTX_KEY # required for IP/domain/hash look‑ups ``` ## ▶️ 运行应用 ``` python app.py ``` 在浏览器中打开 **http://127.0.0.1:5000**。 - **运行查询** —— 如果存在新的缓存记录,则使用缓存。 - **实时查询** —— 点击 **Run lookup** 旁边的 **Live lookup** 按钮,强制发起一次实时请求。 这两个按钮都会在结果下方显示一个徽标: * 🟢 `live` —— 刚刚获取的数据。 * 🟠 `from cache` —— 从 SQLite 存储中提供的数据,并附带获取时间戳。 ## 🌐 API 端点 | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/api/search?q=` | GET | 检测 IOC 类型,返回缓存数据或新获取的数据。添加 `&refresh=1` 可跳过缓存(由 **Live lookup** 使用)。 | | `/api/history?limit=25` | GET | 返回最近的缓存查询(值、类型、来源、时间戳)。由历史侧边面板使用。 | 所有响应均为 JSON 对象,其中包含一个内部的 `_cache` 字段,用于指示命中状态和获取时间。 ## 🗄️ 缓存详情 - **位置:** `data/cache.db` (SQLite)。 - **Schema:** `lookups(ioc_type TEXT, value TEXT, source TEXT, payload TEXT, fetched_at REAL, PRIMARY KEY(ioc_type, value, source))`。 - **TTL 值(在 `app.py` 中定义):** TTL_SECONDS = { "ip": 6 * 3600, "domain": 6 * 3600, "hash": 24 * 3600, "cve": 24 * 3600, "actor": 6 * 3600, } - 缓存会根据 TTL 自动清理;在查询时会忽略过期行。 ## 🎨 前端说明 - **HTML** (`templates/index.html`) —— 极简的标记,使用了 Google Fonts *IBM Plex Sans* / *IBM Plex Mono*。 - **CSS** (`static/style.css`) —— 支持暗色模式,采用毛玻璃拟态卡片样式和细微的悬停效果。 - **JS** (`static/app.js`) —— 处理表单提交、“Live lookup” 点击事件,并通过渲染函数(`renderOTX`、`renderCVE`、`renderActor`)渲染结果。 - **徽标渲染** 由 `cachePill(data)` 完成,它会添加“live / from cache”药丸状标签。 ## 🛠️ 扩展门户 1. **添加新来源** —— 创建一个 `services/_client.py`,其中包含一个 `fetch(ioc_type, value, api_key)` 函数,然后在 `app.py` 中导入并为其设置路由。 2. **调整 TTL** —— 修改 `app.py` 中的 `TTL_SECONDS`。 3. **自定义 UI** —— 编辑 `static/style.css` 或替换 Google Font 链接。 ## 📜 许可证 MIT —— 欢迎自由 fork、修改和重用。 *祝狩猎愉快!*
标签:Flask, SQLite, 多模态安全, 威胁情报, 安全运营, 开发者工具, 情报查询, 扫描框架, 数据可视化, 逆向工具