![开源安全运维平台OSSIM疑难解析:提高篇](https://wfqqreader-1252317822.image.myqcloud.com/cover/191/30179191/b_30179191.jpg)
Q003 如何利用Scapy测试Snort规则?
Scapy是一个强大的交互式数据包处理程序,它不但能够构造或者解码网络协议数据包,还能够发送、捕捉、匹配请求和回复包等。Scapy可以处理端口扫描、路由跟踪、探测或网络发现(类似于hping、NMAP、arpspoof、arping、p0f的功能)。
Scapy有大部分网络协议的构造函数。Scapy可以根据函数构造一个或多个数据包。
看这样一个实例。在OSSIM中打开文件/etc/snort/rules/rpc.rules,找到第36行内容,如图1-1所示。
![](https://epubservercos.yuewen.com/05A9CC/16559258804548206/epubprivate/OEBPS/Images/8.jpg?sign=1738924010-WvLPo7ZQXMU6Sz4etIXHz7Jg49TTq4bh-0-f81fabaf9f4904b3b30f40303d7a7089)
图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所示。
![](https://epubservercos.yuewen.com/05A9CC/16559258804548206/epubprivate/OEBPS/Images/9.jpg?sign=1738924010-6qIEd5vwLddkrEk88fDEi4iuAtk2oTQ2-0-4dd5c0e502d0b6a728f6154d1da4f9b7)
图1-2 使用Scapy构造和发送数据包
该实例涉及两个对象:IP对象和UDP对象,其中UDP为IP的载荷。测试完成后按Ctrl+D组合键退出程序。