Felix-au/Fragmented-Firewall
GitHub: Felix-au/Fragmented-Firewall
一个基于深度学习的有状态入侵防御系统,通过重组TCP分段流量并用PyTorch模型检测隐蔽的网络攻击。
Stars: 17 | Forks: 4
上下文感知 AI 防火墙
一个有状态的、基于深度学习的入侵防御系统 (IPS),旨在检测并终止隐蔽的、分段的网络攻击。
嗅探流量流 → 缓冲数据包序列 → 按序重组 TCP 流 → 通过 PyTorch 预测威胁 → 执行动态规则 —— 全部实时进行。
## 目录
- 🔍 [概述](#overview)
- 🎯 [为什么选择上下文感知 AI 防火墙?](#why-context-aware-ai-firewall)
- ✨ [核心系统功能](#core-system-features)
- 🏗 [架构](#architecture)
- 🔄 [网络处理流程](#network-processing-flow)
- 📊 [模型流水线与数据集](#model-pipeline-and-datasets)
- 🎨 [可视化 UI 指南](#visual-ui-guide)
- 🚀 [快速开始](#quick-start)
- 🐳 [Docker 部署](#docker-deployment)
- 📁 [仓库目录结构](#repository-directory-structure)
- ⚠️ [故障排除与故障保护](#troubleshooting-and-failsafes)
- [作者](#author)
## 🔍 概述
传统的包过滤防火墙独立检查网络数据包,这使其对将 payload 分割为多个看似无害的数据包的现代恶意软件视而不见。只有在重组整个序列后,恶意的漏洞利用才会浮现。
该系统捕获数据包流,按流对其进行缓冲,根据 TCP 序列号对其进行重组(处理乱序、重复、重叠和间隙),提取序列特征,并使用 PyTorch 深度学习网络(LSTM 或 Transformer)在防火墙网关级别动态阻止恶意会话。
## 🎯 为什么选择上下文感知 AI 防火墙?
| 能力 | 传统包过滤器 | 状态检测 (SPI) | 上下文感知 AI 防火墙 |
|---|---|---|---|
| **数据包重组** | 无 —— 独立检查数据包。 | 基础 —— 跟踪连接状态 (SYN/ACK)。 | 深度 —— 按序列顺序重组完整的 payload 字节流。 |
| **乱序处理** | 易受绕过攻击。 | 基础缓冲。 | 完整的滑动窗口重排、重叠解决、间隙空填充。 |
| **检测方法** | 静态端口/IP 规则与基础特征码。 | 端口/IP 规则与协议验证。 | 深度学习序列分析(Shannon 熵、数据包间隔、标头、payload)。 |
| **恶意软件抗规避能力** | 零 —— 对 payload 分段视而不见。 | 低 —— 很容易被缓慢/不规则的数据包间隔绕过。 | 高 —— 分析时间序列(LSTM/Transformer)以阻止分割的 payload。 |
| **执行动作** | 静态丢弃/拒绝。 | 连接终止。 | 动态流终止与 1 小时的临时攻击者 IP 黑名单。 |
## ✨ 核心系统功能
* **TCP 流重组**:一个双向的、有状态的管理器,通过 5 元组键 `(IPs, Ports, Protocol)` 对数据包进行分组,按序列顺序重组分段流,同时处理重叠偏移、重复和缺失的片段。
* **双模捕获引擎**:支持使用 Scapy 进行实时网络接口捕获,以及回放分析标准的 Wireshark PCAP 日志。
* **高保真流量模拟器**:生成后台 Web 交互,并支持交互式注入分段的网络攻击(SQL Injection、EICAR 测试文件、Shellcode、反向 Shell)。
* **有状态的深度学习**:使用 PyTorch 双向 LSTM 和 Self-Attention Transformer 模型进行实时评估。
* **动态策略规则**:实现动态 IP 黑名单、白名单和临时规则过期,对被分类为威胁的连接执行自动丢弃。
* **网络安全操作仪表板**:一个受 CrowdStrike 启发的、基于 React、Vite、Framer Motion 和 Recharts 构建的深色主题仪表板。
## 🏗 架构
系统分离为高性能的 **FastAPI 后端**(运行嗅探、重组和 PyTorch 推理流水线)和 **React 仪表板**(可视化数据包流、拓扑图、十六进制转储和规则配置)。
```
graph TD
subgraph UI ["UI Layer (React + Vite)"]
DASH["Dashboard.tsx\nKPIs & Real-time Gauges"]
FLOW["FlowViewer.tsx\nInteractive SVG Topology Map"]
MON["PacketMonitor.tsx\nLive Packet Stream"]
PAY["PayloadViewer.tsx\nHex Dump & ASCII Inspector"]
RULES["RulesManager.tsx\nAccess Control Lists (ACL)"]
TRAIN["TrainingPanel.tsx\nLoss curves & metrics"]
end
subgraph Core ["FastAPI Backend"]
CAP["Capture Engine\npacket_capture.py"]
MGR["Flow Manager\nflow.py"]
BUF["Context Buffer\nbuffer.py"]
RECON["Reconstructor\nreconstructor.py"]
FE["Feature Extractor\nfeature_extractor.py"]
AI["AI Engine (lstm.py / transformer.py)\nActive Inference Classifier"]
DB["Database Client\ndb.py & models.py (SQLite)"]
ENG["Firewall Engine\nengine.py"]
end
CAP -->|Raw Scapy Packets| MGR
MGR -->|Track 5-Tuple| BUF
BUF -->|In-Order Packets| RECON
RECON -->|Reassembled Bytes| ENG
BUF -->|Sequence Features| FE
FE -->|Feature Vector (100, 16)| AI
AI -->|Predict Threat Score| ENG
ENG -->|Insert Blocked Flow / Log Threat| DB
ENG -->|WebSocket Broadcast Alert| UI
UI -->|API Requests| DB
```
ASCII 备用方案(点击展开)
```
+-------------------------------------------------------------------------+
| AI Firewall System |
| |
| +-----------------------+ +--------------------------+ |
| | React Frontend | | FastAPI Backend | |
| | | | | |
| | * Dashboard (KPIs) | API Query | * Scapy Packet Sniffer | |
| | * Packet Monitor |<------------>| * Stateful Flow Manager | |
| | * Flow Topology Map | WebSockets | * Reassembly Engine | |
| | * Payload Hex/ASCII |<-------------| * PyTorch Model (LSTM/ | |
| | * ACL Rule Manager | Real-time | Transformer) | |
| | | Alerts | * SQLite DB (Acls/Logs) | |
| +-----------------------+ +--------------------------+ |
+-------------------------------------------------------------------------+
```
## 🔄 网络处理流程
下图描绘了数据包从物理网络接收、到 AI 分类及动态规则执行的顺序:
```
flowchart TD
subgraph Capture ["1. Packet Capture Stage"]
NIC["Network Interface (NIC)"] -->|Raw Packets| SCAPY["Scapy Sniffer Thread"]
SCAPY -->|Packet Headers & Payloads| FLOW["Stateful Flow Manager"]
end
subgraph Reassembly ["2. Stateful Reassembly Stage"]
FLOW -->|5-Tuple Hash Key| BUF["Sliding Window Context Buffer"]
BUF -->|TCP Sequence Sorting| RECON["Payload Reconstructor"]
RECON -->|Reassembled Byte Stream| ENGINE["AI Firewall Engine"]
end
subgraph Inference ["3. Deep Learning Inference"]
ENGINE -->|Tokenization / Vectorization| PT["PyTorch Inference Module"]
PT -->|LSTM / Transformer Sequence Evaluation| SCORE["Threat Probability Scoring"]
end
subgraph Policy ["4. Action & Enforcement"]
SCORE -->|Score >= Threshold| DROP["Drop & Blacklist"]
SCORE -->|Score < Threshold| PASS["Forward & Log"]
DROP -->|Update Policy Table| RULE["Dynamic Firewall Rules"]
end
```
ASCII 备用方案(点击展开)
```
Raw Packet
│
▼
[Scapy Sniffer] ──────► [Flow Manager] ──────► [Context Buffer]
│ │ (Sliding Window)
▼ ▼
[5-Tuple Hash Lookup] [TCP Sequence Ordering]
│
▼
[Payload Reconstructor]
│
▼
[Feature Extractor]
│ (16-D Features)
▼
[PyTorch Inference] (LSTM/Transformer)
│
▼
[Threat Score Evaluate]
/ \
>= 0.75? < 0.75?
/ \
▼ ▼
[Block Connection] [Forward Flow]
[Log Threat to DB]
[WebSocket Alert]
```
## 📊 模型流水线与数据集
防火墙支持在运行时进行持续训练和动态模型切换:
```
flowchart TD
subgraph DataGen ["Dataset Generation"]
RAW["Exploit Signatures (SQLi, Shellcode, EICAR)"] -->|Chunk Fragmentation| MAL["Synthetic Malicious Packets"]
BEN["Synthetic Benign Traffic Logs"] -->|Regular Transactions| BEN_PKT["Synthetic Benign Packets"]
end
subgraph Training ["PyTorch Pipeline"]
MAL & BEN_PKT -->|Vectorization| LOAD["DataLoader Batching"]
LOAD -->|Forward/Backward Passes| PT_TRAIN["PyTorch Model Training"]
PT_TRAIN -->|Weight Saving| CKPT["Checkpoints File (.pt)"]
end
subgraph Swap ["Active Engine Hot-Swap"]
CKPT -->|Load Checkpoint| SWAP["Model Switcher"]
SWAP -->|Hot Swaps Classifier| INFER["AI Detection Engine"]
end
```
ASCII 备用方案(点击展开)
```
[Exploit Payloads] ──► [Chunk Split] ─────┐
├─► [Feature Extract] ─► [PyTorch Trainer] ─► [best_model.pth] ─► [Hot Swap Engine]
[Benign Payloads] ───► [Normal Session] ──┘
```
## 🎨 可视化 UI 指南
前端提供了一个结构如下的操作员控制台:
| 视图面板 | 交互元素 | 视觉指示器 / 仪表盘 |
|---|---|---|
| **仪表板** | 模拟触发器(`Rev Shell Chunk`、`SQLi Chunk`、`EICAR Test`),活动的 AI 模型切换器。 | 系统在线状态、吞吐量速度、活动流计数、平均威胁评分、AI 置信度仪表。 |
| **数据包监视器** | 搜索栏(按 IP/端口过滤)、协议过滤器(ALL、TCP、UDP)、暂停/恢复控制、数据包检查器。 | 颜色编码的协议标签、TCP 序列标志高亮、可滚动的原始 ASCII payload 预览。 |
| **流查看器** | 交互式拓扑节点、SVG 流线点击触发、手动 `Unblock Flow` 覆盖按钮。 | 代表良性数据包传输的脉动绿点,代表被阻止连接的发光动画红色虚线路径。 |
| **Payload 查看器** | 流列表侧边栏,地址偏移浏览器。 | 十六进制转储布局,带有恶意软件特征码红色闪烁高亮的重构 ASCII 流窗口。 |
| **防火墙规则** | 规则创建表单、备注文本区域、删除规则按钮。 | ACL 类型标签(黑名单/白名单)、过期标签(永久/临时时间戳)、种子保护盾。 |
| **模型训练** | Epoch 滑块、架构选择下拉菜单、`Initiate Model Training` 按钮。 | 收敛损失折线图、评估得分柱状图(Accuracy、Precision、Recall、F1)。 |
| **设置** | 嗅探接口文本输入、模式选择器(模拟/实时)、PCAP 文件拖放区、阈值滑块。 | PCAP 上传状态反馈(完成/失败警报)、超时范围显示。 |
## 🚀 快速开始
### 前置条件
* **Python 3.9+**(在 Python 3.13 上测试)
* **Node.js 18+**
* *用于实时嗅探*:Npcap/WinPcap (Windows) 或 root 权限 (Linux)。
### A. 从源码运行后端
1. 导航到仓库根目录。
2. 安装依赖:
pip install -r backend/requirements.txt
pip install torch --index-url https://download.pytorch.org/whl/cpu
3. 启动 FastAPI 服务器:
$env:PYTHONPATH="."
python backend/main.py
后端服务器绑定到 `http://127.0.0.1:8000`。
### B. 运行前端仪表板
1. 在仓库根目录打开一个单独的终端窗口。
2. 导航到 frontend 文件夹:
cd frontend
npm install
npm run dev
3. 通过浏览器访问 `http://localhost:5173` 处的控制台。
## 🐳 Docker 部署
要使用容器编排启动整个技术栈,请在根目录运行以下命令:
```
docker-compose up --build
```
* **仪表板控制台**: `http://localhost`
* **API 网关**: `http://localhost:8000`
## 📁 仓库目录结构
- [backend/](./backend) — 核心应用程序代码。
- [backend/main.py](./backend/main.py) — 应用程序入口点。
- [backend/config.py](./backend/config.py) — Pydantic 系统设置。
- [backend/capture/](./backend/capture) — 网络捕获循环。
- [packet_capture.py](./backend/capture/packet_capture.py) — 嗅探器和 PCAP 读取器。
- [backend/flow_manager/](./backend/flow_manager) — 流管理状态。
- [flow.py](./backend/flow_manager/flow.py) — 双向流字典。
- [backend/context_buffer/](./backend/context_buffer) — 缓冲区数组。
- [buffer.py](./backend/context_buffer/buffer.py) — 滑动窗口数据包队列。
- [backend/payload_reconstructor/](./backend/payload_reconstructor) — TCP 重组。
- [reconstructor.py](./backend/payload_reconstructor/reconstructor.py) — 序列排序算法。
- [backend/firewall/](./backend/firewall) — 防火墙规则。
- [engine.py](./backend/firewall/engine.py) — 动态策略检查。
- [backend/ai/](./backend/ai) — 机器学习资源。
- [feature_extractor.py](./backend/ai/feature_extractor.py) — 特征归一化。
- [models/](./backend/ai/models) — 模型结构。
- [lstm.py](./backend/ai/models/lstm.py) — 双向 LSTM 网络。
- [transformer.py](./backend/ai/models/transformer.py) — Attention 网络模型。
- [training/](./backend/ai/training) — 模型训练器。
- [trainer.py](./backend/ai/training/trainer.py) — 梯度优化循环。
- [datasets/](./backend/ai/datasets) — 合成数据生成。
- [synthetic_generator.py](./backend/ai/datasets/synthetic_generator.py) — Payload 切分。
- [backend/database/](./backend/database) — 关系型数据库客户端。
- [db.py](./backend/database/db.py) — SQLAlchemy 本地会话。
- [models.py](./backend/database/models.py) — 表定义。
- [backend/api/](./backend/api) — 路由接口。
- [server.py](./backend/api/server.py) — REST 端点与 WebSockets。
- [frontend/](./frontend) — 操作员仪表板。
- [frontend/src/App.tsx](./frontend/src/App.tsx) — 主 React 协调逻辑。
- [frontend/src/pages/](./frontend/src/pages) — 视图仪表板。
- [Dashboard.tsx](./frontend/src/pages/Dashboard.tsx) — KPI 与警报控制台。
- [FlowViewer.tsx](./frontend/src/pages/FlowViewer.tsx) — 拓扑可视化映射。
- [PacketMonitor.tsx](./frontend/src/pages/PacketMonitor.tsx) — 流跟踪表。
- [PayloadViewer.tsx](./frontend/src/pages/PayloadViewer.tsx) — 重构十六进制读取器。
- [RulesManager.tsx](./frontend/src/pages/RulesManager.tsx) — 手动规则 CRUD。
- [TrainingPanel.tsx](./frontend/src/pages/TrainingPanel.tsx) — 收敛仪表板。
- [Settings.tsx](./frontend/src/pages/Settings.tsx) — 参数配置。
## ⚠️ 故障排除与故障保护
### 故障排除指南
| 问题 | 根本原因 | 解决方案 |
|---|---|---|
| **Scapy 实时捕获权限错误** | 捕获引擎在没有管理员权限的情况下以 `live` 模式运行。 | 在 Windows 上,以管理员身份运行 PowerShell。在 Linux 上,使用 `sudo` 运行命令或授予 Python `CAP_NET_RAW` 权限。或者,在设置中将嗅探模式切换为 `simulation`。 |
| **PyTorch 导入失败或崩溃** | 缺少 C++ 可再分发运行时、PyTorch 版本错误,或 CPU/CUDA 依赖项不匹配。 | 安装仅 CPU 版本的 torch:`pip install torch --index-url https://download.pytorch.org/whl/cpu`。验证您的 Python 架构是否为 64 位。 |
| **WebSockets 连接丢失 / SYSTEM: OFFLINE** | FastAPI 后端服务器已崩溃、未运行或被本地防火墙阻止。 | 验证后端是否在 `http://127.0.0.1:8000` 上运行。检查服务器控制台输出的异常情况。验证没有其他应用程序占用 8000 端口。 |
| **数据库种子/写入失败** | `firewall.db` SQLite 数据库被锁定、损坏或权限错误。 | 停止后端服务器,从根目录中删除本地 `firewall.db` 文件,然后重启后端服务器以重新生成全新的 schema 数据库。 |
| **重组十六进制转储为空** | 缓冲区内的数据包包含零字节的 payload(,空的 TCP keep-alive 或握手包)。 | 这对于干净的连接是预期的。执行模拟攻击(如 `SQLi Chunk`)以验证重组和 payload 高亮。 |
### 核心安全故障保护
* **环回保护**:防火墙在启动时为 `127.0.0.1` 植入永久白名单规则,以防止管理员将自己锁定在管理面板之外。
* **间隙阈值上限**:序列重组器将 TCP 间隙空填充限制为 `1024` 字节,以防止恶意序列号技巧触发内存溢出 (Out-Of-Memory) 异常。
* **速率限制的 WebSocket 广播**:对 UI 的帧更新被限制为每秒最多传输 7 次(`0.15s` 延迟),以防止在高网络吞吐量期间发生 UI 线程锁定。
* **早停机制**:模型训练包含验证检查阈值,在 3 个 epoch 性能停滞不前时触发提前停止,以避免过度拟合和过多的资源消耗。
## 作者
**Felix-au** (Harshit Soni)
- 🔗 GitHub: [github.com/Felix-au](https://github.com/Felix-au)
- 📧 电子邮件: [felixaugum@gmail.com](mailto:felixaugum@gmail.com)
专为需要在网关级别进行上下文感知入侵防御的安全运营团队而构建。
标签:AV绕过, DNS 反向解析, FastAPI, PyTorch, React, Syscalls, TCP流重组, 入侵防御系统, 凭据扫描, 威胁猎捕, 深度包检测, 深度学习, 网络安全分析, 网络防火墙, 自动化攻击, 请求拦截, 逆向工具, 配置错误