viralbaloney991/Gap_analyser
GitHub: viralbaloney991/Gap_analyser
面向安全运营团队的全栈 AI 平台,致力于解决 SIEM 告警疲劳、检测规则冗余及 MITRE ATT&CK 覆盖盲区问题。
Stars: 0 | Forks: 0
# SIEM 告警分析器
一个面向安全运营团队的全栈 AI 驱动平台,用于审计检测覆盖率、降低告警噪音、映射 MITRE ATT&CK 盲区,并运行 AI 辅助的威胁狩猎——所有操作均可通过单一界面完成。
专为管理大型检测规则库并需要解答以下问题的团队构建:“我们遗漏了什么?哪些告警触发过于频繁?哪些内容存在重复?”
## 功能
| 功能 | 描述 |
|---------|-------------|
| **相似度引擎** | 使用 TF-IDF 加权的多维向量对重复及近似重复的检测规则进行分组 |
| **MITRE ATT&CK 热力图** | 可视化战术和技术覆盖情况;按集成来源高亮显示未覆盖的区域 |
| **噪音检测** | 使用多窗口行为评分(7d/14d/21d/30d)标记大数量、突发、周期性、加速和持续性的噪音告警 |
| **告警洞察** | LLM 生成的针对每条检测规则的可执行建议——调优建议、过滤候选、富化构想 |
| **威胁图** | 展示告警关系、集成覆盖情况和检测规则家族的力导向图 |
| **检测构建器** | 逐步向导式工具,用于根据所选的 MITRE 技术构建新的检测规则,并生成查询输出 |
| **AI 威胁狩猎** | 双阶段流式狩猎:schema 发现 → 包含字段映射、查询转换、误报分析和后续查询的发现报告 |
| **关联引擎** | 识别集成盲区——未关联检测规则的日志源 |
| **导出** | LLM 生成的执行摘要,将完整分析总结为可生成 PDF 的报告 |
| **问题追踪器同步** | 将发现的盲区推送到项目管理面板(默认为 Monday.com,可配置) |
## 架构
```
┌─────────────────────────────────────────────┐
│ React + TypeScript │ frontend/
│ TenantSelector → Analyze → Results tabs │
└────────────────────┬────────────────────────┘
│ REST / SSE
┌────────────────────▼────────────────────────┐
│ Go API Server │ backend/
│ │
│ ┌──────────┐ ┌──────────┐ ┌───────────┐ │
│ │Similarity│ │ MITRE │ │ LLM │ │
│ │ Engine │ │ Coverage │ │ Pipeline │ │
│ └──────────┘ └──────────┘ └───────────┘ │
│ │
│ Redis (L1 cache) PostgreSQL (L2 store) │
└──────────┬──────────────────────────────────┘
│ API
┌──────────▼──────────────────────────────────┐
│ SIEM Platform (alert/detection source)│
│ Splunk · Sentinel · Chronicle · Coralogix │
└─────────────────────────────────────────────┘
```
## 项目结构
```
.
├── backend/
│ ├── cmd/server/ # Entry point, HTTP routing, CORS middleware
│ └── internal/
│ ├── api/ # HTTP handlers (analyze, noise, hunt, export …)
│ ├── coralogix/ # SIEM client — alert fetch, event counts, feature extraction
│ ├── similarity/ # Similarity engine, noise scoring, merge logic
│ ├── mitre/ # ATT&CK coverage computation
│ ├── insights/ # LLM enrichment pipeline (insights, suggestions, correlations)
│ ├── llm/ # Provider adapters: Claude, NVIDIA NIM, Gemini
│ ├── models/ # Shared domain types
│ ├── monday/ # Issue tracker client
│ ├── pipeline/ # Semaphore-bounded parallel LLM pipeline
│ ├── cache/ # Redis L1 cache
│ ├── store/ # PostgreSQL persistent alert store
│ ├── sync/ # Background worker: DB ↔ cache sync
│ └── prewarm/ # Suggestion pre-warm worker
├── frontend/
│ └── src/
│ ├── components/
│ │ ├── ClientSelector.tsx # Tenant/environment picker
│ │ ├── AlertInsights.tsx # Insights, noise, suggestions, gaps
│ │ ├── MITREHeatmap.tsx # ATT&CK coverage heatmap
│ │ ├── ThreatGraph.tsx # Force-directed alert relationship graph
│ │ ├── DetectionBuilder.tsx # Detection rule wizard
│ │ ├── HuntView.tsx # AI threat hunt streaming UI
│ │ ├── IntegrationSummary.tsx # Integration ↔ alert coverage table
│ │ └── NoisePills.tsx # Lookback window selector
│ ├── services/api.ts # API client + SSE streaming
│ └── types/index.ts # Shared TypeScript types
└── dev.sh # Dev startup script
```
## 环境要求
- **Go** 1.21+
- **Node.js** 18+ 及 npm
- **Redis**(可选,推荐)— `localhost:6379`,用于响应缓存
- **PostgreSQL**(可选)— 用于持久化告警存储和预热
- SIEM 平台凭据(API 密钥 + 区域/endpoint)
- 至少一种 LLM 提供商密钥(Anthropic Claude、NVIDIA NIM 或 Google Gemini)
## 配置说明
后端从 `backend/clients.yaml`(已从版本控制中排除)读取配置。复制示例文件并填入您的配置值:
```
cp backend/clients.yaml.example backend/clients.yaml
```
结构:
```
monday_api_token: "" # issue tracker token (or set MONDAY_API_TOKEN)
monday_board_id: 0 # board/project ID for gap findings
llm:
default_provider: claude # claude | nvidia | gemini
claude_model: claude-opus-4-7
pipeline_global_cap: 5 # max concurrent LLM calls
pipeline_batch_size: 10
clients:
- name: my-environment
region: EU1 # SIEM region/endpoint
api_key: "" # set via CLIENT__API_KEY env var
monday_group_id: "" # issue tracker group for this tenant
```
### 环境变量
所有密钥应通过环境变量提供:
| 变量 | 用途 |
|----------|---------|
| `ANTHROPIC_API_KEY` | Claude LLM |
| `NVIDIA_API_KEY` | NVIDIA NIM LLM |
| `GEMINI_API_KEY` | Google Gemini LLM |
| `MONDAY_API_TOKEN` | 问题追踪器 |
| `CLIENT__API_KEY` | 多租户 SIEM API 密钥 |
| `NEON_DSN` | PostgreSQL 连接字符串 |
| `REDIS_ADDR` | Redis 地址(默认:`localhost:6379`) |
| `PORT` | API 服务器端口(默认:`8080`) |
| `CORS_ORIGIN` | 允许的前端源(默认:`http://localhost:5173`) |
| `CONFIG_PATH` | 配置文件路径(默认:`clients.yaml`) |
| `FRONTEND_DIST` | 构建的前端路径(默认:`../../frontend/dist`) |
| `CX_BIN_PATH` | SIEM CLI 二进制文件路径(由威胁狩猎使用) |
## 本地运行
```
# Backend
cd backend
go run ./cmd/server
# Frontend (独立终端)
cd frontend
npm install
npm run dev
```
前端开发服务器:`http://localhost:5173`
API 服务器:`http://localhost:8080`
通过 Go 服务器提供前端服务(生产模式):
```
cd frontend && npm run build
cd ../backend && go run ./cmd/server
```
## API 参考
| 方法 | Endpoint | 描述 |
|--------|----------|-------------|
| `GET` | `/api/health` | 健康检查 |
| `GET` | `/api/clients` | 列出已配置的租户 |
| `POST` | `/api/analyze` | 完整分析 pipeline(相似度、MITRE、噪音、洞察) |
| `POST` | `/api/noise` | 仅重新运行噪音检测(可配置回溯时间) |
| `POST` | `/api/insights` | 仅重新运行洞察分析 |
| `POST` | `/api/suggestions` | 针对未覆盖技术的 LLM 检测建议 |
| `POST` | `/api/correlations` | 集成盲区关联 |
| `POST` | `/api/build-detection` | 根据 MITRE 技术生成检测规则 |
| `POST` | `/api/map-tactics` | 将自由文本查询映射到 MITRE 战术 |
| `GET` | `/api/mitre-catalog` | 完整的本地 MITRE ATT&CK 技术目录 |
| `GET` | `/api/hunt/stream` | SSE:AI 威胁狩猎(双阶段,流式传输) |
| `POST` | `/api/hunt/export` | 将狩猎报告导出为 Markdown |
| `POST` | `/api/export/narrative` | 用于完整报告的 LLM 执行摘要 |
## 噪音检测
噪音引擎使用**多窗口行为评分**,在四个固定的回溯窗口(7d / 14d / 21d / 30d)中对告警触发模式进行分类:
| 模式 | 信号 | 阈值 |
|---------|--------|-----------|
| `high_volume` | 30d 计数 > 10 | 现有音量阈值 |
| `burst` | 最近一周 ÷ 预期每周份额 | > 2.5× |
| `periodic` | 偏离均匀触发速率 | < 20% 增量 |
| `accelerating` | 最近窗口内逐渐攀升 | > 1.5× |
| `persistent` | 每个窗口均有触发,总计 ≤ 10 | 单调增长 |
每个噪音告警都会显示一个模式标记,并在工具提示中显示各窗口的计数。
## 相似度权重
相似度引擎使用 10 维的 TF-IDF 加权模型。各权重之和精确为 1.00:
| 维度 | 权重 |
|-----------|--------|
| 检测查询 (Lucene) | 0.25 |
| 告警名称 token | 0.15 |
| 数据源 | 0.10 |
| 实体 | 0.10 |
| 操作 | 0.10 |
| MITRE 技术 | 0.10 |
| 条件 | 0.05 |
| 分组依据类别 | 0.05 |
| 告警类型 | 0.05 |
| 时间窗口 | 0.05 |
## 技术栈
**后端:** Go · Redis · PostgreSQL
**前端:** React · TypeScript · Vite
**LLM:** Anthropic Claude · NVIDIA NIM · Google Gemini
**问题追踪:** Monday.com(REST API,可替换)
标签:AI安全, Apex, Chat Copilot, Cloudflare, Coralogix, DLL 劫持, IP 地址批量处理, IT运维, LLM, MITRE ATT&CK, Monday.com, OISF, React, Socks5代理, Syscalls, TF-IDF, TypeScript, Unmanaged PE, 关联分析, 后端开发, 告警分析, 告警去重, 告警管理, 告警降噪, 大语言模型, 威胁图谱, 子域名变形, 安全信息与事件管理, 安全报告, 安全插件, 安全运营, 扫描框架, 搜索引擎查询, 搜索引擎爬取, 无线安全, 日志审计, 日志管理, 机器学习, 测试用例, 网络安全, 行为评分, 覆盖率分析, 规则构建器, 隐私保护, 项目集成