vaishnavi-musale/threatlens-ai

GitHub: vaishnavi-musale/threatlens-ai

一个集成 NVIDIA LLM 的 AI 驱动威胁情报平台,通过对话式 Copilot 为安全团队提供实时的威胁分析、风险评估和攻击预测。

Stars: 0 | Forks: 0

# ThreatLens – AI 驱动的威胁情报平台 ![ThreatLens Banner](https://via.placeholder.com/1200x400?text=ThreatLens+AI+Threat+Intelligence) ## 概述 **ThreatLens** 是一个智能网络安全威胁分析平台,利用先进的 AI 实时检测、分析和预测网络威胁。ThreatLens 专为安全团队设计,提供有关 APT 活动、威胁行为者、IOC 关联和风险评分的可操作情报——从而实现主动的威胁响应与缓解。 ThreatLens 采用现代 React 前端和 Python 后端构建,集成了最先进的 NVIDIA LLM 功能,可在企业级规模下提供上下文感知的威胁分析。 ## 核心功能 ### 🤖 **用于威胁分析的 AI Copilot** - 用于威胁情报查询的上下文感知对话式 AI - 包含风险级别和置信度分数的结构化威胁评估 - 用于复杂网络安全查询的自然语言处理 - 具有确定性、可重复响应的实时分析 ### 📊 **告警深度分析仪表板** - 全面的威胁告警可视化与调查 - 攻击链映射和 IOC 提取 - 风险评分和置信度指标 - 攻击时间线和横向移动跟踪 ### 🔍 **威胁情报源** - 实时威胁行为者监控和 APT 活动跟踪 - 妥协指标 (IOC) 提取:电子邮件、IP、域名、哈希值 - 威胁行为者画像和归因数据 - 恶意软件家族和活动关联 ### ⚡ **风险评估与评分** - 多因素风险评分算法 - 基于置信度的威胁分类 - 基于严重程度的告警优先级排序 - 具有可操作性的修复建议 ### 🎯 **预测性情报** - 针对活跃威胁的攻击链预测 - 下一步威胁行为者行为分析 - 缓解策略建议 - 为利益相关者生成 PDF 报告 ## 技术栈 | 组件 | 技术 | | ---------------- | ------------------------------------------------ | | **Frontend** | React 19+ (TypeScript), Vite 7+, Tailwind CSS 4+ | | **Backend** | Python 3.9+, Flask/SocketIO | | **AI/LLM** | NVIDIA Llama 3.1 8B Instruct (via OpenAI API) | | **构建工具** | Vite (优化包大小与快速刷新) | | **样式** | Tailwind CSS (实用优先、响应式设计) | | **通信** | REST API + WebSockets (实时更新) | ## 项目结构 ``` ThreatLens/ ├── src/ │ ├── components/ # Reusable UI components │ │ ├── AnimatedBackground.tsx │ │ └── Navbar.tsx │ ├── pages/ # Page-level components │ │ ├── LandingPage.tsx │ │ ├── DashboardPage.tsx │ │ ├── CopilotPage.tsx │ │ ├── AlertDeepDivePage.tsx │ │ ├── ResponsePage.tsx │ │ └── IntelligencePage.tsx │ ├── context/ # React Context for state management │ │ └── ThreatContext.tsx │ ├── services/ # API communication layer │ │ └── api.ts │ ├── data/ # Mock data & fixtures │ │ └── mockData.ts │ ├── utils/ # Utility functions │ │ └── cn.ts # Tailwind class utilities │ ├── App.tsx # Main app component │ ├── main.tsx # Entry point │ └── types.ts # TypeScript type definitions ├── backend/ │ ├── agents/ # AI agent pipeline │ │ ├── architect.py │ │ ├── chameleon.py │ │ ├── diplomat.py │ │ ├── harvester.py │ │ ├── narrator.py │ │ ├── pipeline.py │ │ ├── polyglot.py │ │ ├── profiler.py │ │ ├── sentinel.py │ │ └── simulator.py │ ├── api/ │ │ └── copilot.py # AI Copilot endpoint │ ├── services/ │ │ ├── llm_service.py # NVIDIA LLM integration │ │ └── threat_context_service.py │ ├── utils/ │ │ └── report_generator.py │ ├── app.py # Flask main application │ ├── requirements.txt # Python dependencies │ └── README.md # Backend documentation │ ├── index.html ├── package.json ├── tsconfig.json ├── vite.config.ts ├── LICENSE # MIT License └── README.md # This file ``` ## 安装与设置 ### 前置条件 - **Node.js** 18+ 和 **npm** 9+ - 带 **pip** 的 **Python** 3.9+ - **NVIDIA API Key** (用于访问 LLM) ### 步骤 1:克隆仓库 ``` git clone https://github.com/yourusername/threatslens.git cd threatslens ``` ### 步骤 2:Frontend 设置 ``` # 安装 frontend dependencies npm install # 启动 development server (运行于 http://localhost:5173) npm run dev ``` ### 步骤 3:Backend 设置 ``` cd backend # 创建并激活 Python virtual environment python -m venv .venv # 激活 virtual environment # 在 Windows 上: .venv\Scripts\activate # 在 macOS/Linux 上: source .venv/bin/activate # 安装 Python dependencies pip install -r requirements.txt # 运行 backend server (运行于 http://localhost:5000) python app.py ``` ### 验证安装 - Frontend: http://localhost:5173 (应加载 ThreatLens 落地页) - Backend: http://localhost:5000/health (应返回 API 状态) - 两个终端都应显示“server running”消息且无错误 ## 环境配置 在 `backend/` 目录中创建一个 `.env` 文件,包含以下变量: ``` # NVIDIA API 配置 NVIDIA_API_KEY=your_nvidia_api_key_here NVIDIA_API_BASE=https://integrate.api.nvidia.com/v1 # Backend 配置 FLASK_ENV=development FLASK_DEBUG=True PORT=5000 # Frontend 配置 VITE_API_URL=http://localhost:5000 ``` ### 获取您的 NVIDIA API Key 1. 访问 [NVIDIA Build](https://build.nvidia.com) 2. 注册或登录 3. 导航到 API Keys 部分 4. 生成新的 API 密钥 5. 复制并粘贴到 `.env` 文件中 ## 使用说明 ### 启动应用 1. **启动 Backend** (终端 1): cd backend source .venv/bin/activate # Windows 上使用 .venv\Scripts\activate python app.py 2. **启动 Frontend** (终端 2): npm run dev 3. **打开浏览器**:导航到 `http://localhost:5173` ### 使用 AI Copilot 1. 导航到 **Copilot** 页面 2. 查看带有上下文的活跃威胁告警 (APT29 凭证收集活动) 3. 向 AI 询问有关威胁的问题: - "详细解释此威胁" - "下一步可能的攻击步骤是什么?" - "我们应该实施哪些缓解策略?" - "生成威胁报告" 4. AI 将以结构化分析、风险级别和可操作建议进行响应 ### 使用仪表板 - **告警深度分析**:通过精细的细节调查特定威胁 - **威胁情报**:浏览威胁行为者画像和活动 - **响应计划**:查看并执行缓解建议 - **生成报告**:将 AI 分析导出为 PDF 供利益相关者查阅 ## 架构与数据流 ### 系统架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ React Frontend (Vite) │ │ (Landing, Dashboard, Copilot, Alert Dive, Intelligence) │ └──────────────┬──────────────────────────────────────────────┘ │ HTTP/WebSocket ↓ ┌─────────────────────────────────────────────────────────────┐ │ Python Backend (Flask + SocketIO) │ │ ┌────────────────────────────────────────────────────────┐ │ │ │ API Endpoints │ │ │ │ • /api/copilot/query (AI analysis) │ │ │ │ • /api/report/ (PDF generation) │ │ │ │ • /api/alert/send/ (Alert dispatch) │ │ │ └────────────────────────────────────────────────────────┘ │ │ ┌────────────────────────────────────────────────────────┐ │ │ │ Core Services │ │ │ │ • LLM Service (NVIDIA integration) │ │ │ │ • Threat Context Service (IOC extraction) │ │ │ │ • Report Generator (PDF creation) │ │ │ └────────────────────────────────────────────────────────┘ │ │ ┌────────────────────────────────────────────────────────┐ │ │ │ Agent Pipeline (Multi-stage threat analysis) │ │ │ │ • Architect, Harvester, Sentinel, Narrator, etc. │ │ │ └────────────────────────────────────────────────────────┘ │ └──────────────┬──────────────────────────────────────────────┘ │ HTTPS/API calls ↓ ┌─────────────────────────────────────────────────────────────┐ │ NVIDIA API (Llama 3.1 8B Instruct LLM) │ │ (Context-aware threat analysis, response generation) │ └─────────────────────────────────────────────────────────────┘ ``` ### 请求-响应周期 1. **用户查询**:Frontend 将威胁上下文 + 用户问题发送到 Backend 2. **上下文丰富**:Backend 提取 IOC、严重程度、行为者、风险评分 3. **LLM 处理**:NVIDIA API 在系统提示强制下进行分析 4. **响应解析**:6 级回退解析以实现稳健的响应提取 5. **结构化输出**:Backend 返回风险级别、操作、置信度 6. **Frontend 显示**:React 使用元数据和建议渲染 AI 响应 ## 关键配置与调优 ### LLM 参数 (Backend) ``` # llm_service.py temperature = 0.5 # Deterministic responses (not random) max_tokens = 1500 # Sufficient for detailed threat analysis model = "nvidia/llama-3.1-8b-instruct-fp8" ``` ### 系统提示 Backend 强制执行严格的系统提示,以确保: - **结构**:4 部分格式 (总结、分析、操作、置信度) - **上下文使用**:在每个响应中引用告警数据 - **具体性**:拒绝通用/模板化响应 - **置信度**:明确的置信度评分 ### 日志记录 通过检查终端输出来启用详细的调试: ``` [LLM DEBUG] → API request details [COPILOT] → Query and response processing [CopilotPage] → Frontend request/response logging ``` ## API 端点 ### AI Copilot 查询 ``` POST /api/copilot/query Content-Type: application/json { "query": "What's the next likely APT29 attack step?", "alert_id": "THREAT-APT29-2026-001", "severity": "CRITICAL", "actor": "APT29", "risk_score": 95, "extracted_emails": ["attacker@malicious.com"], "extracted_ips": ["192.0.2.1"], "attack_chain": [...], ... } Response: { "answer": "Based on APT29's historical patterns...", "risk_level": "CRITICAL", "confidence": 92, "actions": [ "Isolate compromised email accounts", "Reset credentials for all users", "Scan for persistence mechanisms" ] } ``` ### 报告生成 ``` GET /api/report/{alert_id} Response: PDF file download ``` ### 告警派发 ``` POST /api/alert/send/{threat_id} Response: { "success": true, "message": "Alert sent successfully" } ``` ## 开发工作流 ### 运行测试 ``` # Backend 测试 cd backend pytest tests/ # Frontend 测试 npm run test ``` ### 生产环境构建 ``` # Frontend npm run build # Creates optimized dist/ folder npm run preview # Test production build locally # Backend # 无需额外构建;请确保所有 dependencies 已安装 ``` ### 代码质量 ``` # Frontend linting npm run lint # Python linting cd backend pylint agents/ api/ services/ utils/ ``` ## 故障排除 ### Backend 连接问题 ``` Error: "API error: 503" or "NVIDIA API unavailable" → Verify NVIDIA_API_KEY in .env → Check internet connectivity → Confirm API key has quota remaining ``` ### Frontend 未加载 ``` Error: "Cannot GET /" → Ensure npm run dev is running → Check that Vite is listening on localhost:5173 → Clear browser cache (Ctrl+Shift+Delete) ``` ### Python 导入错误 ``` Error: "No module named 'flask'" → Activate virtual environment: source .venv/bin/activate → Run: pip install -r requirements.txt ``` ### 端口已被占用 ``` Error: "Address already in use :5000" or ":5173" → Kill existing process or use different port → Windows: netstat -ano | findall :5000 → macOS/Linux: lsof -i :5000 ``` ## 未来增强计划 ### 短期 - [ ] 通过 WebSocket 实现实时威胁告警流传输 - [ ] 高级 IOC 关联与丰富 - [ ] 自定义威胁情报源集成 - [ ] 导出功能 (CSV、JSON、STIX) ### 中期 - [ ] 用户认证与基于角色的访问控制 - [ ] 集成 PostgreSQL 数据库以实现持久化 - [ ] 告警管理和案例跟踪系统 - [ ] 多用户协作与审计日志 - [ ] 自定义告警规则与自动化 ### 长期 - [ ] 企业级部署 (Docker, Kubernetes) - [ ] 多租户支持 - [ ] 用于威胁预测的高级 ML 模型 - [ ] 与 SIEM 平台集成 (Splunk, ELK) - [ ] 威胁行为者关系映射与可视化 - [ ] 用于第三方集成的 API 市场 ## 贡献 欢迎贡献!参与贡献步骤: 1. Fork 仓库 2. 创建功能分支 (`git checkout -b feature/your-feature`) 3. 提交更改 (`git commit -m "Add your feature"`) 4. 推送到分支 (`git push origin feature/your-feature`) 5. 发起 Pull Request 请确保: - 代码遵循项目风格指南 - 所有测试通过 - 文档已更新 ## 许可证 本项目基于 **MIT License** 授权 – 有关详细信息,请参见 [LICENSE](LICENSE) 文件。 **Copyright © 2026 ThreatLens Contributors** ## 支持与联系 如有问题、错误报告或功能请求: - GitHub: https://github.com/vaishnavi-musale - Email: musalevaishnavi30@gmail.com - LinkedIn: https://www.linkedin.com/in/vaishnavi-musale-4603aa3b9 ## 致谢 - **NVIDIA** 通过 Llama 3.1 8B Instruct 提供了最先进的 LLM 能力 - **React & Vite** 社区提供了出色的开发者体验 - **Tailwind CSS** 提供了实用优先的 CSS 框架 - 安全研究社区提供的威胁情报见解 **为网络安全专业人士用 ❤️ 构建**
标签:AI Copilot, APT攻击检测, DLL 劫持, HTTP/HTTPS抓包, IOC提取, Python, React, Syscalls, TCP/IP协议栈, 人工智能, 企业安全, 大语言模型, 威胁分析, 威胁情报, 安全报告生成, 安全运营中心, 开发者工具, 态势感知, 攻击链分析, 攻击预测, 无后门, 智能安全, 用户模式Hook绕过, 缓解策略, 网络安全, 网络安全平台, 网络映射, 网络资产管理, 自动化侦查工具, 逆向工具, 隐私保护, 风险评分