开源安全运维平台OSSIM疑难解析:提高篇
上QQ阅读APP看书,第一时间看更新

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组合键退出程序。