Hackers们经常会使用URL缩写来对恶意链接进行伪装。然而,在本文的情况中,在URL缩写中嵌入了广告,并链接至了恶意站点。这一切都始于Adf.y的间隙广告,间隙广告这种技术是指在用户得到实际网页内容之前,页面上会显示一些广告,广告持续时间仅为几秒钟。
按照这个复杂的恶意广告重定向链,在将有效载荷加至磁盘之前,HanJuan EK将会加载并利用Flash Player和IE浏览器的漏洞。
我们所收集到的有效载荷使用了多个软件层为它的二进制代码以及其与命令控制器和控制服务器通讯的信息进行了加密。这种木马的目的是为了通过网络钓鱼,并扮演网络的中间人来窃取信息,得到密码和其他敏感数据。
技术细节
01 恶意广告链
1、 前四个部分通过一个经过编码的JavaScript脚本简介来加载广告:??
Chrome浏览器的JavaScript控制台可以帮助我们对重定向调用进行快速定位,而不必进行复杂的解码步骤:??
2、开始重定向:??
接下来的三个部分与其余部分有某些区别,这些会话过程之间的联系现在还无法确认。深入研究之后,我们发现目的URL地址是由跨源资源共享(CORS)加载的。
科普:
“跨源资源共享(CORS)是一种机制,它能够允许其他外部域的用户申请访问资源原始域的网页中的受限资源。-维基百科”
上面为通过访问控制许可源请求获得的adk2.com网络广告的内容。??
这便让我们得到了youradexchange.com所带来的恶意广告:??
其中所插入的URL地址实际上是一个真正的Joomal网站,但是这里能看到一个警告:该网站已被攻击!??
利用工具??
在这里所提到的利用工具与我们常见的漏洞利用工具(Angler EK, Fiesta EK, Magnitude EK)有所不同。在经过一番分析和对比之后,我们认为它就是HanJuan EK。
在此之前,我们只对HanJuan EK进行过为数不多的几次讨论,所以很少人真正了解这个工具。我们层在未知利用工具中对其进行了描述,这是一个极其隐蔽的工具。
我们也在一个被入侵的网站上发现了HanJuan EK。
访问页面被分为了两个部分:
1. 执行Flash Player漏洞利用的代码
2. 执行IE浏览器漏洞利用的代码
Flash漏洞利用的文件名都是随机生成的,每次使用的都是与我们之前所观察到的原始HanJuan工作模式相近的方式。
然而,在漏洞利用过程结束之后,代码会插入一个带有Flash版本信息的新GET请求会话。
最终,另一个随机生成的URL地址和带有。dat扩展名的文件名会将有效载荷交付。与之前版本的HanJuan不同的是,它会将一个二进制文件放入磁盘之中。
02 Fiddler流量数据:
接受到的页面数据:??
Flash Player漏洞利用(CVE-2015-0359):
此次漏洞利用使用了VirtualAllocEx 编程接口,执行了一次内存堆栈攻击。
IE浏览器的漏洞利用(CEV-2014-1776):
在这种情况下,我们同样可以通过NtProtectVirtualMemory编程接口来执行内存堆栈攻击,但并不推荐这样做。
反恶意-反间谍软件的用户已经不会受到这两种漏洞的影响了:
关于恶意软件的有效载荷
目前该有效载荷已经被命名为Trojan.Agent.Fobber。这个名字来源于一个名为”Fobber“的文件夹,而该文件夹是用于存储恶意软件以及其他相关文件的。
不同于普通的Windows程序,Fobber的执行过程类似于下图所示:
就在研究中所观察到的情况,Fobber恶意软件的目的是为了窃取用户各种账号的凭证。既然目前还没有确定Fobber与其他已知恶意软件的关系,我们怀疑它可能与其他盗取信息的木马有关系,比如说Carberp或Tinba。
Fobber.exe
Fobber.exe是一个非常复杂的程序,而且其代码是经过混淆的。在在样本中,它一直在尝试打开随机注册表键,然后恶意软件便会执行一长串的跳跃,就好像是为了制造一个”兔子洞”来拖延我们的分析。
在这之后,fobber.exe进程便终止了,恶意软件的执行会在verclsid.exe中继续。
Verclsid.exe(Fobber代码)
这个进程中的Fobber代码的主要目的就是获取Windows Explorer(explorer.exe)的进程ID号(PID),并向这个进程注入一个线程。向Windows Explorer中注入代码是一种常用的信息窃取技术,恶意软件已经使用这种技术很多年了。
在执行一个功能之前,它的代码会受限进行解码,如下图所示(请注意指令”decode_more”):
在调用这个指令之后,所有的命令都很清楚了。
最终,当函数想要返回时,它会调用一个使用了ROP工具的特殊程序。
在上图所示的”return_caller”中,返回指针被重写了,并指向了父函数的返回指针(sub_41B21A)。除此之外,刚才函数中所有运行过的字节都被重新加密了,如下图所示。
这种技术可以让Fobber恶意软件比传统的恶意软件更加地难以进行分析,因为传统的恶意软件可以将整个二进制文件全部拆包。类似的功能同样可以在很多商业保护软件中见到,例如Themida。
为了定位Explorer的PID,恶意软件会搜索Explorer进程所使用的名为”Shell_TrayWnd”的已知进程窗口。
代码使用了RtlAdjustPrivilege来为verclsid.exe进程授权,即SE_DEBUG_PRIVILEGE。这样便会允许 verclsid.exe将代码注入至Windows Explorer进程中,而不会产生任何的错误问题。在这个函数执行完之后,更多的代码会在内存中解码,并会在Explorer进程中创建一个远程的控制 线程。
Explorer.exe(Fobber代码)
在这个情况下,Fobber恶意软件便会开始进行它的主要操作,即永久注入目标主机中,与C&C服务器进行连接,以及进行更多的操作。
03永久注入
Fobber能够通过将其自身(fobber.exe)复制进AppData文件夹中的”Fobber”文件夹中,并使用nemre.exe作为文件名,这样Fobber便可以在目标主机中立足了。在一个普通的计算机中,路径可能会是:
C:\Users\<username>\AppData\Roaming\nemre.exe
每次遇到HanJuan EK时,我都觉得特别有趣,因为它很罕见。
通常情况下,漏洞利用工具只会以软件的某一部分为目标,这样可以获得最高的利用价值:IE浏览器和Flash Player播放器。