一、简介
来自Malwarebytes LABS的威胁情报小组于2020年7月在Virus Total上发现了一个新上传的恶意文档,该文档内容很像是一次针对韩国政府的会议邀请。恶意文档中提到的会议日期是2020年1月23日,文档的编辑时间2020年1月27日,这暗示该攻击发生在大约一年前。
文件中包含一个嵌入宏,并使用VBA解码技术对自身进行解码,该过程发生在Microsoft Office的进程空间中,不需要写入磁盘。然后,它将ROKRAT的变种注入到Notepad.exe进程中。
通过对注入的载荷进行分析,Hossein Jazi所在的威胁情报小组认为该样本与APT37相关联。APT37,又名ScarCruft,Reaper和Group123。该组织自2012年开始持续活跃,主要针对韩国进行攻击。
Hangul Office,这是一款韩文办公软件。由于该软件在韩国使用广泛,故APT37组织以往常利用Hangul Offic文档(hwp文件)来攻击受害者。然而,在本次攻击活动中,Hossein Jazi团队却发现了该APT组织采用了一个有趣的替代方式,即通过VBA自解码Office文档进行投递。据Hossein Jazi称,这是该APT组织第一次采取这样的攻击方式。
关键词:APT37,hwp钓鱼文档,ROKRAT,VBA自解码技术
二、文件分析
2016年,在宏中使用VBA自解码进行攻击的概念首次被提出。也就是说,一个恶意的宏被作者编码,然后解码并动态运行。
图1 恶意文档
这种技术可看作是一种动态解码技术,外层宏代码将恶意宏解包,并将其写入Microsoft Office进程的内存中,从而实现打开文档即执行,而不用再写入磁盘,以便绕过多种安全机制的审查。
图2 自解码技术
图3中显示了恶意文档中使用的宏,该宏从调用“ljojijbjs“函数开始,并根据结果采用不同的执行路径。
图3 编码的宏
微软默认禁止宏的动态执行,如果攻击者想要动态执行,那么攻击者需要修改它的注册表项,以绕过VB对象模型(VBOM)。
恶意宏为了检查VBOM是否被绕过,它需要查看VBOM的可访问性。“ljojijbjs“函数便用于此目的,该函数核查对VBProject.VBComponen的读访问。如果发出了一个异常,这意味着VBOM需要被绕过(IF语句),否则表明VBOM已经被绕过并且VBA能够动态提取它的宏(ELSE语句)
图4 核查VBOM的可访问性
为了绕过VBOM,样本通过一个参数的形式,调用“fngjksnhokdnfd”函数,该函数将VBOM注册表项设置为1。
图5 修改VBOM注册表的键值
绕过VBOM之后,它调用另一个函数在受害者的主机中产生一个互斥量,该函数调用CreateMutexA API并且将互斥量命名为mutexname。互斥量可用于确保受害者仅被感染一次,但是在该文档中,并未发现有核查互斥量的操作。
图6 互斥量创建
最终,为了执行自解码过程,它需要创建一个新的应用对象来打开自身,并以隐藏模式加载当前文档。
图7 打开文档自身
如果已经绕过了VBOM,则调用Init函数并以混淆格式生成恶意宏内容。
图8 混淆的宏
下一步,混淆的宏通过eviwbejfkaksd函数来去混淆,然后在内存中执行。
图9 去混淆
为了去除宏的混淆,定义了两个字符串数组:
-
StringOriginal包含去混淆前的字符串数组
-
StringEncoded包含去混淆后的字符串数组
为了去除宏的混淆,定义了一个循环。对于每次迭代来说,它选择混淆宏的一个字符并且在StringEncoded中寻找它的索引。当找到该字符的索引时,它寻找其在StringOriginal的等效索引,并从中得到一个字符添加至新的宏中。以“gm* bf”为例,它将被解码为“Option”。
图10 去混淆的循环
完成解码过程后,将得到最终在Microsoft Office进程中执行的恶意宏。为了执行解码后的宏,它创建了一个模块并且在调用主函数之前写入。
主函数定义了一个16进制的shellcode以及目标进程Notepad.exe。然后,根据操作系统的版本,它创建了一个Notepad.exe进程并且使用VirtualAlloc在其地址空间中分配内存。然后它使用WriteProcessMemory函数将shellcode写入已分配好的内存中。最后,它调用了CreateRemoteThread函数在Notepad.exe的地址空间中执行shellcode。
图11 去混淆后的宏
三、shellcode分析(ROKRAT)
shellcode注入Notepad.exe进程后,从http://bit[.]ly/2Np1enh 中下载了一个加密的载荷,该链接被重定向到一个Google Drive链接。
图12 下载URL
下载的载荷是ROKRAT的变种,是一个基于云的远控程序。自2017年起,APT37组织开始使用该远控程序。这个样本的编译日期是2019年10月29日。该远控程序被用来从受害者主机上偷取数据,并将其发送至云服务中(Pcloud, Dropbox, Box, Yandex)。
图13 编码的云服务
与之前的变种相似,它使用了少量的反分析技术以确保其不会被运行于分析环境中。用到的部分技术如下:
-
检查iDefense SysAnalyzer、Microsoft Debugging DLL和Sandboxies相关的DLL
-
调用IsDebuggerPresent和GetTickCount来识别调试器
-
检查VMWare相关文件
图14 反分析技术
该RAT具有以下特性:
-
捕获屏幕截图
图15 捕获屏幕截图
-
搜集系统信息(用户名,计算机名,BIOS)
图16 收集BIOS数据
-
将窃取的数据上传到云服务
图17 将窃取的数据上传到云服务
-
证书窃取
-
文件及目录管理
更多的细节信息可以查看NCCGroup和Cisco Talos的报告。
四、结论
APT37主要通过鱼叉式钓鱼攻击,来投递初始感染载体。其中攻击者常用的攻击方式是,向目标发送携带恶意文件的电子邮件。在APT37的攻击活动中,本案例是少数几个没有使用Hwp文件(Hanqul Office)作为网络钓鱼文档,而是使用带有自解码宏的Microsoft Office文档作为武器的案例之一。这种技术很聪明,可以绕过多种静态检测机制,并隐藏恶意文档的主要意图。在该威胁角色最后一个攻击阶段中出现的payload,是APT37在之前的攻击活动中使用过的一个自定义RAT(ROKRAT)。与过去他们选择将ROKRAT注入至cmd.exe不同的是,在本案例中,他们选择了Notepad.exe进行注入。
五、IOC
恶意文档:
3c59ad7c4426e8396369f084c35a2bd3f0caa3ba1d1a91794153507210a77c90
ROKRAT:
676AE680967410E0F245DF0B6163005D8799C84E2F8F87BAD6B5E30295554E08
A42844FC9CB7F80CA49726B3589700FA47BDACF787202D0461C753E7C73CFD2A
2A253C2AA1DB3F809C86F410E4BD21F680B7235D951567F24D614D8E4D041576
C7CCD2AEE0BDDAF0E6C8F68EDBA14064E4A9948981231491A87A277E0047C0CB
本文为CNTIC编译,不代表本公众号观点,转载请保留出处与链接。联系信息进入公众号后点击“论坛信息”可见。
原文链接:
https://blog.malwarebytes.com/threat-analysis/2021/01/retrohunting-apt37-north-korean-apt-used-vba-self-decode-technique-to-inject-rokrat/
原文标题:
Retrohunting APT37: North Korean APT used VBA self decode technique to inject RokRat
编译:CNTIC情报组
本文始发于微信公众号(国家网络威胁情报共享开放平台):APT37组织使用VBA自解码技术投递ROKRAT
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论