testardou/PacketFeeder

GitHub: testardou/PacketFeeder

一个基于 PCAP 的流量回放与网络测试平台,为安全研究与 IDS/NDR 验证提供重放、改写与 MITRE 攻击模拟能力。

Stars: 2 | Forks: 0

# Packet Feeder ![Packet Feeder Logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/622ac55dab011910.png) 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, 实时流量, 实验室环境, 快速回放, 攻击模拟, 极速回放, 流量回放, 流量概览, 流量重写, 端口重写, 网络注入, 网络流量测试, 自动化攻击, 逆向工具, 驱动签名利用