通过该实验了解使用wireshark进行恶意流量分析的基本流程及操作,同时能够配合互联网上其他公开的工具如在线分析引擎、搜索引擎、安全专家的技术博客等进行全方位的分析。
任务:检查pcap数据包查找出哪台主机感染了什么恶意软件。
首先我们要确定局域网内几台主机
Wireshark加载之后,点击上方菜单统计-》ipv4 statistics-》all address
从结果中可以看到共有5台主机
接下来我们需要找到各个ip的主机名
我们前面的实验中知道可以通过nbns来找到主机名
所以尝试使用nbns过滤
第一条发现172.16.1.201发起了一个广播包,在红框中可以看到是域控,主机名为CARLFORECE
继续看第二条
发现不对劲的地方了吗?
主机名还是CARLFORCE,这是怎么回事呢?
我们仔细看这两条包的区别
172.6.1.201发起的是查询包,172.16.1.4发出的是响应包
我们还是去看看RFC文档:https://tools.ietf.org/html/rfc1002。
仔细看看第一条可以看到目的ip为172.16.1.255,说明这是广播包,用于NBNS广播查找
结合报文格式
与我们第一条数据包有关的部分我已经用红框划重点了。结合数据包的实例
可以知道172.16.1.201是在请求查询netbios名为CARLFORCE的机器
Type为NB,表示类型是通用名称服务资源记录(注意,RFC中的0x0020就是10进制的32)
Class为IN,表示类为Internet,一般都是默认的
然后分析第二条,第二条是对第一条的响应,我们在RFC文档中可以看到有两种响应,一种是主动的
一种是被动的
结合第二条数据
可以判断出这是属于主动响应,既然是主动分析,我们要着重分析ADDR_ENTRY ARRAY
有圈出的话可以知道ADDR_ENTRY记录反映了主机名的所有者信息,所有者的ip在NB_ADDRESS中。结合数据包实例可以知道,172.16.1.4对应的主机名为CARLFORCE
或者我们从下面这两条数据也可以看出来
172.16.1.67在查询CARLFORCE,然后172.16.1.67回应172.16.1.4,告诉172.16.1.4CARLFORCE对应着172.16.1.4
可以说,找到一条不同的name query response就能找到其他ip与name对应的信息
我们继续往下找看看有没有
上图中可以看到172.16.1.4查询NEWARK-1A的信息,然后172.16.1.201回复172.16.1.4,告诉它NEWARK-1A对应着172.16.1.201
所以从nbns协议中我们知道:
NEWARK-1A对应着172.16.1.201
CARLFORCE对应的主机名为172.16.1.4
那么其他主机呢?
现在还剩下
172.16.1.67
172.16.1.89
172.16.1.141
我们知道SMB使用了NetBIOS的应用程序接口 (Application Program Interface,简称API),也是可以探测到主机名的。
所以我们可以使用剩余的ip加之smb进行过滤
我们仔细看看,可以发现凡是目的地址为172.16.1.255,即广播包,在info栏里会直接看到对应的主机名
那么我们是不是可以直接过滤出广播包呢?
使用下图的命令即可过滤
这也是找主机名的一种简便的方法
可是172.16.1.141的主机名呢?
Nbns找不到,smb找不到,我们前面的实验中学过dhcp也可以找主机名我们试试dhcp
没有记录
那试试dns呢?Dns也能得到主机名
可以看到172.16.1.141的主机名为Jersey-Shore-1f
接下来我们需要找到各个ip对应的用户账户名
这里我们使用https://packettotal.com,将数据包上传至此进行分析
分析完毕的界面如图所示,切换到kerberos选项卡,关注client这一栏
找到的信息如下所示
由上整理我们现在得到的信息:
Ip:172.16.1.67
主机名:jersey-shore-1a
用户名:master.shake
Ip:172.16.1.89
主机名:jersey-shore-2d
用户名:frylock
Ip:172.16.1.141
主机名:jersey-shore-1f
用户名:carl.brutananandilews
Ip:172.16.1.201
主机名:newark-1a
用户名:meatwad
接下来我们看看各个主机都发生了什么。
先看看172.16.1.67
首先过滤出来
左上方菜单栏 文件-》导出特定分组
点击保存即可,然后打开
有前几次的分析经验,我们这次也首先来过滤出http.request
我们看到这种数据有没有四层相识的感觉?
我们在“恶意流量分析训练二”中碰到过这种流量,如下所示(在附件中已经给出)
可以看到我们的流量也有连续发起两次相同GET请求的特征,所以我们猜测可能是感染了Emotet
或者我们从给出的告警日志中也可以看出来
再来看看172.16.1.89
在给出的数据包中过滤如下
可以看到只有一条数据,用处不大,没有http,那么我们看看有没有https的流量
上图可以看到目的ip有三个,172.217.6.174是google的,172.217.6.163自然也是google的,我们看看第三个
这个域名没见过,搜索引擎查一下,我们还没输完就已经自动联想出了这可能是恶意软件
直接看搜索结果第一条
网站中可以看到
是恶意word文件,属于某种远控的攻击
这与我们在附件给出的告警日志中是相同的
所以是NonoCore RAT malware
接下来看看172.16.1.141
使用同样的过滤,先看http
再看https
都没有帮助
我们看看其他tcp连接吧,熟悉tcp的三次握手的流程都知道,第一步是发送syn,syn的flag是0x0002,同时因为我们要找的流量其目的地址不应该是同个局域网内的,这又是一个过滤条件,所以结合分析过滤条件为:
ip.addr eq 172.16.1.141 and tcp.flags eq 0x0002 and !(ip.dst eq 172.16.1.0/24)
我们发现2017端口很可疑,这端口很明显不是随机的,我们看看目的ip为174.127.99.158
我们使用这个ip进行过滤
发现只有syn和rst包,却没有正常该有的syn ack,说明这里流量是有问题的,我们用搜索引擎查查这个ip
从结果中可以看出这个ip是上了安全厂商的黑名单了
在此处可以看到分析详情https://www.joesandbox.com/analysis/38705/0/executive,部分截图如下
报告中根据其行为将其判断木马,接下来结合告警日志看看
可以看到是 Tempedreve malware,恶意文件名可能为21Payment Slip.exe
接下来分析172.16.1.201
相比而言https中有onion,我们知道这个洋葱路由有关,此处的流量比较可疑
把这个域名在搜索引擎中查询,可以看到在线沙箱网站分析出这是恶意链接
在附件的告警日志中也可以看出来
所以分析出来为GLobelmposter Ransomware.
现在总结我们的答案:
Ip:172.16.1.67
主机名:jersey-shore-1a
用户名:master.shake
感染了Emoter malware
Ip:172.16.1.89
主机名:jersey-shore-2d
用户名:carl.brutamamamdolews
感染了NonoCore RAT malware
Ip:172.16.1.141
主机名:jersey-shore-1f
用户名:carl.brutananandilews
感染了Tempedreve malware,恶意文件可能是21Payment Slip.exe
Ip:172.16.1.201
主机名:newark-1a
用户名:meatwad
感染了Globelposter malware