欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

使用WMI及永恒之蓝进行传播的无文件密币挖矿程序

来源:本站整理 作者:佚名 时间:2017-08-23 TAG: 我要投稿

一、前言
无文件恶意软件是一种比较隐蔽的安全威胁,难以被分析及检测到。时至今日,使用无文件技术的新型恶意软件威胁的数量不断增多,恶意软件作者将这种技术作为对抗检测技术以及取证调查技术的法宝。最近,我们发现了一种新型的加密货币挖矿程序(我们将其标记为TROJ64_COINMINER.QO),这种程序同样使用了无文件技术。
我们最早于7月份在亚太地区看到这种变种。根据主动式云端截毒技术(Smart Protection Network,SPN,趋势采用的一种技术)的反馈信息,受该安全威胁影响的国家及地区分布情况如下图所示:

这款恶意软件使用WMI(Windows Management Instrumentation)来达到无文件持久化目的。具体说来,它使用了WMI标准事件消费者(WMI Standard Event Consumer)脚本化应用(scrcons.exe)来执行恶意脚本。恶意软件使用永恒之蓝漏洞(EternalBlue,即MS17-010)来突破目标系统。正是因为无文件WMI脚本以及永恒之蓝的组合,使得这款恶意软件在隐蔽性及持久化方面做的非常极致。
二、感染过程
这款密币挖矿恶意软件的感染过程可以分为几个阶段。整个感染过程从MS17-010开始,恶意软件利用这个漏洞在目标系统上释放并运行后门程序(BKDR_FORSHARE.A),这个后门程序可以用来安装各种各样的WMI脚本。随后,这些脚本会与C&C服务器通信,来获取指令、下载密币挖矿恶意程序以及相关组件。

三、技术细节
WMI是Windows的一个核心组件,通常用于日常管理任务,比如部署自动化脚本、在指定时间点运行进程或程序、获取已安装的应用或硬件信息、监控目录修改动作、监控硬盘空间等。然而,在网络犯罪分子手中,WMI可以用于恶意用途,正如我们在“理解WMI恶意软件” 一文中分析的那样。本文所讨论的技术与那篇文章的样本所使用的技术非常相似,在那篇文章中,我们将相关样本标记为TROJ_WMIGHOST.A。
当特定条件满足时,如下所示的root/subscription类就会触发恶意WMI脚本的运行:
ActiveScriptEventConsumer
__EventFilter
__IntervalTimerInstruction
__AbsoluteTimerInstruction
__FilterToConsumerBinding
我们可以在ROOT\subscription命名空间中的ActiveScriptEventConsumer类的某个实例中找到恶意WMI脚本。ActiveScriptEventConsumer是一个持久化载荷,包含满足特定条件时需要执行的指令。比如,该载荷中会包含条件满足时所需要待执行的恶意JScript脚本,如下图所示。

我们可以从ActiveScriptEventConsumer类中提取出这个JScript脚本,其内容如下所示:

分析这一段脚本后,我们发现恶意软件作者使用了多个层次的C&C服务器,以便快速更新合适的服务器以及对应的组件。通过这种方式,攻击者就可以修改所下载的恶意文件,规避检测过程。
第一阶段的C&C服务器地址为“hxxp://wmi[.]mykings[.]top:8888/test[.]html”,可以下发指令,给出密币挖矿程序及组件的下载地址。这个服务器还包含第二阶段以及第三阶段的C&C服务器地址。根据我们对这个URL的监控情况,我们发现与该地址有关的操作仍在活跃中。前面我们在感染流程图中提到过,真正的挖矿载荷由TROJ_COINMINER.AUSWQ负责下载。这个载荷最初的地址为“hxxp://67[.]21[.]90[.]226:8888/32.zip”,该地址可从某个URL中获得,如下所示:

最近,这个URL更新过,修改了目标URL地址,但目标文件仍然保持一致。

这表明服务器的操作过程仍处于活跃状态,攻击者仍然尽职尽力地在监控及更新相关的C&C服务器。
__EventFilter类保存了用来触发相关事件所需的特定条件。查看 _EventFilter 代码,我们发现其中包含
1
Select * from __timerevent where timerid = “fuckyoumm2_itimer”
这样一条WQL查询语句。这条查询语句会查找ID名为“fuckyoumm2itimer”的计时器。

_IntervalTimerInstruction类包含两个公开属性:TimerID以及IntervalBetweenEvents。TimerID包含一个唯一的名称,用来表示“fuckyoumm2itimer”实例,这个实例正是 __EventFilter条件指向的那个实例。IntervalBetweenEvents提供了触发恶意WMI脚本的具体时间。IntervalBetweenEvents属性的值以毫秒为单位。对于本文分析的这个样例而言,间隔时间为10800000毫秒,即180分钟(3小时)。这意味着恶意WMI脚本每隔3小时会执行一次。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载