srinivasulabhaskarprabhat-pixel/ThreatLens

GitHub: srinivasulabhaskarprabhat-pixel/ThreatLens

ThreatLens 是一个并行聚合多源威胁情报并输出统一威胁评分的 SOC 分析师分诊平台。

Stars: 1 | Forks: 0


[![Typing SVG](https://readme-typing-svg.demolab.com?font=Fira+Code&weight=700&size=20&pause=1200&color=00D4FF¢er=true&vCenter=true&width=750&lines=🔎+One+Search+%E2%80%94+Five+Intelligence+Sources;🧮+Weighted+Correlation+Engine+%26+Threat+Scoring;🛡️+VirusTotal+%C2%B7+AbuseIPDB+%C2%B7+OTX+%C2%B7+Cisco+Talos;📊+Live+SOC+Dashboard+with+Chart.js+Visuals)](https://git.io/typing-svg)
     
## ⚡ 概述 **ThreatLens** 是一个生产级威胁情报平台 (TIP),其设计初衷是贴合 SOC 分析师对指标进行实际分诊的工作流程。无需在 VirusTotal、AbuseIPDB、AlienVault OTX 和 Cisco Talos 之间逐一切换标签页,ThreatLens 会**并行**调用这四个平台,在同一过程中检查内部数据库,并返回带有威胁评分的统一关联判定结果 —— 该平台完全基于 **核心 PHP 8、MySQL 和原生 JavaScript** 构建,零框架依赖。
**🔍 检测内容** - IP 地址 - 域名 - URL - 文件哈希 (MD5 / SHA1 / SHA256) - 内部 IOC 数据库 - VirusTotal - AbuseIPDB - AlienVault OTX - Cisco Talos **📊 提供功能** - 加权威胁评分 (0–100) - 各来源颜色编码结果卡片 - 一键 IOC 导入 - 实时与缓存结果标记 - 完整的调查历史记录 - 基于角色的 SOC 仪表板 - CSV / JSON / HTML 报告 - 通知与审计跟踪
## 🏗️ 架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ USER INTERFACE │ │ Analyst enters an IOC into the search bar │ └────────────────────────────┬────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ search.php / search.js │ │ Frontend Search Orchestrator │ └────────────────────────────┬────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ api/internal_search.php │ │ Internal MySQL Lookup (First Pass) │ └──────────────┬──────────────────────────┬───────────────────────┘ │ │ ▼ ▼ ┌──────────────────────┐ ┌──────────────────────────────────┐ │ Promise.allSettled │ │ External Providers │ │ Parallel Fetch Calls │─────▶│ VirusTotal · AbuseIPDB · OTX · │ │ │ │ Cisco Talos │ └──────────────────────┘ └──────────────┬───────────────────┘ │ ▼ ┌──────────────────────────────────┐ │ includes/functions.php │ │ correlate_results() Engine │ │ Weighted Score + Verdict │ └──────────────┬───────────────────┘ │ ▼ ┌──────────────────────────────────┐ │ api/finalize_search.php │ │ Cache (24h) · Log · Render Cards │ └────────────────────────────────────┘ ``` ## 🧠 核心引擎逻辑 ### 🔴 关联与威胁评分 ``` Rule: Each source (internal, VT, AbuseIPDB, OTX, Talos) reports malicious (bool) + risk_score (0–100), each with a weight. Output: Single verdict, 0–100 threat score, human-readable reasons, recommended action. Benefit: One new provider = one new weight entry. No rewrite needed. ``` ### 🟠 实时与缓存结果处理 ``` Rule: Every provider response is cached for 24h in cached_api_results. Benefit: Cuts external API usage while clearly labeling analysts whether they're viewing a fresh or cached lookup. ``` ### 🟡 自动 IOC 类型检测 ``` Function: detect_ioc_type() Detects: IP · Domain · URL · MD5 / SHA1 / SHA256 hash Benefit: No manual type selection — validated and routed automatically. ``` ## 🛠️ 技术栈
| 层级 | 技术 | |:---:|:---| | 🎨 **前端** | HTML5 · CSS3 · 原生 JavaScript · Chart.js · Font Awesome | | ⚙️ **后端** | 核心 PHP 8 · PDO | | 🗄️ **数据库** | MySQL — 22 表规范化 schema | | 🌐 **情报来源** | VirusTotal · AbuseIPDB · AlienVault OTX · Cisco Talos | | 🚀 **部署** | XAMPP · WAMP · LAMP |
## 📂 项目结构 ``` ThreatLens/ │ ├── 📄 index.php, login.php, dashboard.php # Entry points ├── 🔎 search.php # Universal search UI ├── 📋 indicators.php, reports.php, users.php # IOC / reporting / RBAC ├── ⚙️ settings.php, logout.php │ ├── 🎨 assets/css/style.css # Dark/light theme ├── ⚙️ assets/js/ # app.js · search.js │ # dashboard.js · indicators.js │ ├── 🔧 includes/ │ ├── config.php, db.php, session.php, auth.php │ ├── functions.php # correlate_results() engine │ └── external_api.php # Provider integrations │ ├── 🌐 api/ │ ├── internal_search.php, virustotal.php, abuseipdb.php │ ├── otx.php, talos.php, finalize_search.php │ ├── import_ioc.php, indicators_crud.php, bulk_import.php │ ├── export.php, dashboard_stats.php, notifications.php │ ├── 🗄️ sql/threat_platform.sql # Full schema + sample data ├── 📁 uploads/, exports/, cache/ # .htaccess write-protected │ └── 📖 README.md ``` ## ⚙️ 安装与设置 ### 1️⃣ 克隆 / 复制项目 ``` git clone https://github.com/YOUR-GITHUB-USERNAME/ThreatLens.git cd ThreatLens ``` ### 2️⃣ 导入数据库 ``` phpMyAdmin → Import → sql/threat_platform.sql ``` 一步创建 `threat_platform` 数据库、全部 22 张表以及示例数据。 ### 3️⃣ 配置 API 密钥 ``` cp .env.example .env ``` 或者留空,等登录后通过 **Settings → API Keys** 再添加真实的密钥。 ### 4️⃣ 本地部署 ``` # XAMPP → 放置于: htdocs/ThreatLens/ # WAMP → 放置于: www/ThreatLens/ ``` ### 5️⃣ 启动并登录 ``` http://localhost/ThreatLens/ Username: admin Password: Admin@12345 ← change immediately ``` ## 📊 搜索性能
| 阶段 | 行为 | 预估时间 | |:---|:---:|:---:| | 内部数据库查询 | 顺序执行,第一轮 | < 1s | | 4 个外部提供商 | 通过 Promise.allSettled 并行 | 2–6s | | 关联与评分 | 同步执行,请求内完成 | < 1s | | **总计 (冷启动,未缓存)** | | **~3–7s** | | **总计 (缓存命中)** | | **< 1s** |
## ✅ 功能覆盖范围
| 领域 | 状态 | |:---|:---:| | 多源并行搜索 | ✅ 已完成 | | 加权关联引擎 | ✅ 已完成 | | 基于角色的访问控制 (3 种角色) | ✅ 已完成 | | 对更改状态请求的 CSRF 保护 | ✅ 已完成 | | CSV / JSON / STIX 批量导入 | ✅ 已完成 | | 审计日志 | ✅ 已完成 | | 登录失败后的账户锁定 | ✅ 已完成 | | 二进制 PDF 导出 | ⏳ 计划中 | | GreyNoise / URLhaus / Shodan 集成 | ⏳ 计划中 |
## 🛡️ 安全强化 ``` ✔ PDO prepared statements everywhere ✔ CSRF tokens on state-changing requests ✔ password_hash() / password_verify() ✔ Secure session cookie configuration ✔ Role gating via require_role() ✔ Input validation & IOC type detection ✔ File-upload size/extension checks ✔ Full audit trail on every write ``` ## 🔮 路线图 - [ ] 🌍 更多提供商 — GreyNoise、URLhaus、MalwareBazaar、Hybrid Analysis、Spamhaus、Shodan、Pulsedive、ThreatFox - [ ] 🔗 更深度的 IOC 关联聚类 (重复 / 相关联域名 / 相关联 IP) - [ ] 📄 服务端渲染的二进制 PDF 导出 (dompdf) - [ ] 🗺️ 正式的 ER 图与架构图 - [ ] 📘 完全图文并茂的管理员/用户指南 - [ ] 🔔 在添加关键 IOC 时通过电子邮件 / webhook 告警 ## 👨‍💻 作者
**Bhaskara Prabhat Srinivasula** *SOC 分析师 · 网络安全 · 威胁情报*
   

*如果这个项目对您有帮助,请点个 ⭐ —— 这对我来说意义非凡。* ![Profile Views](https://komarev.com/ghpvc/?username=YOUR-GITHUB-USERNAME&style=for-the-badge&color=00d4ff&label=PROJECT+VIEWS)
标签:OpenVAS, PHP, SOC分析, 关联分析引擎, 威胁情报, 安全运营, 开发者工具, 扫描框架, 数据可视化