waris206/ThreatLens

GitHub: waris206/ThreatLens

一个AI驱动的恶意软件分类平台,结合确定性风险评分、多智能体分析、YARA特征扫描和威胁情报,实现可解释的文件安全评估。

Stars: 2 | Forks: 1

# ThreatLens v2.0 **AI 驱动的恶意软件分类与深度群体检测** ![ThreatLens Demo](https://raw.githubusercontent.com/waris206/ThreatLens/main/assets/demo.gif) 如果您设备上的图片预览未加载,请直接打开:[查看 Demo GIF](assets/demo.gif) [![在线演示](https://img.shields.io/badge/Live%20Demo-Available-brightgreen)](https://your-deployment-url.com) [![许可证: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) ThreatLens 是一个全栈实时恶意软件分类平台,通过结合**确定性风险评分**、**多智能体 AI 群体**、**YARA-Lite 特征扫描**、**PE 二进制分析**、**Authenticode 签名验证**和**全球威胁情报**来自动化文件分析——所有这些都实时流式传输到 React 仪表板。 ## v2.0 版本更新 | 功能 | 描述 | |---|---| | **硬风险评分器** | 确定性的 AI 前数值评分引擎 (`riskScorer.js`)。基于扩展名不匹配、熵、数字签名信任度、VirusTotal 检测、YARA 命中和 IAT 分类计算 0–100 的分数——在任何 AI 运行之前。等级:`<20 LOW`,`20–60 SUSPICIOUS`,`>60 HIGH`。 | | **3 智能体群体 (深度群体检测)** | 智能体 1 (静态分析师) → 智能体 2 (威胁 OSINT) → 智能体 3 (首席调查员)。每个智能体都以硬风险分数为基础,并且不能覆盖或提升它。 | | **PE 二进制解析器** | 纯 JS 便携式可执行解析器 (`peParser.js`)——提取架构 (x86/x64)、节区、入口点和完整的导入地址表 (IAT)。零原生依赖。 | | **YARA-Lite 引擎** | 正则表达式和字节模式匹配引擎 (`yaraEngine.js`),包含 5 个规则族:加密钱包、勒索软件、C2/网络、可疑 PE 导入和混淆。包含用于防止误报的 `validate` 回调(例如,PDF 校验和 vs 真实的 BTC 地址)。 | | **Authenticode 验证器** | 使用 `node-forge` 的手动 ASN.1 PKCS#7 遍历器——提取发布者、颁发者、有效期和信任状态。受信任的供应商签名充当降低风险的信任锚点。 | | **风险分数 UI 卡片** | 前端显示带有数字分数的醒目风险徽章、颜色编码分类(绿/黄/红),以及带有 +/− 增量的完整信号细分。 | | **带退避的 429 重试** | Agent API 调用在遇到 HTTP 429(速率限制)时会自动重试最多 3 次,并支持指数退避和 `Retry-After` 头。 | | **安全加固** | `helmet` 安全头、`express-rate-limit`(15 分钟内 30 次请求)、CORS 限制为开发源、10 MB 上传限制(演示安全)、文件名清理、已上传文件的自动清理。 | | **误报预防** | BTC 正则表达式需要非十六进制的 Base58 字符(拒绝 MD5/SHA 哈希)。PE 导入规则需要完整的注入三元组(VirtualAllocEx + WriteProcessMemory + CreateRemoteThread)。AI 提示词基于分数,并被明确告知不要标记良性 API。 | ## 核心功能 - **字节级文件签名 (Magic Bytes):** 提取前 4 个十六进制字节,并与声明的扩展名进行交叉引用,以捕获伪造的可执行文件(例如,伪装成 `.pdf` 的 `.exe`)。 - **香农熵计算:** 计算二进制数据的不可预测性(0.0–8.0 位/字节)。根据文件类型进行情境化——压缩格式(.zip、.png、.pdf)自然具有高熵。 - **威胁情报 (VirusTotal v3):** 针对文件的 SHA-256 哈希查询 70+ 全球 AV 引擎,具有超时处理和优雅的回退说明。 - **AI 智能体群体分析:** 通过 SSE 流式传输实时取证报告。每个智能体都受限于确定性的硬风险分数——AI 解释分数,而不是发明分数。 - **PE 导入地址表 (IAT) 分析:** 将 Windows API 导入解析并聚类为 BENIGN(良性)/ HIGH-RISK(高风险)/ ANTI-ANALYSIS(反分析)类别。只有注入三元组会触发 YARA 警报。 - **YARA-Lite 特征扫描:** 5 个规则族,具有严格的验证回调,以防止对十六进制哈希、PDF 内部结构和良性系统 API 的误报。 - **数字签名信任锚定:** Authenticode 验证充当最强的信任信号——具有 0 次 VT 检测的受信任供应商签名 = 安全,无升级。 - **ASCII 字符串提取:** 提取可打印字符串(6 个以上字符),以揭示硬编码的 IP、URL、PE 工件或指示恶意软件暂存的工具标记。 - **EXIF/元数据分析:** 解析文件系统和 EXIF 元数据,以检测伪造的来源、被篡改的图像或隐私敏感的泄露。 - **可导出的 HTML 报告:** 从完整的 3 智能体群体分析生成精美、可下载的取证报告。 - **硬风险分数显示:** 前端卡片显示数字分数、分类徽章(LOW/SUSPICIOUS/HIGH),以及带有 +/− 增量的每个评分信号的完整细分。 ## 架构 ``` ┌─────────────────────────────────────────────────────────┐ │ ThreatLens React Dashboard │ │ FileUploadZone → FileDetailsCard (Risk Score + IAT) │ │ LiveTerminal (SSE stream) → InvestigationTimeline │ └────────────────────────┬────────────────────────────────┘ │ POST /upload + GET /stream ┌────────────────────────▼────────────────────────────────┐ │ ThreatLens Express Backend (port 5000) │ │ │ │ 1. SHA-256 + Entropy + Magic Bytes + Strings + EXIF │ │ 2. PE Parser → IAT extraction │ │ 3. Authenticode Digital Signature (node-forge ASN.1) │ │ 4. VirusTotal v3 lookup │ │ 5. YARA-Lite scan (5 rules, validate callbacks) │ │ 6. ═══ Hard Risk Scorer (deterministic, pre-AI) ═══ │ │ 7. JSON response → frontend renders Risk Score card │ │ 8. SSE stream → Agent 1 → Agent 2 → Agent 3 (AI) │ │ 9. HTML report generation + download link │ └─────────────────────────────────────────────────────────┘ ``` ## 技术栈 - **Frontend:** React 19, Vite 7, Tailwind CSS v4 - **Backend:** Node.js, Express 5, Multer - **AI:** OpenRouter API (免费层) - **威胁情报:** VirusTotal API v3 - **Crypto:** node-forge (ASN.1 / PKCS#7 解析) - **安全:** helmet, express-rate-limit, CORS - **架构:** Server-Sent Events (SSE) 用于实时流式传输 ## 本地设置 ### 1. 克隆仓库 ``` git clone https://github.com/waris206/ThreatLens.git cd ThreatLens/project ``` ### 2. 安装依赖 ``` npm install ``` ### 3. 配置环境变量 在 `project/` 目录中创建一个 `.env` 文件: ``` OPENROUTER_API_KEY=your_openrouter_key VIRUSTOTAL_API_KEY=your_virustotal_key ``` ### 4. 启动服务器 **终端 1 (后端 API):** ``` node server.js ``` 服务器运行在 `http://localhost:5000` **终端 2 (前端 UI):** ``` npm run dev ``` 前端运行在 `http://localhost:5173` ## 项目结构 ``` project/ ├── server.js # Express backend — upload, forensics pipeline, AI orchestration ├── forensics.js # SHA-256, entropy, magic bytes, EXIF, Authenticode, VirusTotal ├── riskScorer.js # Deterministic Hard Risk Scorer (pre-AI) ├── yaraEngine.js # YARA-Lite signature scanning engine (5 rules) ├── peParser.js # Pure-JS PE binary parser (IAT extraction) ├── vite.config.js # Vite config (uploads/ ignored by watcher) ├── src/ │ ├── App.jsx # Main app — upload flow, state management │ └── components/ │ ├── Navbar.jsx # Top nav with ThreatLens branding │ ├── FileUploadZone.jsx # Drag-and-drop upload with mode selector │ ├── FileDetailsCard.jsx # Risk score, YARA alerts, PE/IAT, signatures │ ├── LiveTerminal.jsx # Real-time SSE agent output │ └── InvestigationTimeline.jsx # Progress stages └── uploads/ # Generated HTML reports (auto-cleaned) ``` ## 风险评分逻辑 | 信号 | 增量 | 条件 | |---|---|---| | 扩展名不匹配 | +30 | Magic bytes 与声明的扩展名不匹配 | | 受信任的数字签名 | −50 | 来自已知供应商的有效 Authenticode | | 不受信任的签名 | −10 | 已签名但发布者未知 | | 未签名的 PE | +20 | 没有数字签名的 PE 文件 | | VT 干净 (0 个恶意) | −20 | 所有引擎报告干净 | | VT 低检测 (1–3) | +20 | 少数引擎标记它 | | VT 中等 (4–10) | +40 | 多个引擎标记它 | | VT 高 (>10) | +60 | 广泛检测 | | 高熵 (非压缩) | +15 | 非存档类型上 >7.2 位/字节 | | YARA 严重命中 | +35 | 触发了严重严重性规则 | | YARA 高命中 | +25 | 触发了高严重性规则 | | 无 YARA 命中 | −10 | 通过了所有自动特征筛选 | | IAT 中的注入三元组 | +40 | VirtualAllocEx + WriteProcessMemory + CreateRemoteThread | **等级:** 分数 < 20 → **LOW** | 20–60 → **SUSPICIOUS** | > 60 → **HIGH** ## 许可证 本项目根据 MIT 许可证授权。 ## 贡献 欢迎贡献!请随时提交 Pull Request。 ## 作者 由 [waris206](https://github.com/waris206) 开发
标签:AI安全, AST解析, ATT&CK映射, Chat Copilot, DAST, DNS 反向解析, DNS 解析, FTP漏洞扫描, IP 地址批量处理, MITM代理, PE文件解析, PyRIT, React仪表盘, TCP/IP协议栈, YARA引擎, 云安全监控, 全栈安全开发, 勒索软件检测, 多智能体系统, 威胁情报, 安全编排, 开发者工具, 恶意软件分析, 数字签名验证, 文件沙箱, 深度群体检测, 网络安全平台, 自动化分类, 自定义脚本, 误配置预防, 速率限制处理, 静态分析, 风险评分