solomonneas/bro-hunter
GitHub: solomonneas/bro-hunter
基于 Zeek/Suricata 日志的网络威胁狩猎平台,提供可解释的 AI 威胁评分和 MITRE ATT&CK 自动映射能力。
Stars: 0 | Forks: 0
# 🎯 Solomon's Bro Hunter
**通过可解释的评分和 MITRE ATT&CK 映射在网络流量中搜寻威胁。**
Bro Hunter 是一个威胁搜寻平台,它处理 Zeek 和 Suricata 网络日志以识别威胁,使用可解释的 AI 对其进行评分,并关联 MITRE ATT&CK 技术之间的指标。专为需要查看证据的网络取证团队而构建。

## 功能特性
- **Zeek & Suricata 日志分析** - 解析网络日志并提取威胁指标
- **可解释的威胁评分** - 包含推理链的 AI 驱动评分
- **MITRE ATT&CK 映射** - 自动技术和战术关联
- **Beaconing 检测** - 识别周期性的 C2 通信模式
- **DNS 威胁分析** - 检测 DGA、隧道和快速_flux 网络
- **网络取证** - 深入分析流数据、DNS 查询和 SSL 证书
- **5 种视觉主题** - Tactical、Analyst、Terminal、Command、Cyber 变体
- **离线优先** - 适用于存档日志,无需实时流
## 快速开始
```
# 克隆 repo
git clone https://github.com/solomonneas/bro-hunter.git
cd bro-hunter
# 安装并运行 frontend
npm install
npm run dev
# 在另一个终端中,启动 backend
cd api
pip install -r requirements.txt
python main.py
```
前端运行在 **http://localhost:5174**
后端 API 运行在 **http://localhost:8000**
## 技术栈
| 层级 | 技术 | 用途 |
|-------|-----------|---------|
| **Frontend** | React 18 | 交互式仪表盘 |
| **Language** | TypeScript 5 | 类型安全 |
| **Styling** | Tailwind CSS 3 | 实用优先的 CSS |
| **Charts** | Recharts | 威胁可视化和时间线图表 |
| **Data** | TanStack Query | 异步数据获取和缓存 |
| **Bundler** | Vite 7 | 开发服务器和构建 |
| **Backend** | FastAPI | REST API 和日志处理 |
| **Compute** | Python 3.9+ | 威胁评分算法 |
| **Icons** | Lucide React | 一致的图标集 |
## 威胁评分
Bro Hunter 使用多因素评分系统:
1. **指标置信度** - 跨来源的 IOC 信誉
2. **行为匹配** - 模式识别(beaconing、隧道等)
3. **证据权重** - 有多少支持数据支持该评分
4. **MITRE 对齐** - 技术频率和关键性
分数范围从 0(良性)到 100(严重威胁),并附有解释每个组件的清晰推理链。
## 项目结构
```
bro-hunter/
├── web/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page views (Dashboard, Threats, Analysis)
│ │ ├── store/ # Zustand state store
│ │ ├── utils/ # Helpers (scoring, parsing, formatting)
│ │ └── variants/ # 5 theme variants
│ ├── package.json
│ └── vite.config.ts
├── api/ # FastAPI backend
│ ├── main.py # Entry point
│ ├── parsers/ # Log parsers (Zeek, Suricata)
│ ├── scoring/ # Threat scoring module
│ ├── mitre/ # ATT&CK correlation
│ └── requirements.txt
├── data/ # Sample logs and fixtures
└── README.md
```
## 日志摄取
将 Zeek 或 Suricata 日志放在 `data/` 目录中,并通过仪表盘导入它们:
**Zeek 日志:** `conn.log`、`dns.log`、`ssl.log`、`http.log`
**Suricata:** `eve.json`(JSON 输出格式)
后端解析并将它们索引以供快速查询。
## 速率限制
默认情况下,PCAP 上传受到速率限制,以防止在公共部署上被滥用:
- 每小时每个 IP **5 次上传**
- 每天每个 IP **15 次上传**
### 配置
通过环境变量控制速率限制:
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `BROHUNTER_RATE_LIMIT_ENABLED` | `true` | 设置为 `false` 可完全禁用速率限制 |
| `BROHUNTER_RATE_LIMIT_HOURLY` | `5` | 每个 IP 每小时的最大上传次数 |
| `BROHUNTER_RATE_LIMIT_DAILY` | `15` | 每个 IP 每天的最大上传次数 |
### 自托管 / 克隆部署
如果您在自己的基础设施上运行 Bro Hunter 并且不需要速率限制:
```
# 完全禁用 rate limiting
export BROHUNTER_RATE_LIMIT_ENABLED=false
# 或者增加 limits
export BROHUNTER_RATE_LIMIT_HOURLY=100
export BROHUNTER_RATE_LIMIT_DAILY=500
```
在 Docker / Railway 中,在您的部署配置中将这些设置为环境变量。
## 集成 (Phase 7)
Bro Hunter 现在包含用于 TheHive、Wazuh 和 MISP 的初始外部集成端点。
### 环境变量
在 API 服务上设置这些:
```
# TheHive
THEHIVE_URL=https://thehive.example.com
THEHIVE_API_KEY=your_thehive_api_key
THEHIVE_AUTH_SCHEME=Bearer
# Wazuh
WAZUH_URL=https://wazuh.example.com
WAZUH_API_KEY=your_wazuh_api_key
WAZUH_AUTH_SCHEME=Bearer
WAZUH_ALERTS_PATH=/alerts
# MISP
MISP_URL=https://misp.example.com
MISP_API_KEY=your_misp_api_key
MISP_SEARCH_PATH=/attributes/restSearch
```
### 端点
- `GET /api/v1/integrations/status`
- `POST /api/v1/integrations/thehive/cases/from-case/{case_id}`
- `POST /api/v1/integrations/wazuh/correlate/case/{case_id}?limit_per_ioc=25`
- `POST /api/v1/integrations/misp/enrich/case/{case_id}?limit_per_ioc=25`
### cURL 示例
```
# 检查集成配置状态
curl -s http://localhost:8000/api/v1/integrations/status
# 将 case 导出至 TheHive
curl -X POST "http://localhost:8000/api/v1/integrations/thehive/cases/from-case/" \
-H "X-API-Key: $BROHUNTER_API_KEY"
# 关联 case IOCs 与 Wazuh alerts
curl -X POST "http://localhost:8000/api/v1/integrations/wazuh/correlate/case/?limit_per_ioc=25" \
-H "X-API-Key: $BROHUNTER_API_KEY"
# 从 MISP 富化 case IOCs
curl -X POST "http://localhost:8000/api/v1/integrations/misp/enrich/case/?limit_per_ioc=25" \
-H "X-API-Key: $BROHUNTER_API_KEY"
```
## 实时操作 API (Phase 8)
用于实时仪表盘的实时日志摄取和增量事件流。
### 端点
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| GET | `/api/v1/live/status` | 获取摄取统计信息和健康状态 |
| POST | `/api/v1/live/ingest/zeek` | 摄取 Zeek JSON 行 |
| POST | `/api/v1/live/ingest/suricata` | 摄取 Suricata EVE JSON 行 |
| GET | `/api/v1/live/events?since=&limit=500` | 获取用于自动刷新的增量事件 |
### cURL 示例
```
# 检查实时操作状态
curl -s http://localhost:8000/api/v1/live/status
# 摄取 Zeek conn.log 事件
curl -X POST "http://localhost:8000/api/v1/live/ingest/zeek?log_type=conn" \
-H "X-API-Key: $BROHUNTER_API_KEY" \
-H "Content-Type: text/plain" \
-d '{"ts":1700000000.0,"uid":"C1","id_orig_h":"10.0.0.1","id_orig_p":12345,"id_resp_h":"192.168.1.1","id_resp_p":80,"proto":"tcp","conn_state":"SF"}'
# 摄取 Suricata EVE 事件
curl -X POST "http://localhost:8000/api/v1/live/ingest/suricata" \
-H "X-API-Key: $BROHUNTER_API_KEY" \
-H "Content-Type: text/plain" \
-d '{"timestamp":"2024-01-01T00:00:00.000Z","event_type":"alert","src_ip":"10.0.0.1","dest_ip":"192.168.1.1","src_port":12345,"dest_port":80,"proto":"TCP","alert":{"signature":"Test Alert","signature_id":123,"category":"test","severity":3,"action":"allowed"}}'
# 获取自时间戳以来的增量事件(用于 dashboard 自动刷新)
curl -s "http://localhost:8000/api/v1/live/events?since=2024-01-01T00:00:00Z&limit=100" \
-H "X-API-Key: $BROHUNTER_API_KEY"
```
## 许可证
MIT - 详见 [LICENSE](LICENSE)。
标签:AMSI绕过, AV绕过, Bro, C2检测, Cloudflare, DGA检测, DNS分析, DNS枚举, DNS隧道检测, FastAPI, IP 地址批量处理, MITRE ATT&CK, Python, React, Rootkit, Suricata, Syscalls, TypeScript, Zeek, 人工智能, 信标检测, 入侵检测系统, 内核模式, 可解释AI, 威胁搜寻, 威胁检测, 安全插件, 安全数据湖, 无后门, 流量可视化, 现代安全运营, 用户模式Hook绕过, 网络安全, 网络安全工具, 网络流量分析, 自动化攻击, 隐私保护