导语:最近趋势科技的研究人员发现一个新的专门挖掘加密货币的无文件恶意攻击软件(被趋势科技检测为TROJ64_COINMINER.QO)。
最近趋势科技的研究人员发现一个新的专门挖掘加密货币的无文件恶意攻击软件(被趋势科技检测为TROJ64_COINMINER.QO)。在七月份亚太地区的一些攻击中,研究人员第一次发现这个恶意攻击软件。通过监控数据,研究人员发现显示受此攻击影响最大的国家,感染如下:
2017年7月至8月期间TROJ64_COINMINER.QO感染的分布情况
此攻击使用WMI(Windows Management Instrumentation)作为其无文件持久性机制,具体来说,它使用WMI标准事件消费者脚本应用程序(scrcons.exe)来执行其脚本。要进入系统,恶意软件就必须使用EternalBlue漏洞 – MS17-010。无文件WMI脚本和EternalBlue的组合使得这种攻击非常隐蔽和持久。
攻击过程还原
这个挖掘加密货币的恶意软件的感染流程分几个阶段。攻击过程以MS17-010开始,该漏洞用于删除并运行系统上的后门(BKDR_FORSHARE.A),然后安装各种WMI脚本。这些脚本然后连接到其C&C服务器以获取说明,并将其与其组件一起下载加密货币矿工的恶意软件。
使用WMI进行持久化攻击
WMI是Windows的核心组件,通常用于日常管理任务,例如部署自动化脚本,在给定时间运行流程或程序,获取有关已安装应用程序或硬件的信息,监控一个文件夹和监视磁盘空间等。然而,这些功能很可能会被恶意攻击者利用。早在2010年,趋势科技就发表过一篇“恶意软件利用Windows WMI入侵”的文章,而本次攻击者所使用的技术与2010年那篇文章使用的技术非常相似,研究人员一开始也是将本次的攻击作为TROJ_WMIGHOST.A检测。
当满足某些条件时,以下root/subscription类就会被用于触发恶意WMI脚本:
ActiveScriptEventConsumer __EventFilter __IntervalTimerInstruction __AbsoluteTimerInstruction __FilterToConsumerBinding
可以在root/subscription命名空间下的ActiveScriptEventConsumer类的实例中找到恶意WMI脚本。 ActiveScriptEventConsumer是持久性有效载荷,包含满足条件时要执行的命令。对于此示例,它包含将在满足条件时执行的恶意JScript。
ActiveScriptEventConsumer-class的恶意JScript
从ActiveScriptEventConsumer类中提取JScript会显示以下脚本:
ActiveScriptEventConsumer类中发现的恶意JScript
通过分析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的内容可以看出:
第一阶段C&C服务器的初始内容
最近,该URL已更新,以更改目标URL,尽管下载的文件保持不变。
C&C服务器更新之后的内容
这表明此操作仍然活跃,因为目前,后台开发者仍在监控和更新其C&C服务器。
__EventFilter类保存触发事件的条件。查看__EventFilter类,它包含WQL查询Select * from __timerevent where timerid =“fuckyoumm2_itimer”,可以用此查询查找名为“fuckyoumm2_itimer”的计时器ID。
__EventFilter条件
__IntervalTimerInstruction类公开了两个属性:TimerID和IntervalBetweenEvents。 TimerID包含__EventFilter条件所指向的实例“fuckyoumm2_itimer”的唯一名称,而IntervalBetweenEvents提供恶意WMI脚本的触发时间。 IntervalBetweenEvents属性以毫秒为单位。就拿这个例子来说,它显示间隔为10800000毫秒,或180分钟(3小时)。这意味着恶意WMI脚本将每3小时触发一次。
__IntervalTimerInstruction触发的时间间隔
附加信息也可以在__AbsoluteTimerInstruction下找到,这个类会导致在特定时间的特定日期生成事件。
__AbsoluteTimerInstruction信息
最后,为了使所有的类和实例相互连接,需要到__FilterToConsumerBinding注册。以下信息就是在__FilterToConsumerBinding类下找到的。
ActiveScriptEventConsumer.Name=fuckyoumm2_consumer __EventFilter.Name=”fuckyoumm2_filter”
. Full __FilterToConsumerBinding注册
__FilterToConsumerBinding类将__EventFilter实例与__ActiveScriptEventConsumer实例关联。它通过将类实例相互关联来完成循环。它检查__EventFilter中的Windows事件将与__ActiveScriptEventConsumer中的脚本一起执行。
缓解策略
首先,根据需要限制和禁用WMI。它需要在系统上使用管理员权限,仅授予对需要使用WMI的特定管理员帐户组的访问将有助于降低WMI攻击的风险。
其次,并非所有设备都需要WMI服务。如果设备不需要访问WMI,请禁用它以消除风险。
最后,微软提供了完全禁用WMI服务的快速指南。除此之外, 微软还提供了一个可以跟踪WMI活动的工具。 SMBv1也可以禁用,以降低用户的风险。
这次攻击的切入点是EternalBlue,自从2017年3月以来,相关的补丁就已经出现了。但是,还有很多设备暴露在这个漏洞之下。所以要确保操作系统,软件和其他应用程序都进行及时地更新。
总结
无文件攻击正变得越来越普遍,恶意软件的开发者正在越来越多地直接利用在内存工作的合法运行。就像本文所发现的示例那样,专门挖掘加密货币的组织开始利用 WMI订阅进行恶意目的并将其在无文件的状态下持久化,由于硬盘上没有恶意软件文件,因此更难检测。
在如今越来越复杂的攻击环境中,只搜索硬盘驱动器的恶意文件已经远远达不到安全保护的目的了。寻找内存中的证据也很困难,特别是如果攻击在运行前还有一定的条件。通常情况下,你最终将捕获系统内存,而不会触发恶意活动。然而,有大量的Windows组件库可能会提供调查的线索,例如shimcache,muicache或prefetch。配置Windows事件日志以监控系统活动还可以提供其他有用的信息。
IOC
以下哈希与这次攻击有关:
6315657FD523118F51E294E35158F6BD89D032B26FE7749A4DE985EDC81E5F86(检测为TROJ_CONMINER.CFG)
674F2DF2CDADAB5BE61271550605163A731A2DF8F4C79732481CAD532F00525D(检测为TROJ_COINMINER.AUSWQ)
8c5bb89596cd732af59693b8da021a872fee9b3696927b61d4387b427834c461(检测为TROJ_CONMINER.CFG)
A095F60FF79470C99752B73F8286B78926BC46EB2168B3ECD4783505A204A3B0(检测为BKDR_FORSHARE.A)
E6fc79a24d40aea81afdc7886a05f008385661a518422b22873d34496c3fb36b(检测为BKDR_FORSHARE.B)
F37A0D5F11078EF296A7C032B787F8FA485D73B0115CBD24D62CDF2C1A810625(检测为TROJ64_COINMINER.QO)
以下URL与这次攻击有关:
ftp[.]oo000oo[.]me
wmi[.]mykings[.]top:8888