2.7 流量分析
在应急响应的过程中,有时需要用到流量分析,使用一般工具(如PCHunter、Process Monitor等)或相关命令(如netstat等)可以查看相关的地址连接情况,但是内部流量的具体情况却无法查看。当要求看到内部流量的具体情况时,就需要我们对网络通信进行抓包,并对数据包进行过滤分析,最常用的工具是Wireshark。
Wireshark是一个网络封包分析软件。网络封包分析软件的功能是获取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPcap作为接口,直接与网卡进行数据报文交换。
在打开Wireshark后,需要对要获取流量的网卡进行选择。在选好网卡后,就可以获取相关的数据流量包了,Wireshark界面如图2.7.1所示。
在应急响应中,对于监听获取后的流量,还需要进行提取过滤。Wireshark的筛选器可以很好地完成这个功能。Wireshark的筛选器可以找出所希望进行分析的数据包。简单来说,筛选器就是定义了一定条件,用来包含或者排除数据包的表达式,从而达到筛选出自己想要的数据包的目的。筛选器也支持与(and)、或(or)、非(not)等逻辑运算符,可以提高筛选效率。
常用的过滤器命令如下。
图2.7.1 Wireshark界面
(1)使用【ip.addr ==ip】命令,可对特定IP地址进行过滤。对192.168.198.225 IP地址进行过滤,如图2.7.2所示。
图2.7.2 对192.168.198.225 IP地址进行过滤
(2)使用【ip.src==ip】命令,可对指定的源IP地址进行过滤。对源IP 地址192.168.198.225进行过滤,如图2.7.3所示。
图2.7.3 对源IP地址192.168.198.225进行过滤
(3)直接输入HTTP、HTTPS、SMTP、ARP等协议进行筛选,如图2.7.4所示。
图2.7.4 过滤特定协议流量
(4)使用【top.port==端口号】或【udp.port==端口号】命令,可对端口进行过滤。使用【tcp.port==445】命令对445端口进行过滤,如图2.7.5所示。
图2.7.5 对445端口进行过滤
(5)使用【tcp contains strings】命令,可对数据包中的关键字进行检索,对流量中包含某一关键字的数据包进行筛选。使用【tcp contains baidu】命令筛选baidu关键字,如图2.7.6所示。
图2.7.6 筛选baidu关键字
下面以MS17-010的流量分析为例,具体介绍相关用法。MS17-010是“永恒之蓝”漏洞,自2017年被曝光后,WannaCry勒索病毒利用此漏洞迅速感染蔓延,引发标志性的安全事件。之后各种恶意软件(无论是勒索病毒,还是挖矿木马),在攻击载荷中都会加入“永恒之蓝”漏洞的攻击方法。
打开一个获取到的MS17-010的流量包,发现其中有SMB协议流量,如图2.7.7所示。因为MS17-010漏洞是通过SMB协议进行攻击的,所以下一步可对SMB协议端口进行筛选。
输入【smb】命令,筛选SMB协议流量,如图2.7.8所示。
攻击载荷一般会发送NT Trans Request载荷,里面有大量的NOP指令,如图2.7.9所示。
图2.7.7 SMB协议流量
图2.7.8 SMB协议流量
图2.7.9 NT Trans Request载荷
在发送NT Trans Request载荷后,会发送Trans2 Secondary Request载荷,相关的Trans2 Secondary Request载荷会分几个数据包发送加密的攻击载荷,如图2.7.10所示。
图2.7.10 Trans2 Secondary Request载荷
在攻击载荷发送完后,如果发现数据包中存在Multiplex ID:82数据包,说明漏洞攻击成功,如图2.7.11所示。
图2.7.11 存在Multiplex ID:82数据包