Avinash-019/Blueeye-SOC
GitHub: Avinash-019/Blueeye-SOC
一个基于 Python 的轻量级 SOC 监控系统,集成实时流量捕获、多维威胁检测、机器学习异常分析和事件响应功能。
Stars: 0 | Forks: 0
# 🔵 Blue Eye — SOC 监控器
**Blue Eye** 是一个基于 Python 构建的、适用于真实生产环境的安全运营中心 (SOC) 工具。它能够捕获实时网络流量,使用基于规则和机器学习的技术检测威胁,发送 Telegram 告警,生成专业的 PDF 报告,并提供一个暗黑主题的 Web 仪表盘——所有功能均集成在单个文件中。
## 🚀 功能特性
| 功能 | 详情 |
|---|---|
| **实时数据包捕获** | 使用 Scapy 捕获流量;支持 BPF 过滤器、接口选择、PCAP 重播 |
| **20+ 威胁检测器** | 端口扫描、DDoS、ARP 欺骗、DNS 隧道、暴力破解、数据渗透、勒索软件、加密挖矿、横向移动、Tor/VPN、恶意 DHCP、WiFi 反认证、HTTP 注入、SSH 隧道 |
| **ML 异常检测** | IsolationForest + OneClassSVM 集成模型;基于实时流量自动训练 |
| **UEBA** | 用户与实体行为分析 — 基于单 IP 的行为基线,基于 Sigma 的异常评分 |
| **Kill Chain 关联** | 将多阶段攻击关联为安全事件;检测 APT 攻击活动 |
| **威胁情报** | 集成 AbuseIPDB + VirusTotal API;Tor 出口节点列表自动同步 |
| **MITRE ATT&CK 映射** | 每条告警均附有战术 ID、技术 ID 和名称标签 |
| **Telegram 告警** | 针对 CRITICAL/HIGH(严重/高危)威胁的实时告警;采用 WHO/WHAT/WHEN/WHERE/HOW/EVIDENCE 格式 |
| **PDF 报告** | 包含 10 个部分的专业报告:执行摘要、图表、时间线、MITRE 映射、IR 剧本、攻击者画像、Kill Chain 事件 |
| **Web 仪表盘** | Flask 暗黑 UI;受登录保护;实时统计、威胁表、IP 封禁/解封、狩猎触发器 |
| **自动封禁** | 基于 iptables 的可选 IP 封禁,支持可配置的持续时间 |
| **地理封禁** | 阻断来自特定国家的流量 |
| **误报防护** | 白名单/CDN 抑制;针对单 IP 单威胁类型的冷却机制 |
| **SQLite 数据库** | 为数据包、威胁、安全事件和被封禁的 IP 提供持久化存储 |
## 📋 环境要求
- **Python 3.9+**
- **推荐使用 Linux**(用于实时捕获和自动封禁)
- 实时数据包捕获需要 **Root / 管理员** 权限
### 安装依赖
```
pip install -r requirements.txt
```
或手动安装:
```
pip install flask scapy rich scikit-learn matplotlib pandas numpy requests fpdf2
```
## ⚙️ 配置(环境变量)
Blue Eye 从环境变量中读取敏感配置信息——请勿硬编码机密数据。
### 通过命令行设置:
```
export TELEGRAM_ENABLED=true
export TELEGRAM_BOT_TOKEN=your_token_here
export TELEGRAM_CHAT_ID=your_chat_id
export ABUSEIPDB_API_KEY=your_key
export BLUEEYE_USERNAME=admin
export BLUEEYE_PASSWORD=your_secure_password
```
或者创建一个 `.env` 文件并加载它:
```
set -a && source .env && set +a
python blueeye.py
```
## 🖥️ 使用方法
### 启动实时捕获 + 仪表盘
```
sudo python blueeye.py
```
### 在指定接口上捕获 10 分钟
```
sudo python blueeye.py --iface eth0 --time 600
```
### 重播 PCAP 文件
```
python blueeye.py --pcap capture.pcap
```
### 从现有数据库生成 PDF 报告
```
python blueeye.py --report-only
```
### 仅启动仪表盘(不进行捕获)
```
python blueeye.py --dashboard-only --port 8080
```
### 启用自动封禁 + 地理封禁
```
sudo python blueeye.py --block-on --geoblock --allowed-countries India
```
### 所有选项
```
--iface IFACE Network interface to capture on
--time SECS Capture duration in seconds (0 = forever)
--filter FILTER BPF capture filter expression
--filter-ip IP Only process packets from/to this IP
--filter-proto PROTO Only process this protocol
--pcap FILE Replay a PCAP file instead of live capture
--report-only Generate PDF from existing DB and exit
--dashboard-only Start web dashboard only (no capture)
--no-web Disable web dashboard
--port PORT Dashboard port (default: 5000)
--host HOST Dashboard bind address (default: 0.0.0.0)
--block-on Enable auto-blocking of threats
--block-dur SECS Auto-block duration (default: 3600)
--geoblock Enable geo-blocking
--allowed-countries Allowed countries for geo-blocking
--ddos-thresh N DDoS packets/sec threshold
--scan-thresh N Port scan unique ports threshold
--brute-thresh N Brute force attempts threshold
--sensitivity FLOAT Adaptive sensitivity sigma (default: 2.5)
--terminal-dash Show rich terminal dashboard
--debug Enable debug logging
```
## 🌐 Web 仪表盘
访问地址:`http://localhost:5000`
默认登录凭据:xxxxxx / xxxxxxx(请通过环境变量进行更改)
**仪表盘页面:**
- 带严重性颜色标记的实时威胁源
- Top 攻击者 IP
- 手动封禁 / 解封 IP
- 触发威胁狩猎(信标通信、DGA、密码喷洒)
- 会话和拓扑视图
- UEBA 异常画像
## 📁 输出文件
所有输出均保存至 `output/` 目录:
| 文件 | 描述 |
|---|---|
| `output/blueeye.db` | SQLite 数据库(数据包、威胁、安全事件、被封禁的 IP) |
| `output/BlueEye_SOC_Report.pdf` | 自动生成的 PDF 报告 |
| `output/blueeye_capture.pcap` | 原始数据包捕获 |
| `output/blueeye.log` | 应用程序日志 |
## 📊 PDF 报告章节
1. 执行摘要
2. 可视化分析(图表:协议分布、威胁时间线、Top IP)
3. 威胁时间线 — 按时间顺序的日志
4. 详细威胁分析(逐事件卡片)
5. Top 攻击者 IP 画像
6. MITRE ATT&CK 覆盖图
7. 事件响应剧本
8. 被封禁的 IP 地址
9. 关联事件(Kill Chain 分析)
10. 建议与后续步骤
## 🔒 安全注意事项
- **切勿**将您的 `.env` 文件或 API 密钥提交至 Git
- 将 `.env` 和 `output/` 添加到 `.gitignore` 中
- 在部署前更改默认的仪表盘凭据
- 运行于防火墙之后;在未配置身份验证的情况下,请勿将端口 5000 暴露至互联网
## 📦 项目结构
```
blue-eye/
├── blueeye.py # Main application (single-file)
├── requirements.txt # Python dependencies
├── README.md # This file
├── INTERVIEW_GUIDE.md # Technical guide for interviews
├── .env.example # Example environment variables
├── .gitignore # Git ignore rules
└── output/ # Auto-created at runtime
├── blueeye.db
├── BlueEye_SOC_Report.pdf
├── blueeye_capture.pcap
└── blueeye.log
```
## 🛡️ 检测到的威胁类型与 MITRE 映射
| 威胁 | MITRE 战术 | 技术 |
|---|---|---|
| 端口扫描 / SYN 隐蔽扫描 | Discovery | T1046 |
| DDoS / 洪水攻击 | Impact | T1499 |
| ICMP 洪水 | Impact | T1499 |
| ARP 欺骗 / 投毒 | Credential Access | T1557 |
| DNS 隧道 | C2 / Exfiltration | T1071.004 / T1048 |
| 暴力破解攻击 | Credential Access | T1110 |
| 横向移动 | Lateral Movement | T1021 |
| 数据渗透 | Exfiltration | T1041 |
| 加密货币挖矿 | Impact | T1496 |
| Tor/VPN/Proxy | C2 | T1090 |
| SSH 隧道 | C2 | T1572 |
| 勒索软件行为 | Impact | T1486 |
| HTTP 注入 | Initial Access | T1190 |
| 恶意 DHCP 服务器 | Credential Access | T1557 |
| WiFi 反认证攻击 | Impact | T1499 |
| 检测到 DGA 域名 | C2 | T1568.002 |
| C2 信标通信 | C2 | T1071 |
| 密码喷洒 | Credential Access | T1110.003 |
| APT 攻击活动 | Reconnaissance | T1595 |
| ML / UEBA 异常 | Reconnaissance | T1595 |
## 📄 许可证
MIT License — 可免费使用、修改和分发。
*基于 Python、Scapy、Flask、scikit-learn、fpdf2 和 Rich 构建。*
标签:Apex, APT攻击检测, ARP欺骗, CISA项目, Clean Code, Cloudflare, DDoS防护, DNS隧道, Flask, HTTP注入, IP 地址批量处理, IP封禁, MITRE ATT&CK, PDF报告生成, PE 加载器, PoC, Python, Scapy, SQLite, SSH隧道, Telegram机器人, Tor检测, UEBA, VPN检测, Web管理面板, 入侵检测系统, 勒索软件检测, 单文件应用, 告警系统, 地理封禁, 威胁情报, 孤立森林, 安全数据湖, 安全运营中心, 实时威胁检测, 开发者工具, 异常检测, 挖矿木马检测, 插件系统, 支持向量机, 无后门, 暗网流量检测, 暗黑模式, 暴力破解, 机器学习, 杀伤链, 横向移动, 用户与实体行为分析, 端口扫描检测, 编程规范, 网络安全, 网络攻击检测, 网络映射, 网络防护, 自动化防御, 蜜罐与防御, 逆向工具, 速率限制, 隐私保护