- A+
在过去一年,我们对Havex恶意程序家族及其背后的组织保持了高度的关注。Havex被认为以不同工业领域为目标进行攻击的恶意软件,并且在最初的报告中,该恶意软件对能源行业尤为感兴趣。
Havex的主要构成为通用的远程木马(Remote Access Trojan,RAT)和用PHP编写的服务器程序。可以在服务器的代码中看到“Havex”这个名字。
在2014年的春天,我们发现Havex开始对工业控制系统(IndustrialControl Systems, ICS)有特殊的兴趣,该恶意软件背后的组织使用了一个创新型木马来接近目标。攻击者首先把ICS/SCADA制造商的网站上用来供用户下载的相关软件感染木马病毒,当用户下载这些软件并安装时实现对目标用户的感染。
我们收集并分析了Havex的88个变种,主要分析了它们的访问目标、从哪收集数据、网络和机器。这一分析发现Havex通信用的C&C服务器多达146个,并且有1500多个IP地址向C&C服务器通信,从而识别最终的受害者。
攻击者利用被攻陷的网站、博客作为C&C服务器,如下为用于C&C服务器的一些实例。
我们还发现了一个额外的功能组件,攻击者利用此组件从应用于ICS/SCADA系统中的机器上盗取数据。这意味着攻击者不仅仅对目标公司的网络感兴趣,还有对这些公司的ICS/SCADA系统进行控制的动机。我们目前对这一动机的缘由还不太清楚。
以包含木马病毒的软件安装包作为感染媒介
Havex RAT以如下途径进行传播,
(1)垃圾邮件 (2)漏洞利用工具 (3)在被入侵的厂商的主站上,使其为用户提供的软件安装包包含该木马
利用垃圾邮件和漏洞工具是相当简单的传播机制,我们对此不进行深入分析。更值得关注的第三中方式,它可以被看做是水坑式攻击(Water-hole attack),因为攻击者选择ICS的供应商作为中间目标,来实现其对最终目标的攻击。
攻击者利用网站的漏洞,入侵了网站,并将正常的供用户下载的安装软件替换为包含木马的安装软件。
我们的研究者发现有三个厂商的主站被这种方式被攻入,在网站上提供的软件安装包中包含了HavexRAT。我们怀疑还会有更多类似的情况,但是尚未确定。
根据他们网站的内容,这三家公司都是开发面向工业的设备和软件,这些公司的总部位于德国、瑞士和比利时。其中两个供应商为ICS系统提供远程管理软件,第三个供应商为开发高精密工业摄像机及相关软件。
作为一个例子,我们可以看一下包含了木马病毒的安装包安装时的动态分析结果。
正常的安装程序是不会包含这个名为“mbcheck.dll”的文件的。这个文件实际上是Havex的恶意软件,包含木马病毒的安装程序会释放并执行这一文件作为其软件安装过程中的一部分。这样攻击者可以用此后门来访问和控制用户的工作电脑。
目标组织
我们能够找到一些受感染的系统,并根据样本的分析报告,来追踪向Havex RATC&C服务器进行通信的IP地址。
所有受感染的这些实体都是与工业应用或者工业机器有一定的关系,大多数受害者位于欧洲,在本文撰写时,我们发现至少有一家位于加利福尼亚的公司在向C&C服务器发送数据。其中欧洲的基础机构中,有两个为法国的众所周知的教育机构,这两个机构是进行技术相关的研究,两个德国的工业应用程序和机器制造商,一个法国的工业机器生产生还有一个是专门从事结构工程的俄罗斯建筑公司。
ICS/SCADA 嗅探
对于Havex样例代码的分析发现,其包含对于ICS/SCADA的嗅探行为。C&C服务器会指示受感染的计算机下载并执行更进一步的组件,其中一个组件很有趣。当分析此组件时,我们发现它会枚举局域网,并寻找连接的资源和服务器。(译注:通过汇编代码可知,该程序调用了Windows的库函数“WNetEnumResource”,关于该函数的信息可以参照:http://msdn.microsoft.com/zh-cn/library/aa918051)
然后我们发现,该程序调用了微软的COM对象接口(CoInitializeEx,CoCreateInstanceEx),来连接特定的服务。
为了确认样例代码对哪个服务感兴趣,我们特意的检索了GUID值,通过对于GUID值的检索可以知道哪种类型的接口被调用了。通过Google可知如下:
-
9DD0B56C-AD9E-43EE-8305-487F3188BF7A = IID_IOPCServerList2
-
13486D51-4821-11D2-A494-3CB306C10000 = CLSID_OPCServerList
译注(上述两个接口应该是OPC标准基金会定义的OPCEnum.exe来实现的,这段代码的目的应该就是访问局域网中运行的OPCEnum.exe程序,通过调用IID_OPCServerList2接口来获取机器上运行的OPCServer程序。各大工控厂商都开发了自己的OPCServer服务程序,但是大家都遵守了统一的OPC标准,从面向对象的角度来说,就是所有的OPCServer都派生自OPC标准基金会定义的接口。OPCEnum.exe主要是负责枚举OPCServer列表用的,例如一台机器上安装三个自动化厂商的OPCServer,别人想访问OPCServer时,可以先通过调用OPCEnum来获取这台机器上安装了哪些OPCServer,然后再与OPCServer进行交互。通过本文来看,似乎Havex程序仅仅是获取了OPCServer的基本信息,没有进一步与OPCServer打交道,但通过另外一篇分析文章来看,Havex还是与OPCServer进行了打交道,获取到了OPCServer内部更为详细的情报。)
注意到“OPCServer”这个名字,还有更多的指示指向了这个单词,在可执行文件中的资源处找到了更多的OPC字符串关键字。
事实上,OPC指的是OLE for ProcessControl,它是一种标准,实现Windows应用程序与过程控制硬件进行交互。通过OPC,恶意软件可以获取设备更为详细的信息,然后将他们发送给C&C服务器,供攻击者分析。看起来这一组件仅仅是作为攻击者收集情报的工具,到目前为止我们还没有发现试图控制连接在控制系统中的硬件的PayLoad。
深度解读
Havex主要有两大组件构成,下载器和OPC情报收集模块。有关下载器的分析文章可以参见此文:http://blog.fortinet.com/Evolving-History-of-Havex-Module-Downloader/
在测试环境中,首先在局域网的其他机器上安装两个OPCServer,如下图所示,恶意软件成功的获取到了这两个OPCServer的情报(译注:根据图可知,安装OPCServer的PC名称为R3P-PC,安装的OPCServer是ICONICS公司的OPCServer AD和AE)
收集到情报以bzip格式压缩,然后利用RSAEuro进行加密,最后保存为.yls文件,放置于机器的临时文件夹下。
在我们目前的测试环境中,这一.yls文件并没有发送回攻击者那里。(译注:从后面生成的txt文件来看,这些文件肯定传回过C&C服务器)
另外两个文件被创建出来分别是OPCServer1.txt和OPCServer2.txt,每个文件记录了一个OPCServer的具体情报。
(译注:如下图,文件中记录了OPCServer中的较为详细的信息,包括OPCServer中的组情况,Tag名称、类型等。其实搞工业控制的人,看到这些情报,通过Tag数量就能大概的推断出工厂的规模,另外就是某些个Tag可能会很敏感,对这一数据值进行强行修改的话可能会产生对控制系统运行非常严重的后果。另外就是某些厂商的OPCServer中可能存在漏洞,通过ICS-CERT的官方公告就能知道,利用这些已知的、未知的漏洞可以进一步侵入OPCServer,这样离控制系统的核心部分就会越来越近。)
小结
Havex背后的攻击者采用了一个巧妙的方法来进行工业间谍活动,通过对ICS/SCADA软件安装包中植入木马,是一种访问目标系统很有效的方法,甚至能够入侵到关键技术设施。
(译注:OPC协议主要是流程工业上用的比较多,例如石油石化行业,这也是为什么说Havex是针对能源行业了,用该协议主要是过程数据的存取等,这是过程控制的范畴,Havex主要可能是偷取数据情报为目的。例如,通过OPC层层的入侵,最后可能偷取到过程控制中的控制方案或者说是配方,例如炼油厂中的配方、或者制药厂中的配方等。Stunex主要是针对PLC这种工厂控制,其涉及到的协议可能是Modbus、Profibus等偏向底层,主要实现对于控制系统底层终端的控制。例如阀门的开关、电机的启停、正反转。)
原文地址:
http://www.f-secure.com/weblog/archives/00002718.html
http://blog.fortinet.com/Havex–Meet-OPC-Server/
相关参照文章:
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫