一、前言
无文件恶意软件是一种比较隐蔽的安全威胁,难以被分析及检测到。时至今日,使用无文件技术的新型恶意软件威胁的数量不断增多,恶意软件作者将这种技术作为对抗检测技术以及取证调查技术的法宝。最近,我们发现了一种新型的加密货币挖矿程序(我们将其标记为TROJ64_COINMINER.QO),这种程序同样使用了无文件技术。
我们最早于7月份在亚太地区看到这种变种。根据主动式云端截毒技术(Smart Protection Network,SPN,趋势采用的一种技术)的反馈信息,受该安全威胁影响的国家及地区分布情况如下图所示:
这款恶意软件使用WMI(Windows Management Instrumentation)来达到无文件持久化目的。具体说来,它使用了WMI标准事件消费者(WMI Standard Event Consumer)脚本化应用()来执行恶意脚本。恶意软件使用永恒之蓝漏洞(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”,该地址可从某个URL中获得,如下所示:
最近,这个URL更新过,修改了目标URL地址,但目标文件仍然保持一致。
这表明服务器的操作过程仍处于活跃状态,攻击者仍然尽职尽力地在监控及更新相关的C&C服务器。
__EventFilter类保存了用来触发相关事件所需的特定条件。查看 _EventFilter 代码,我们发现其中包含
1Select
*
from
__timerevent
where
timerid = “fuckyoumm2_itimer”
这样一条WQL查询语句。这条查询语句会查找ID名为“fuckyoumm2itimer”的计时器。
_IntervalTimerInstruction类包含两个公开属性:TimerID以及IntervalBetweenEvents。TimerID包含一个唯一的名称,用来表示“fuckyoumm2itimer”实例,这个实例正是 __EventFilter条件指向的那个实例。IntervalBetweenEvents提供了触发恶意WMI脚本的具体时间。IntervalBetweenEvents属性的值以毫秒为单位。对于本文分析的这个样例而言,间隔时间为10800000毫秒,即180分钟(3小时)。这意味着恶意WMI脚本每隔3小时会执行一次。
我们还可以在__AbsoluteTimerInstruction中找到其他一些信息。这个类可以在特定的日期、特定的时间生成某个事件。
最后,为了使所有的类以及实例各自能够建立联系,攻击者需要注册__FilterToConsumerBinding。我们可以在 __FilterToConsumerBinding类中找到如下信息:
Ac __Even”fuckyoumm2_filter”
__FilterToConsumerBinding类将 __EventFilter实例与 __ActiveScriptEventConsumer实例联系在一起。通过将各个类彼此关联起来,攻击者构造了完整的程序执行循环图。 __FilterToConsumerBinding类会检查哪些Windows事件将通过 __EventFilter来执行,也会检查 __ActiveScriptEventConsumer中相应的脚本。
四、经验总结
这次攻击中,IT管理员可以从两方面进行总结,进而提升安全防护能力。
首先,管理员需要根据情况来限制(并且禁用)WMI功能。这一过程需要目标系统上的管理员权限。安全人员只应该将WMI访问权分配给真正需要这一权限的特定的管理员账户组,这样就能降低WMI攻击的风险。
不是所有的主机都需要WMI服务。如果某台主机不需要访问WMI,我们就可以禁用这个功能来消除安全风险。微软提供了一份快速指南,介绍了如何完全禁用WMI服务。此外,微软还提供了一个工具,可以用来跟踪WMI活动轨迹。我们还可以禁用SMBv1来减少用户可能遭受的安全风险。
这个攻击的突破口是永恒之蓝漏洞,这个漏洞的补丁已经于2017年3月发布。然而,还有许多主机暴露在这个漏洞的攻击范围中。请确保操作系统、软件以及其他应用已处于最新版本,从而阻止攻击者将安全漏洞作为目标系统及网络的突破口。
五、总结
无文件攻击已经变得越来越常见。越来越多的攻击者选择使用直接从内存中进行攻击的方法,也会使用合法的工具或服务。在本文分析的案例中,这个密币挖矿恶意软件将WMI订阅功能作为无文件持久化技术加以使用。由于攻击过程中不涉及恶意文件落盘行为,因此更加难以检测。
在现代威胁场景中,单单搜索硬盘中的恶意文件已经远远不能满足需求。在内存中搜索相关证据也是非常困难的一件事,特别是当攻击行为只有满足特定条件才能触发时,证据搜索会变得更加困难。通常情况下,我们可以导出系统的内存数据,却无法触发恶意行为。然而,有大量Windows工具库可以提供这类攻击的线索,这些工具包括shimcache、muicache或者prefetch等。通过配置Windows事件日志,记录系统行为,我们也能得到其他一些有用信息。
六、趋势的解决方案
趋势提供了邮件以及Web网关解决方案,如Trend Micro™ Deep Discovery™ Email Inspector以及InterScan™ Web Security,可以阻止恶意软件影响终端用户。在终端层面上,Trend Micro Smart Protection Suites提供了多种功能,如高保真机器学习、Web信誉服务、行为监控、应用控制以及漏洞屏蔽等功能,可以将此类威胁的影响降到最小值。此外,Trend Micro Endpoint Sensor在监控与WMI有关的事件上也非常有效,这款产品能快速检查哪些进程或事件正在触发恶意行为。
Trend Micro™ Deep Discovery™ Inspector可以检测与恶意C&C服务器有关的网络连接,快速识别网络中受影响的主机,同时Trend Micro™ Deep Security™可以通过IPS技术阻止MS17-010漏洞的利用。
对于小型商业公司而言,Trend Micro Worry-Free Services Advanced通过托管邮件安全特性,提供了基于云端的邮件安全网关服务。它的端点保护功能也可以提供多种安全特性,比如行为监控以及实时Web信誉信息,以检测并阻止勒索软件。
七、攻击特征
与这个攻击有关的哈希值如下所示:
6315657FD523118F51E294E35158F6BD89D032B26FE7749A4DE985EDC81E5F86 (detected as TROJ_CONMINER.CFG)
674F2DF2CDADAB5BE61271550605163A731A2DF8F4C79732481CAD532F00525D (detected as TROJ_COINMINER.AUSWQ)
8c5bb89596cd732af59693b8da021a872fee9b3696927b61d4387b427834c461 (detected as TROJ_CONMINER.CFG)
A095F60FF79470C99752B73F8286B78926BC46EB2168B3ECD4783505A204A3B0 (detected as BKDR_FORSHARE.A)
E6fc79a24d40aea81afdc7886a05f008385661a518422b22873d34496c3fb36b (detected as BKDR_FORSHARE.B)
F37A0D5F11078EF296A7C032B787F8FA485D73B0115CBD24D62CDF2C1A810625 (detected as TROJ64_COINMINER.QO)
与攻击有关的URL地址如下所示:
ftp[.]oo000oo[.]me
wmi[.]mykings[.]top:888