| name | analyzing-network-packets-with-scapy |
| description | 使用 Scapy 构造、发送、嗅探和解析网络数据包,用于协议分析(protocol analysis)、网络侦察(network reconnaissance)以及在授权安全测试中进行流量异常检测 |
| domain | cybersecurity |
| subdomain | network-security |
| tags | ["scapy","packet-analysis","network-forensics","protocol-dissection","pcap","traffic-analysis"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
使用 Scapy 分析网络数据包
概述
Scapy 是一个 Python 数据包操作库,可在精细的协议层级构造、发送、嗅探和解析网络数据包。本技能涵盖将 Scapy 用于安全相关任务,包括 TCP/UDP/ICMP 数据包构造、pcap 文件分析、协议字段提取、SYN 扫描实现、DNS 查询分析,以及检测异常流量模式(如异常分片数据包或格式错误的头部)。
前置条件
- Python 3.8+ 并安装
scapy 库(pip install scapy)
- 原始套接字操作(嗅探、发送)需要 root/管理员权限
- Windows 系统需要 Npcap,Linux 系统需要 libpcap 进行数据包捕获
- 获得在目标网络上执行数据包操作的授权
步骤
- 使用
rdpcap() 读取和解析 pcap/pcapng 文件进行离线分析
- 提取协议层(IP、TCP、UDP、DNS、HTTP)及字段值
- 计算流量统计:最活跃主机、协议分布、端口频率
- 通过分析 TCP 标志比例检测 SYN 洪水(SYN flood)模式
- 通过查询长度和熵分析识别 DNS 外泄指标
- 为授权网络测试构造自定义探测数据包
- 将发现导出为结构化 JSON 报告
预期输出
JSON 报告,包含数据包统计、协议分布、最活跃源/目标 IP、检测到的异常(SYN 洪水、DNS 隧道(DNS tunneling)指标、分片攻击),以及按流的摘要。