testardou/PacketFeeder
GitHub: testardou/PacketFeeder
一个基于 PCAP 的流量回放与网络测试平台,为安全研究与 IDS/NDR 验证提供重放、改写与 MITRE 攻击模拟能力。
Stars: 2 | Forks: 0
# Packet Feeder

Packet Feeder 是一个基于 PCAP 的流量回放平台,专为安全研究和 IDS/NDR 测试设计。
它结合了命令行界面(CLI)和基于 Web 的图形用户界面(GUI),用于检查、重写和回放网络流量,支持多种回放模式、基于 MITRE ATT&CK 的攻击模拟以及真实的实验室环境。
## 功能
### 1. PCAP 文件管理与检查
- 浏览、上传和删除 PCAP 文件
- 检查数据包元数据和有效载荷相关数据
- 生成并上传带有修改网络字段(IP、MAC、端口、DNS)的重写 PCAP 副本
### 2. PCAP 回放与实时编辑
- 选择、上传和删除 PCAP 文件
- 全局流量概览(IP、TCP/UDP 端口、DNS)
- 实时流量重写(IP、端口、DNS)
- 数据包与有效载荷检查
回放模式:
- **实时**(保留时间戳)
- **加速**(忽略时间戳,实时进度)
- **极速**(全速注入,类似 tcpreplay)
- **逐步**(逐包执行)
### 3. MITRE ATT&CK 攻击模拟
- 与 MITRE ATT&CK 矩阵对齐的基于 PCAP 的技术
- 回放预定义的攻击模式用于安全测试
- 旨在模拟简单且可重复的攻击技术
### 4. 实时网络交互(实验性)
- 多系统之间的真实流量交换
- 面向高级实验室的 IDS/NDR 测试
## 架构概述
Packet Feeder 采用模块化客户端-服务器架构,旨在支持交互式和自动化工作流程。
- **前端(GUI)**
基于 React 构建的 Web 界面,提供 PCAP 管理、流量检查、回放控制和实时状态更新。
- **CLI**
用于自动化、脚本编写以及无头模式下的回放和 MITRE 技术执行。
- **后端 API**
基于 Flask 的 Python 后端,提供用于 PCAP 管理和控制操作的 REST 端点。
- **回放引擎**
基于 Scapy 的数据包注入引擎,负责在真实网络接口上回放和重写流量。
- **实时通信**
使用 WebSocket(Socket.IO)通道在后端和 GUI 之间流式传输回放进度、状态和控制事件。
## 安装
Packet Feeder 由 Python 后端和基于 Web 的前端组成。
### 后端与 CLI
```
# 创建虚拟环境
python3 -m venv venv --copies
source venv/bin/activate
# 安装依赖项
pip install -r requirements.txt
# 允许在非 root 状态下进行原始数据包注入
sudo setcap cap_net_raw,cap_net_admin=eip ./venv/bin/python3
```
### 前端
```
npm install
npm run dev
```
## KVM/libvirt + Open vSwitch 实验室(PacketFeeder)
### 目标
该实验室在隔离网络(lab-ovs)上生成/回放流量,并通过专用代理(未安装 IDS 引擎)进行捕获。流量通过 OVS 镜像从 lab-ovs 复制到 ids-ovs(通过直通端口),然后通过 OpenFlow 扇出复制到代理和 ClearNDR,并配置反回写规则以防止流量重新注入实验室。
### 主机组件
- Debian 主机:KVM/libvirt + Open vSwitch。
- 桥接:
- `br0`:**管理/互联网**(家庭 LAN `192.168.1.0/24`,网关 `192.168.1.254`)
- `lab-ovs`:**实验室**网络(攻击流量 `10.10.10.0/24`)
- `wan-ovs`:**外部**网络(模拟攻击者子网 `172.16.10.0/24`)
- `ids-ovs`:**IDS 馈送**网络(镜像实验室流量分发到传感器/引擎)
### 虚拟机与网卡
- **pfSense**
- WAN:`br0`
- LAN:`lab-ovs`(`10.10.10.1/24`)
- OPT1(外部):`wan-ovs`(`172.16.10.1/24`)
- **attacker-ext**(模拟外部攻击者)
- 管理:`br0`
- 外部:`wan-ovs`(**DHCP 保留** `172.16.10.40/24`)
- **attacker**
- 管理:`br0`
- 实验室:`lab-ovs`(**DHCP 保留** `10.10.10.10`)
- **debian-ssh**
- 实验室:`lab-ovs`(**DHCP 保留** `10.10.10.20`)
- **debian-web**
- 实验室:`lab-ovs`(**DHCP 保留** `10.10.10.40`)
- **winsrv**
- 实验室:`lab-ovs`(Windows Server 2025 目标主机 / 域控制器 / **DHCP 保留** `10.10.10.30`)
- **win11**
- 实验室:`lab-ovs`(Windows 11 目标主机 / **DHCP 保留** `10.10.10.50`)
- **broker**
- 管理:`br0`
- 捕获:`ids-ovs`(`tap-brk-ids`,UP + 混杂模式,**无 IP**)— PCAP 捕获接口(通过 `patch-ids2lab` 扇出接收镜像的实验室流量)
- **clearndr**
- 管理:`br0`
- 传感器:`ids-ovs`(`tap-clear-ids`,UP + 混杂模式,**无 IP**)— NDR 引擎(通过扇出接收镜像的实验室流量)
- **snort**
- 管理:`br0`
- 传感器:`ids-ovs`(`tap-snort-ids`,UP + 混杂模式,**无 IP**)— Snort 3 IDS 引擎(通过扇出接收镜像的实验室流量,加载 4875 条规则)
### DNS / 域
- 实验室域:`packetfeeder.lab`
- DNS 由 pfSense(Unbound)提供,并通过 DHCP 租约注册。
- 示例:`attacker.packetfeeder.lab` → `10.10.10.10`,`debian-ssh.packetfeeder.lab` → `10.10.10.20`
### 捕获(lab-ovs → ids-ovs)
- `lab-ovs` 使用 **OVS 镜像** 将实验室流量复制到 IDS 总线:
- 镜像名称:`mir-lab-to-ids`
- `select_all=true`(镜像 `lab-ovs` 上的所有流量)
- 输出端口:指向 `ids-ovs` 的 `lab-ovs` 直通接口(例如 `patch-lab2ids`)
- 复制的流量流经直通对:
- `patch-lab2ids`(在 `lab-ovs` 上)<=> `patch-ids2lab`(在 `ids-ovs` 上)
### 分发(ids-ovs → 传感器)
- `ids-ovs` 使用 OpenFlow 进行 **显式扇出**(不使用泛洪 `FLOOD`):
- `in_port=patch-ids2lab` → `output:tap-bkr-ids,output:tap-clear-ids`
- `in_port=tap-bkr-ids` → `drop`(反注入)
- `in_port=tap-clear-ids` → `drop`(反注入)
- 默认 → `drop`(失败关闭)
### 架构图
```
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ MGMT / HOME LAN (192.168.1.0/24) GW/Internet: 192.168.1.254 │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
===================================================== br0 (MGMT bridge) =========================================================
| | | |
| | | |
┌────────────▼─────────────┐ ┌─────────▼─────────────┐ ┌────────▼────────────────┐ ┌────────▼─────────────────┐
│ pfSense VM │ │ attacker VM │ │ broker VM │ │ attacker-ext VM │
│--------------------------│ │-----------------------│ │-------------------------│ │--------------------------│
│ WAN NIC (br0) : DHCP │ │ MGMT NIC (br0) : DHCP │ │ MGMT NIC (br0) : DHCP │ │ MGMT NIC (br0) : DHCP │
└──────────────────────────┘ └───────────────────────┘ └─────────────────────────┘ └──────────────────────────┘
==================================================== wan-ovs (EXTERNAL bridge) ====================================================
| |
| |
┌────────────▼─────────────┐ ┌─────────▼────────────────┐
│ pfSense VM │ │ attacker-ext VM │
│--------------------------│ │--------------------------│
│ OPT1 (wan-ovs): │ │ EXTERNAL (wan-ovs): │
│ 172.16.10.1/24 │ │ 172.16.10.40/24 │
└──────────────────────────┘ └──────────────────────────┘
======================================================================= lab-ovs (LAB bridge) ==================================================================
| | | | | |
| | | | | |
┌────────────▼─────────────┐ ┌─────────▼─────────────┐ ┌────────▼────────────────┐ ┌────────▼────────────────┐ ┌────────▼───────────┐ ┌────────▼───────────┐
│ pfSense VM │ │ attacker VM │ │ debian-ssh VM │ │ debian-web VM │ │ winsrv VM (DC) │ │ win 11 VM │
│--------------------------│ │-----------------------│ │-------------------------│ │-------------------------│ │--------------------│ │--------------------│
│ LAN NIC (lab-ovs): │ │ LAB NIC (lab-ovs): │ │ LAB NIC (lab-ovs): │ │ LAB NIC (lab-ovs): │ │ LAB NIC (lab-ovs): │ │ LAB NIC (lab-ovs): │
│ 10.10.10.1/24 │ │ 10.10.10.10/24 │ │ 10.10.10.20/24 │ │ 10.10.10.40/24 │ │ 10.10.10.30/24 │ │ 10.10.10.50/24 │
└──────────────────────────┘ └───────────────────────┘ └─────────────────────────┘ └─────────────────────────┘ └────────────────────┘ └────────────────────┘
==================================================== ids-ovs (IDS FEED BUS) ========================================================
| | |
| | |
┌────────────▼─────────────┐ ┌────────────▼────────────┐ ┌────────────▼─────────────┐
│ broker VM │ │ ClearNDR VM │ │ Snort │
│--------------------------│ │-------------------------│ │--------------------------│
│ SENSOR NIC (ids-ovs): │ │ SENSOR NIC (ids-ovs): │ │ SENSOR NIC (ids-ovs): │
│ tap-bkr-ids │ │ tap-clear-ids │ │ tap-snort-ids │
│ NO IP / promisc / PCAP │ │ NO IP / promisc │ │ NO IP / promisc │
└──────────────────────────┘ └─────────────────────────┘ └──────────────────────────┘
```
## 路线图
### 实验室
- [x] KVM/libvirt + Open vSwitch 主机(桥接:`lab-ovs`、`ids-ovs`)
- [x] pfSense 路由/NAT 在 `lab-ovs`(`10.10.10.1/24`)
- [x] pfSense 上的 DHCP/DNS(`packetfeeder.lab`)保留
- [x] 代理 VM 启动
- [x] 在 `lab-ovs` 上选择性的 OVS 镜像(攻击者/受害者 → 代理 CAPTURE)
- [x] 添加更多受害者/工作负载并扩展镜像选择
- [x] IDS 引擎部署在 `ids-ovs` 上
- [x] ClearNDR
- [x] Snort
- [ ] Zeek
### PCAP 文件管理
- [x] PCAP 上传、列出和删除
- [x] PCAP 检查和元数据提取
- [x] 生成重写后的 PCAP 副本
- [x] 流量字段重写(IP、MAC、端口、DNS)
### 回放引擎
- [x] 通过真实网络接口的 PCAP 回放
- [x] 多种回放模式:
- [x] 实时(保留时间戳)
- [x] 加速回放(带进度)
- [x] 全速注入
- [x] 逐步执行
- [x] 回放进度跟踪与状态报告
### MITRE ATT&CK 模式
- [x] 基于 PCAP 的技术定义
- [x] 前端 MITRE 模式
- [ ] 与 MITRE ATT&CK 对齐的攻击技术
- [ ] 侦察(TA0043)
- [x] T1595 — 主动扫描(父级:外部 IP 块扫描)
- [ ] T1595.002 — 主动扫描:漏洞扫描
- [ ] T1595.003 — 主动扫描:字典扫描
- [x] 发现(TA0007)
- [x] T1018 — 远程系统发现
- [x] T1046 — 网络服务发现
- [x] T1069.002 — 权限组发现:域组
- [x] T1083 — 文件与目录发现
- [x] T1087.002 — 账户发现:域账户
- [x] T1135 — 网络共享发现
- [x] T1201 — 密码策略发现
- [ ] 凭证访问(TA0006)
- [x] T1003 — OS 凭证转储
- [ ] T1003.001 — OS 凭证转储:LSASS 内存
- [x] T1003.003 — OS 凭证转储:NTDS
- [x] T1110.001 — 暴力破解:密码猜测
- [x] T1110.003 — 暴力破解:密码喷洒
- [x] T1110.004 — 暴力破解:凭证填充
- [ ] T1187 — 强制认证
- [ ] T1557.001 — 中间人攻击:LLMNR/NBT-NS 欺骗
- [ ] T1557.002 — 中间人攻击:ARP 缓存中毒
- [x] T1558.003 — 窃取或伪造 Kerberos 票据:Kerberoasting
- [x] T1558.004 — 窃取或伪造 Kerberos 票据:AS-REP Roasting
- [ ] 防御规避(TA0005)
- [x] T1550.002 — 使用替代认证材料:传递哈希
- [x] T1550.003 — 使用替代认证材料:传递票据
- [x] 横向移动(TA0008)
- [x] T1021.001 — 远程服务:远程桌面协议
- [x] T1021.002 — 远程服务:SMB/Windows 管理共享
- [x] T1021.004 — 远程服务:SSH
- [x] T1021.006 — 远程服务:Windows 远程管理
- [x] T1210 — 远程服务利用
- [x] T1021.003 — 远程服务:分布式组件对象模型
- [ ] 收集(TA0009)
- [ ] T1039 — 网络共享驱动器中的数据
- [ ] T1083 — 文件与目录发现
- [ ] 执行(TA0002)
- [ ] T1053.005 — 计划任务/作业:计划任务
- [ ] 持久化(TA0003)
- [x] T1505.003 — 服务器软件组件:Web Shell
- [ ] T1136.002 — 创建账户:域账户
- [ ] T1098.001 — 账户操纵:附加云凭证
- [ ] 泄密(TA0010)
- [ ] T1048.001 — 泄密通过替代协议:DNS
- [ ] T1048.003 — 泄密通过替代协议:HTTP
- [ ] 命令与控制(TA0011)
- [ ] T1071.001 — 应用层协议:Web 协议
- [ ] T1071.004 — 应用层协议:DNS
- [ ] T1090.001 — 代理:内部代理
- [ ] T1095 — 非应用层协议
- [ ] T1102 — Web 服务
- [ ] T1568.002 — 动态解析:域名生成算法
- [ ] T1572 — 协议隧道
### 攻击构建器
- [x] 从事件 PCAP 构建攻击场景
- [x] 重新排序/复制/删除步骤
- [x] 基本节奏(步骤间延迟)
- [x] 构建单个 PCAP(合并时间线)
- [ ] 导出场景配置
- [x] 简易构建 UI(时间线/拖放)
### 实时网络交互
- [ ] 多系统之间的真实流量交换
- [ ] 混合回放与实时流量执行
- [ ] 面向高级实验室的 IDS/NDR 工作流程
标签:Cloudflare, DNS重写, Flask, IDS验证, IP重写, MAC重写, MITRE ATT&CK, NDR验证, PCAP, PCAP管理, React, Scapy, SEO, Syscalls, Web GUI, 全栈, 关键词, 分步回放, 前后端分离, 包检查, 命令行CLI, 实时流量, 实验室环境, 快速回放, 攻击模拟, 极速回放, 流量回放, 流量概览, 流量重写, 端口重写, 网络注入, 网络流量测试, 自动化攻击, 逆向工具, 驱动签名利用