solomonneas/bro-hunter

GitHub: solomonneas/bro-hunter

基于 Zeek/Suricata 日志的网络威胁狩猎平台,提供可解释的 AI 威胁评分和 MITRE ATT&CK 自动映射能力。

Stars: 0 | Forks: 0

React TypeScript Python FastAPI Tailwind CSS Vite MIT License 作品集

# 🎯 Solomon's Bro Hunter **通过可解释的评分和 MITRE ATT&CK 映射在网络流量中搜寻威胁。** Bro Hunter 是一个威胁搜寻平台,它处理 Zeek 和 Suricata 网络日志以识别威胁,使用可解释的 AI 对其进行评分,并关联 MITRE ATT&CK 技术之间的指标。专为需要查看证据的网络取证团队而构建。 ![Bro Hunter](https://raw.githubusercontent.com/solomonneas/bro-hunter/main/docs/screenshots/dashboard.png) ## 功能特性 - **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绕过, 网络安全, 网络安全工具, 网络流量分析, 自动化攻击, 隐私保护