导语:2020年12月7日,研究人员发现一个上传到Virus Total的恶意文档,文档内容显示某会议将在2020年1月召开,而文档的编译时间为2020年1月27日,主要攻击韩国政府,也就是说攻击发生已经1年了。
2020年12月7日,研究人员发现一个上传到Virus Total的恶意文档,文档内容显示某会议将在2020年1月召开,而文档的编译时间为2020年1月27日,主要攻击韩国政府,也就是说攻击发生已经1年了。
该文件含有一个嵌入的宏,使用VBA自解码技术来在office的内存空间中解码,无需写入硬盘中。然后嵌入RokRat 变种到Notepad中。
根据注入的payload分析,研究人员认为该样本与APT 37有关。APT 37是嘲笑的黑客组织,也被成为ScarCruft、Reaper和Group123,自2012年开始活跃,主要攻击目标为韩国的受害者。
文档分析
攻击者使用的宏中VBA 自解码技术是2016年首次出现的。其中,对恶意宏进行编码然后解码和动态执行。
图 1: 恶意文档
我们可以把概述看作是一种解压缩技术(unpacker stub),在打开文档时会执行。unpacker stub会解压恶意宏,并将其写入office的内存中而非硬盘中。这样就可以绕过许多的安全机制。
图 2: 自解码技术
该文件使用的宏如图 3所属。该宏从调用“ljojijbjs”函数开始,并根据结果来获取执行的不同路径。
图 3: 编码的宏
微软默认会禁用宏的动态执行,如果攻击者想要动态执行宏,就需要修改注册表的值来绕过VB object model (VBOM)。
为了检查是否绕过了VBOM,需要看看VBOM是否被访问。“ljojijbjs”函数的作用就是检查对VBProject.VBComponent的读访问。如果触发了异常,就说明VBOM需要被绕过。如果没有异常,就说明VBOM已经被绕过了,VBA可以动态地提取宏。
图 4: 检查VBOM的访问
“fngjksnhokdnfd”函数会被调用来绕过VBOM。该函数会将VBOM 注册表的键值设置为1。
图 5: 修改VBOM注册表键
在绕过VBOM后,会调用CreateMutexA API来在受害者机器上创建一个Mutex,并将其命名为“mutexname”。这样其他攻击者就可以确保只感染受害者一次,但是在文件中没有发现有检查该mutex的痕迹。
图 6: Mutex创建
最后,为了执行自解码过程,需要创建一个新的应用对象来打开自己,并在其中以不可见的方式加载当前文档。
图 7: 自打开
如果VBOM成功绕过了,就会调用Init函数,生成混淆格式的恶意宏。
图 8: 混淆的宏
然后,混淆的宏会被传递给“eviwbejfkaksd”来进行反混淆,然后在内存中执行。
图 9: 反混淆
为了对宏进行反混淆,需要定义2个字符串数组:
· StringOriginal:其中含有反混淆签的字符数组;
· StringEncoded:其中含有反混淆后的字符数组;
并未宏的反混淆定义了循环。对每轮循环,从混淆的宏中获取一个字符,并在StringEncoded中寻找其索引。找到索引后,在StringOriginal中寻找相等的索引,从中获取字符并加到新宏中。比如,编码的宏中的“gm* bf”会被解码为“Option”。
图 10: 反混淆循环
然后就获取了office内存空间中执行的宏。为了执行解码的宏,会在调用主函数执行宏之前创建一个模块并写入该模块。
主函数定义了一个十六进制格式的shellcode,目标进程就是notepad.exe。然后,基于操作系统版本,创建一个Notepad.exe进程,并使用VirtualAlloc在其地址空间内分配内存。然后用WriteProcessMemory将shellcode写入分配的内存中,最后,调用CreateRemoteThread来在Notepad.exe的地址空间中执行shellcode。
图 11: 反混淆宏
Shellcode分析(RokRat)
注入Notepad.exe 的shellcode会从http://bit[.]ly/2Np1enh下载一个加密的payload,该链接被重定向到了一个谷歌网盘链接。
图12 下载的URL
注入Notepad.exe 的shellcode是一个基于云的RAT的变种——RokRat,APT 37从2017年开始使用该RAT。样本的编译时间是2019年10月29日。给RAT可以从受害者机器中窃取数据并发送到云服务,比如Pcloud、Dropbox、Box和Yandex。
图 13: 编码的云服务
与之前的变种类似,该变种使用了许多反分析技术来确保没有运行在分析环境中。做的一些检查包括:
· 检查与iDefense SysAnalyzer相关的DLL、Microsoft Debugging DLL和沙箱;
· 调用IsDebuggerPresent 和GetTickCount来识别调试器;
· 检查VMWare相关的文件。
图 14: 反分析技术
该RAT具有以下功能:
· 截屏;
图 15: 截屏
· 收集系统信息,比如用户名、计算机名、BIOS等;
图 16: 收集BIOS数据
· 窃取数据并发送到云服务;
图 17: 数据窃取
· 凭证窃取;
· 文件和目录管理等。
总结
APT37使用的感染向量主要是鱼叉式钓鱼攻击,本文中研究人员发现其使用了用自解码宏武器化了的office文档。自解码宏技术可以绕过许多静态检测机制,并隐藏其恶意文档的迹象。攻击活动中使用的最终payload是一个RokRat RAT变种,本例中RokRat被注入到了Notepad.exe中。
本文翻译自:https://blog.malwarebytes.com/threat-analysis/2021/01/retrohunting-apt37-north-korean-apt-used-vba-self-decode-technique-to-inject-rokrat/如若转载,请注明原文地址