前言
在众多的威胁行动者的活动中,共享工具和方法是一种很常见的做法,其中一个策略就是臭名昭著的“DLL侧面加载三合一”:一个合法的可执行程序、一个要由其侧面加载的恶意DLL和一个编码的payload,通常从自解压档案中删除。这最初被认为是LuckyMouse的签名,后来我们逐渐观察到其他组织也开始使用类似的“三合一”,例如HoneyMyte。尽管这意味着不可能仅依据这样的办法来对攻击进行属性化,但同时这也告诉我们,对此类“三合一”的有效检测将会揭露出越来越多的恶意活动。
本文中描述的调查从一个这样的文件开始,由于它对该已知感染媒介带来了各种改进,因此引起了我们的注意。
FoundCore加载程序
该恶意软件样本是在针对位于越南的知名组织的攻击中发现的。从高层角度来看,感染链遵循预期的执行流程:
由Microsoft Outlook(FINDER.exe,MD5 9F1D6B2D45F1173215439BCC4B00B6E3)的合法组件加载后,outlib.dll(MD5 F267B1D3B3E16BE366025B11176D2ECB)劫持了程序的预期执行流,以解码和运行放置在二进制文件rdmin src (MD5 DF46DA80909A6A641116CB90FA7B8258)中的shellrd(由rc组成)。 MD5 DF46DA80909A6A641116CB90FA7B8258)。但是,到目前为止我们所看到的此类shellcode并未涉及任何形式的混淆。因此,当我们发现第一条指令时,这对我们来说是一个并不那么让人愉快的惊喜:
经验丰富的逆向工程人员会立即在上面的屏幕截图中识别到反汇编程序与非同步结构。在偏移量7和9处放置的条件跳转似乎落在地址的中间(如标签loc_B + 1所示),这对于性能良好的汇编代码来说是非常不典型的。紧接着,我们注意到存在一条调用指令,该指令的目的地(用红色进行了特别标注)被IDA Pro识别为伪造的,其后的代码没有任何意义。
要解释现在发生的事情,需要退后一步,并且需要一些有关反汇编程序工作原理的北京知识。在处理文件时,面向流的反汇编程序具有过分简化的风险,但它在处理文件时会做出许多假设,其中之一是,当遇到条件跳转时,他们首先会开始分解“ false”分支,然后再返回“ true”分支。通过再次从偏移量7开始,查看与上面显示的代码相对应的操作码,可以更好地证明此过程:
现在更明显的是,有两种方法可以解释上面的代码:反汇编程序可以从“ E8”开始,也可以从“ 81”开始——默认情况下,IDA会选择后者,因为E8实际上是call指令的操作码。但是精明的读者会注意到“ JLE”(如果等于或小于则跳转)和“ JG”(如果等于或大于则跳转)是相反的条件:无论如何,总有一个条件的结果是真,因此CPU在执行过程中看到的实际代码将以字节“81”开头。这种构造称为不透明谓词,中间的这个E8字节只是为了欺骗反汇编程序才添加到那里的。
对于IDA Pro来说,破解这个技巧只是一件小事,因为可以手动纠正反汇编错误。但是,很明显,shellcode是由自动模糊处理工具处理的。不透明的谓词(有时为多个)和无效代码被插入到程序的每条指令之间。最后,自动清理程序是唯一可行的方法,我们通过修改FinSpy恶意软件家族的现有脚本来做到这一点,该脚本由受人尊敬的反向工程师Rolf Rolles创建。
此步骤使我们发现了Shellcode的目的:使用RC4和LZNT1的组合来解密和解压缩最终的有效负载。即便如此,事实证明,攻击者的手段是多种多样的。通常,在这个阶段,人们会期望找到一个被shellcode加载到内存中的PE文件。但是,我们最终得到的是:
被恢复的文件确实是一个PE,但事实证明,其大多数header都已被清理了。实际上,即使其中仅剩下的一些,它们也包含不连贯的值,例如,此处声明的段数等于0xAD4D。由于是Shellcode(而不是Windows加载器)准备执行此文件,因此缺少某些信息(如幻数)也没关系。事实证明,shellcode使用硬编码操作已经即时修复了错误的值:
for ( i = 0; ; ++i ) // Iterate on the sections { // [...] // Stop when all sections have been read if ( i >= pe->pe_header_addr->FileHeader.NumberOfSections - 44361 ) break; // [...] }
例如,在上面的反编译代码中(对于文件节数的所有引用),header中读取的值被减去了44361。对于攻击者来说,有两方面的优势。首先,对于潜在的逆向工程人员而言,静态获取最终有效载荷要困难得多。其次,它还确保了工具链的各个组件之间保持紧密耦合。如果只有其中一个组件被上传到多扫描仪网站上,那么防御者就无法利用了。这是我们过去在LuckyMouse APT中观察到的一种设计理念,并且也将在此工具链的其他部分得到体现,我们将在以后看到这一点。最终,我们能够重建文件的header并继续进行分析,但我们发现这个加载程序从教育的角度来看非常有趣,因此我们决定在此基础上进行在线逆向工程课程。有关如何处理此示例的更多详细步骤,请查看定向恶意软件逆向工程。
FoundCore payload
最终的payload是一个远程管理工具,可以让操作员对受攻击机器进行完全的控制。执行后,此恶意软件启动4条线程:
· 首先,通过创建服务来建立持久性。
· 其次,通过更改服务的“Description”、“ImagePath”、“DisplayName”字段(以及其他字段)设置了不起眼的信息。
· 再次,为与当前进程关联的映像设置一个空的DACL(对应于SDDL字符串“ D:P”),以防止访问底层恶意文件。
· 最后,工作线程引导执行并建立与C2服务器的连接。根据其配置,它也可能将自身的副本注入另一个进程。
与服务器的通信可以通过使用RC4加密的原始TCP套接字或通过HTTPS进行。FoundCore支持的命令包括文件系统操纵、进程操纵、屏幕截图捕获和任意命令执行。
RoyalRoad文档,DropPhone和CoreLoader
退一步看,通过FoundCore恶意软件家族,我们调查了能够识别出的各种受害者并尝试收集有关感染过程的信息。在我们发现的绝大多数事件中,FoundCore的执行之前都要打开从static.phongay [。] com下载的恶意RTF文档。它们都是使用RoyalRoad生成的,并且都在尝试利用CVE-2018-0802。
有趣的是,尽管我们希望它们包含引诱内容,但实际上它们都是空白的。因此,我们假设存在前体文档,可能是通过鱼叉式网络钓鱼或前体感染传递的,这些文档可能会触发下载其中一个RTF文件。
成功利用此漏洞将会导致部署另一种我们称为DropPhone的恶意软件:
此C ++植入程序还以合法可执行文件(来自发行商StarDock的DeElevate.exe)和侧面加载的DLL(DeElevator.dll)的形式出现。在这个阶段,我们所面临的问题比答案还多。DropPhone会从hxxps://cloud.cutepaty [。] com上获取一个保存为data.dat的文件,但到目前为止我们仍无法获得该文件的副本。接下来,我们希望在%AppData%\ Microsoft \ Installers \ sdclt.exe中找到一个companion程序,如果找不到,则最终将终止执行。
我们的假设是,最后一个文件可能是CoreLoader的实例或变体(我们将在稍后描述),但是我们所掌握的唯一支持这个理论的数据是在这个文件夹中发现的CoreLoader。
DropPhone启动sdclt.exe,然后从受攻击计算机收集环境信息,并将其发送到DropBox。植入程序要做的最后一件事是删除data.dat,而无需访问其内容。我们推测它们被sdclt.exe占用了,这是将两个组件的执行锁定在一起的另一种方式。
最后,CoreLoader是我们发现的与此活动集相关的最后一个恶意软件,它是一个简单的shellcode loader,它执行反分析并从名为WsmRes.xsl的文件中加载其他代码。同样,这个特定的文件没有被我们捕捉到,但我们怀疑它以某种方式与FoundCore相关联(在前一节中描述)。
总的来说,我们目前对这个复杂的工具链的理解如下。虚线表示我们要推断的组件和链接,带条纹的框表示我们无法获取的文件。
受害者研究和归因
我们在2020年6月至2021年1月之间观察到了这一活动。根据遥测,数十个组织受到了影响,其中80%位于越南,属于政府或军事部门,或是与卫生、外交、教育或政治垂直领域有关。我们还确定了中亚和泰国的一些受攻击的偶然目标。
由于引言中列出的原因,对此类攻击仅基于工具进行归属是有风险的。乍一看,“三合一”的使用,一般的设计理念以及为使逆向工程尽可能复杂而花费的显而易见的努力看起来与LuckyMouse非常相似。但是,我们也观察到CoreLoader或是FoundCore与和Cycldek威胁行为者相关的程序,即RedCore Loader(MD5:1B6BCBB38921CAF347DF0A21955771A6)之间的代码的相似之处。
到目前为止,虽然Cycldek被认为是较不成熟的威胁行为者之一,但众所周知,其目标与我们在这次行动中观察到的一致。因此,我们不太自信地将本文中描述的活动与Cycldek关联起来。
结论
无论哪个组织精心策划了这项运动,它在复杂程序方面都有了明显的提升。此处介绍的工具链被故意分解为一系列相互依存的组件,这些组件作为一个整体发挥作用。单件很难(有时是不可能)进行单独分析,因为它们依赖于感染链其他阶段提供的代码或数据。我们遗憾地承认,这一策略在一定程度上成功地阻止了我们全面了解这一活动。因此,这份报告不仅涉及我们所了解的事情,也能帮助我们弄清楚我们尚不了解的事情。在此,我们向其他研究人员伸出援手,因为我们坚信,我们面前的挑战只能通过可信的行业合作伙伴之间的信息共享来克服。
来自世界其他地区的一些读者可能会认为这种当地活动与他们无关而不予理会。我们建议他们注意。经验表明,区域威胁行为者有时会随着其作战能力的增强而扩大其活动范围,并且针对不同区域的不同行为者或入侵集合之间广泛共享策略或工具。今天,我们看到一个专注于东南亚的小组正在取得重大飞跃。明天,他们可能会决定他们已经准备好与全世界较量。
妥协指标
文件哈希
域
本文翻译自:https://securelist.com/the-leap-of-a-cycldek-related-threat-actor/101243/如若转载,请注明原文地址: