vaishnavi-musale/threatlens-ai
GitHub: vaishnavi-musale/threatlens-ai
一个集成 NVIDIA LLM 的 AI 驱动威胁情报平台,通过对话式 Copilot 为安全团队提供实时的威胁分析、风险评估和攻击预测。
Stars: 0 | Forks: 0
# ThreatLens – AI 驱动的威胁情报平台

## 概述
**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绕过, 缓解策略, 网络安全, 网络安全平台, 网络映射, 网络资产管理, 自动化侦查工具, 逆向工具, 隐私保护, 风险评分