m61a/BeaconSentry
GitHub: m61a/BeaconSentry
一个从零构建的 AI 驱动网络行为检测器,利用熵数学、统计学和轻量级 ML 在无特征规则的情况下发现 C2 Beaconing 与 DNS 数据外泄行为。
Stars: 0 | Forks: 0
# 🕯️ BeaconSentry
### 从零开始构建你自己的 AI 驱动的网络 C2 Beaconing 与数据外泄检测器
**无需特征。无需规则集。仅靠数学、统计与轻量级 ML 监控你的网络。**
[](LICENSE)
[](https://www.python.org/)
[](#)
[](#-contributing)
[](#-mitre-attck-coverage)
*每一个基于规则的 IDS 都有盲点:那就是它从未见过的攻击。*
*BeaconSentry 不会去寻找已知的恶意行为——它会学习“正常”的样子,并在你的网络偏离常态的那一刻发出警告。*
## ⚡ 3 秒简介
```
$ python3 core/entropy_engine.py
=== Simulated DNS-tunneling burst (25 queries, same source) ===
[LOW ] f8a91cbe7710eae1998ecf8427e.exfil-c2.attacker-do score= 15 ttp=['T1071.004']
[MEDIUM ] 6a1d9f0033bb887ceeaa1029fd8801.exfil-c2.attacker score= 37 ttp=['T1071.004']
[HIGH ] 6a1d9f0033bb887ceeaa1029fd8801.exfil-c2.attacker score= 62 ttp=['T1071.004','T1048.003']
```
这是真实的输出,基于真实的数学运算,针对模拟的数据外泄通道——**零特征,零 YARA 规则,零威胁情报源。** 仅使用 Shannon 熵、自适应基线学习和频率分析,随着模式的显现实时提升严重级别。
这个代码库是背后输出结果的完整大师课——你将自己亲手构建每一个模块,逐模块地理解每一行代码背后的*原因*。
## 🧠 为什么会有这个项目
基于特征的工具(Suricata 规则集、YARA、静态 IOC 源)非常擅长捕获以前被捕获过的内容。但在结构上,它们对以下情况视而不见:
- 使用前所未见域名的新型 C2 框架
- 域名轮换速度比威胁情报更新还快的 DNS 隧道工具
- 专门设计用于击败固定间隔检测的 Beacon jitter
- 通过目前还没人为其编写规则的协议进行的“靠山吃山”(Living off the land)式数据外泄
**BeaconSentry 颠覆了这一模式。** 每个模块不再问*“我以前见过这个具体的恶意行为吗?”*,而是问*“这看起来像人类或正常应用会做出的行为吗?”*——使用与威胁猎人手动使用的同类数学方法,实现自动化并实时运行。
## 🗺️ 架构
```
flowchart LR
A[("🌐 Live NIC Traffic")] --> B["BPF Filter\nudp/53, tcp/80"]
B --> C["CaptureThread\nscapy.sniff()"]
C --> D[("Bounded Raw\nPacket Queue\ndrop-oldest")]
D --> E1["ParserWorker #1"]
D --> E2["ParserWorker #2"]
D --> E3["ParserWorker #N"]
E1 & E2 & E3 --> F{{"Event Router"}}
F -->|DNS Query| G["🧮 Shannon Entropy Engine"]
F -->|Connection Timing| H["📈 Jitter & Beaconing Analyzer"]
F -->|Feature Vector| I["🌲 Isolation Forest"]
G --> J["MITRE ATT&CK Mapper"]
H --> J
I --> J
J --> K["🎨 Rich CLI Dashboard"]
J --> L[("alerts.jsonl")]
```
**设计原则:** 捕获线程保持极简(复制字节、打时间戳、入队列——仅此而已)。所有的解析、数学计算和 ML 都在工作线程中发生,因此缓慢的检测器永远不会导致网卡丢包。请参阅 [`core/packet_capture.py`](core/packet_capture.py) 了解完整原理。
## 📊 功能矩阵
| 模块 | 技术 | 检测内容 | MITRE ATT&CK | 状态 |
|---|---|---|---|---|
| **Entropy Engine** | Shannon 熵 + 按域名自适应基线 + 字符类启发式算法 | DNS 隧道、基于 DNS 的数据外泄 | `T1071.004` `T1048.003` `T1568.002` | ✅ **阶段 1 — 本代码库** |
| **Packet Capture Core** | 多线程 `scapy` 嗅探 + BPF 过滤器 + 异步桥接 | 为上述每个模块提供实时 DNS/HTTP 解析基础 | — | ✅ **阶段 1 — 本代码库** |
| **Jitter & Beaconing Analyzer** | 间隔方差、自相关、变异系数评分 | C2 beaconing,*包括*随机化/带 jitter 的睡眠定时器 | `T1071` `T1029` `T1571` | 🔜 阶段 2 |
| **Isolation Forest** | 基于 flow 特征的 `scikit-learn` 无监督异常检测 | 异常出站流量、低速隐蔽的 C2、新型行为 | `T1071` `T1567` | 🔜 阶段 3 |
| **Rich CLI Dashboard** | 实时终端 UI:微型图表、告警推送、严重级别颜色标记 | 为上述所有内容提供人工分诊层 | — | 🔜 阶段 4 |
| **MITRE Mapper & Reporter** | TTP 关联 + JSONL/Markdown 事件导出 | 跨模块的攻击场景重建 | — | 🔜 阶段 5 |
## 🎨 未来发展:仪表板(阶段 4 预览)
```
┌─ BeaconSentry // Live Behavioral Threat Detector ──────────────────────────────┐
│ uptime 00:42:17 pkts/s ▂▃▅▇█▆▄▂▁ 1,204/s mode: BEHAVIORAL (no sigs)│
├────────────────────────────────┬─────────────────────────────────────────────┤
│ 🧮 ENTROPY RADAR │ 🚨 LIVE ALERT FEED │
│ │ │
│ attacker-domain.net 4.02 ▇▇│ [CRITICAL] DNS Tunneling src 10.0.0.99 │
│ cdn.jsdelivr.net 2.11 ▂▂│ → exfil-c2.attacker-domain.net │
│ google.com 1.84 ▁▁│ T1071.004 · T1048.003 · score 87/100 │
│ │ │
│ │ [HIGH] Beacon Detected src 10.0.0.44 │
│ │ → 45.33.x.x:443 interval 30s ±2s │
│ │ T1071 · T1571 · jitter-score 0.94 │
├────────────────────────────────┴─────────────────────────────────────────────┤
│ 🌲 ISOLATION FOREST anomaly score ▓▓▓▓▓▓▓░░░ 0.71 flows/min: 3,410 │
└────────────────────────────────────────────────────────────────────────────┘
```
*(概念图——将在阶段 4 使用 `rich` 库构建。给本代码库点个 Star ⭐ / 关注 👁️,以便在发布时收到通知。)*
## 🧩 MITRE ATT&CK 覆盖范围
| TTP | 技术 | 检测者 |
|---|---|---|
| `T1071.004` | 应用层协议:DNS | Entropy Engine |
| `T1048.003` | 通过替代协议外泄(非 C2,DNS) | Entropy Engine(频率 + 熵) |
| `T1568.002` | 动态解析:域名生成算法 | Entropy Engine(基线偏差) |
| `T1071` | 应用层协议(通用 C2) | Beaconing Analyzer *(阶段 2)* |
| `T1029` | 定时传输 | Beaconing Analyzer *(阶段 2)* |
| `T1571` | 非标准端口 | Beaconing Analyzer *(阶段 2)* |
| `T1567` | 通过 Web 服务外泄 | Isolation Forest *(阶段 3)* |
## 🛠️ 亲手构建路线图
每个阶段都是一个独立的大师课:阅读模块,理解数学原理,运行演示,然后进行扩展。
- [x] **阶段 1 — 基础** *(本代码库,现在)*
- [x] `core/entropy_engine.py` — Shannon 熵、自适应基线学习、综合评分
- [x] `core/packet_capture.py` — 多线程捕获核心、BPF 过滤、异步桥接
- [ ] **阶段 2 — 时序 Beaconing 检测**
- [ ] 按源/目标对提取间隔
- [ ] 变异系数 + 自相关,以捕获带 *jitter* 的 beacon
- [ ] **阶段 3 — 无监督异常检测**
- [ ] Flow 特征工程(字节比率、数据包时序、会话持续时间)
- [ ] `IsolationForest` 训练 + 实时评分 pipeline
- [ ] **阶段 4 — Rich 仪表板**
- [ ] 实时微型图表、按严重级别上色的告警推送、键盘驱动分诊
- [ ] **阶段 5 — MITRE 映射与事件导出**
- [ ] 将跨模块的 TTP 关联整合为单一攻击叙事
- [ ] 生成 JSONL + Markdown 事件报告
## 🚀 快速开始
**立即尝试 Entropy Engine——无需 root 权限,无需网络访问:**
```
git clone https://github.com/标签:Apex, DNS安全, Python, 异常检测, 无后门, 机器学习, 网络安全, 逆向工具, 隐私保护