OSSIM下数据包过滤技巧
本文需要OSSIM WebUI操作基础以及Wireshark网络抓包经验。下面讲述的内容需在分布式OSSIM系统中完成。
1、数据包过滤种类
收集到的大量网络数据需要对其进行一定的处理,也就是过滤,这种过滤主要分为以下4种:
l 基于主机(IP)的流量过滤,如果需要监控的信息中包含某个IP,那么就可以采用这种基于主机的过滤方式。
l 基于端口的流量过滤,如果需要的信息中包含特点端口(源端口和目的端口)那么就可以用这种方式。
l 基于协议+端口的流量过滤。
l 基于主机+端口的流量过滤。
大家先了解以下几操作方法:(注意原来在wireshark下的一些过滤规则在此处不可以,下面总结了一些有效方法)
①tcp dst port 22作用:显示目的TCP端口为22的数据包。
②ip src host 192.168.150.10作用:显示来源IP地址为192.168.150.10的数据包。
③host 192.168.150.10作用:显示目的或来源IP地址为192.168.150.10的数据包。
④src port range 3000~5500 显示来源为UDP或TCP,并且端口号在3000至5500范围内的数据包。
⑤not icmp显示除了ICMP以外的所有数据包(ICMP通常被Ping工具使用)。
⑥src host 10.7.2.12 and not dst net 10.200.0.0/16 。显示源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的数据包。
用Wireshark打开一些Pcap数据包后,每条消息的所有field 会被解析出来并会按照协议层次折叠起来。第一层显示的是Frame XXX,这一级别没有对应某层具体的协议,而是对本条消息的一个概括性总结,描述了一些有用的概括性信息,比如从里面我们可以看到本条消息各种协议的层次关系,展开其它协议层之后对应的是该协议的各个域,如果需要使用过滤时可以使用以上介绍的几种方法,程序截获数据包分析如图1所示。如果点击Graphs按钮可以获取到更多有关协议和流量的信息。
图1 分析数据包
· 注意:如果OSSIM系统的Sensor出现问题那么这一功能将无法使用,下面看个例子,如果Sensor和Server通讯故障将影响到Ntop、Openvas以及抓包功能的使用。
图2 Sensor失效
这时在操作界面的左边方框中没有找到可用Sensor,这时抓包功能无法使用。
2、 Wireshark过滤匹配表达式实例
2.1 过滤基础
首先说几个最常用的关键字,“eq”和“= =”等同,可以使用“and”表示并且,“or”表示或者。“!" 和 "not”则表示取反。对IP地址的过滤其中有几种情况:
(1)对源地址为192.168.11.121的包的过滤,即抓取源地址满足要求的包。
表达式为:ip.src = = 192.168.11.121
照此方法我们可以填写到过滤的表单中然后点击“Apply”按钮即可过滤出结果。
如果输入地址没有找到则显示”no data with this filter”:
(2)对目的地址为192.168.0.1的包的过滤,即抓取目的地址满足要求的包。
表达式为:ip.dst = = 192.168.0.1
(3)抓取满足源或者目的地址的IP地址是192.168.0.1的封包。
表达式为: ip.src = = 192.168.0.1 or ip.dst = = 192.168.0.1
2.2 协议过滤
(1)仅仅需要捕获某种协议的数据包,表达式很简单仅仅需要把协议的名字输入即可。
表达式为:http
那么在进行数据包过滤是在Filter:中输入http即可。如图3所示。
图3 过滤Http协议
(2)排除某种协议的数据包
表达式为:!tcp
排除IP协议:
2.3 对端口的过滤
(1)捕获某一端口的数据包。
表达式为:tcp.port == 80
图4 端口过滤
(2)捕获多端口的数据包,可以使用and来连接,下面是捕获高位端口(大于1024)的表达式。
表达式为:udp.port>= 2048
2.4对包长度的过滤
一组数据包查看它们的大小,会发现很多问题,在正常情况下,一个以太网的最大帧长为1518字节,去除以太网、IP以及TCP头,还剩1460字节可供应用层协议的头或者数据使用。那么我们根据这个原则就能通过捕获数据包分析长度了解其分布然后对故障进行合理的分析和猜测。不过在OSSIM系统中这一功能交给Ntop来完成,下面我们看看如何通过一些表达式多包进行过滤。
(1)针对长度的过虑(这里的长度指定的是数据段的长度)。
表达式为:udp.length< 86
图5 长度过滤
我们知道以太网头是14字节(包括了4字节的CRC校验),IP头最小20字节,没有数据以及选项的TCP数据包也是20字节,这也就是说TCP用于控制的数据包,例如ACK、RST以及FIN的大小大约是54字节。查看那些长度小于64字节的数据包。
过滤器表达式如下:
frame.len<=64
图6 长度过滤
同样方法可以使用如下表达式:
frame.number<=10 代表过滤出帧数小于10的所有包
fram.number= =10 代表过滤出帧数为10的包
通过以上的最基本的功能的学习,如果随意发挥,可以灵活应用,就基本上算是入门了。我们还可以根据IP地址+端口进行过滤,比如在Filter:后面输入:“ip.addr==192.168.11.1&& udp.port==53”效果如图7所示。
图7 根据IP+端口过滤
将以上方法经过组合应用就可发挥出强大的过滤效果。Wireshark除了GUI工具外还有对应的命令行工具─tshark。在远程环境下相当实用。下面就简单的说说常用的一些功能。tshark平常远程登录时抓包很好用,而且可以直接解析,但总是不很记得如何打印出原本16进制的数据。抓包命令如下:
#tshark - w test.pcap -i eth0 - q
l -w 将抓包的数据写入文件filename中。
l -i指定要抓包的接口名称。
l -q 安静,在远程时最有用,否则会抓到SSH的报文。
l -r 指定要读取的包文件。
l -x 将16进制原始包数据打印出来。
l -V 将包尽可能的解析(这个有时在包数量很多的情况下可以不使用,这样它会给出一个很简洁的报文解释)。
图8 tshark抓包
2.5 操作举例:
以每秒间隔,统计 IP 地址 192.168.120.78 的封包、字节数量。输入以下命令。
tshark -z io,stat,1,ip.addr==192.168.120.78
图9 tshark抓包
实际上通过对网络数据包的分析可以找到不少网络***时的奥秘,因为素有的网络***行为一定是通过数据包传送,而每种不同的***方式在网络上都会产生某种行为特征,比如说,当Syn Flooding***时,网络上立刻会产生大量带有SYN标志位的数据包,通过抓包就能发现,再如Code red蠕虫在感染IIS 时,在网上也会出现发送给Web服务器80端口的数据包,而且其中包含“GET /’.*‘.ida?’*‘XX’*‘%u’{4}‘%u780’*‘=’.{7}‘HTTP /1.0\r\n’”特征的字符串特征信息。最为网络安全人员,我们要善于利用Web界面的Wireshark来分析网络的***行为,有的***产生小包(< 64 Bytes),而有的***则会产生巨人帧,我们通过不断总结***行为将行为特征记录到数据库,这样就能不断沉淀不断积累而形成一个大的适合企业自身的病毒查询知识库。
3. 远程故障处理应用案例
对于本地机房维护时如遇到网络病毒爆发或者通讯故障,管理员会通过上面抓包方式来分析故障,但如果是异地机房除了同样的问题,你需要在远程深度分析网络数据包的情况,该怎么办?你可能需要临时联系对方运维人员开始配置端口镜像,并部署抓包设备,而这种低效的响应方式往往耽误了分析故障的最佳时机。
下面我们看看通过分布式OSSIM部署的解决方法,公司总部C部署了一台高性能OSSIM服务器,在异地分公司A机房和B机房部署了Sensor,它们通过×××和Ossim Server连接。异地机房的Sensor分别连入交换机的SPAN口,当工作需要时,能够实时抓取网络数据。
图10 OSSIM Server/Sensor部署示意
当A机房内服务器出现故障,需要总部运维人员支持时,他们可以连接到OSSIM的Web UI界面, 通过Traffic capture并选择对应的Sensor,然后开始抓包,并进行后续分析,这样部署大大提高了远程机房之间数据包分析的效率,上面第一节和第二节介绍的过滤数据包的技巧就在此时发挥作用。