Q003 如何利用Scapy测试Snort规则?
Scapy是一个强大的交互式数据包处理程序,它不但能够构造或者解码网络协议数据包,还能够发送、捕捉、匹配请求和回复包等。Scapy可以处理端口扫描、路由跟踪、探测或网络发现(类似于hping、NMAP、arpspoof、arping、p0f的功能)。
Scapy有大部分网络协议的构造函数。Scapy可以根据函数构造一个或多个数据包。
看这样一个实例。在OSSIM中打开文件/etc/snort/rules/rpc.rules,找到第36行内容,如图1-1所示。
图1-1 Snort规则
下面分析触发规则。sid=1923的规则由3个content选项构成,在图1-1中标记为1、2、3。由于使用了UDP,所以不需要TCP三次握手和四次断开。
·第一个content选项content:“|00 01 86 A0|”;depth:4:offset:12;表示Snort会从数据区载荷前12字节后的4字节中开始匹配content选项内容。
·第二个content选项content:“|00 00 00 05|”;within:4:distance:4;表示Snort会从上一个content选项匹配成功的串尾跳过4字节后开始匹配4字节。
·第三个content选项content“|00 00 00 00|”;depth:4;offset:4;表示Snort会从数据区荷前4字节后的4字节开始匹配content选项内容。
理解了content的含义之后,现在针对UDP进行测试,步骤如下。
步骤1.安装Scapy。
#apt-get update #apt-get install scapy
步骤2.构造和发送数据包。
以IP类对象为例构造一个数据包,定义为UDP类对象。操作过程如图1-2所示。
图1-2 使用Scapy构造和发送数据包
该实例涉及两个对象:IP对象和UDP对象,其中UDP为IP的载荷。测试完成后按Ctrl+D组合键退出程序。