导语:FireEye发现基于宏的恶意Microsoft Word文档将SANNY恶意软件传播给全球多个政府。在最新观测到的攻击行动中,攻击者已经对恶意软件的传播方法做了重大改变。
一、简介
2018年3月,通过动态威胁情报,FireEye发现基于宏的恶意Microsoft Word文档将SANNY恶意软件传播给全球多个政府。每一份恶意文档都针对相关地区的地缘政治问题精心设计。FireEye自2012年以来一直跟踪SANNY恶意软件家族,并确定它是专门针对朝鲜半岛问题的组织所特有的。该组织一直针对全球的外交机构,主要使用英文和俄文写成的诱饵文档。
在最新观测到的攻击行动中,攻击者已经对恶意软件的传播方法做了重大改变。攻击分多个阶段进行,每个阶段都从攻击者的服务器下载。此外,还增加了命令行规避技术、感染Windows 10系统的能力,以及最新的UAC绕过技术。
二、文档细节
在最新一轮攻击中观察到以下两个文件,细节如下:
MD5 hash: c538b2b2628bba25d68ad601e00ad150 SHA256 hash:b0f30741a2449f4d8d5ffe4b029a6d3959775818bf2e85bab7fea29bd5acafa4
原始文件名: РГНФ 2018-2019.doc
图1所示的文档讨论了与中国有关的欧亚地缘政治以及俄罗斯的安全。
图1:用俄文写的示例文档
MD5 hash: 7b0f14d8cd370625aeb8a6af66af28ac SHA256 hash:e29fad201feba8bd9385893d3c3db42bba094483a51d17e0217ceb7d3a7c08f1
原始文件名: Copy of communication from Security Council Committee (1718).doc
图2所示的文档讨论了对朝鲜人道主义行动的制裁。
图2:用英文书写的示例文档
三、Macro分析
在两个文档中,嵌入的宏都存储在文档的TextBox属性(TextBox1.Text)。首先宏访问TextBox属性,在系统上执行,此后该属性会被覆盖以消除证据。
四、阶段1: BAT文件下载
在阶段1中,宏利用合法的Microsoft Windows certutil.exe程序从以下URL下载编码的Windows批处理(BAT)文件:http://more.1apps[.]com/1.txt。之后,宏解码该文件并将其保存在%temp%目录中,命名为1.bat。
命令行中有一些结果很有趣:
1.宏将Microsoft Windows certutil.exe程序复制到%temp%目录,并命名为ct.exe。其中一个原因是为了逃避安全产品的检测。近期,FireEye观察到使用certutil.exe的攻击者在运行前重命名certutil.exe,这样可以逃避简单的基于文件名的启发式检测。
2.恶意BAT文件作为假冒的PEM编码的SSL证书(带有BEGIN和END标记)存储在第1阶段URL中,如图3所示。然后使用certutil.exe工具剥离BEGIN / END标记并解码文件的Base64。FireEye之前从未观察到恶意软件作者在过去的行动中使用此技术。
图3:恶意BAT文件作为编码文件存储为SSL证书
五、BAT文件分析
解码执行后,阶段1的BAT文件将从原始URL下载编码的CAB文件:hxxp://more.1apps[.]com/。下载的确切文件名依赖于操作系统的体系结构。
· 32位操作系统:hxxp://more.1apps [.] com / 2.txt
· 64位操作系统:hxxp://more.1apps [.] com / 3.txt
同理,针对不同Windows操作系统版本和体系结构,使用不同的技术安装CAB文件。在Windows 10,BAT文件使用rundll32从update.dll(setup.cab中的组件)调用相应的函数。
· 32位操作系统:rundll32 update.dll _EntryPoint @ 16
· 64位操作系统:rundll32 update.dll EntryPoint
对于其他版本的Windows,使用合法的Windows Update程序(wusa.exe)直接将CAB文件解压到系统目录:
BAT文件还会检查计算机上是否存在卡巴斯基实验室防病毒软件。如果有,CAB安装会相应更改以绕过检测:
六、阶段2: CAB文件分析
如前一节所述,BAT文件将根据底层操作系统的体系结构下载CAB文件。其余的恶意行为由下载的CAB文件执行。
CAB文件包含以下组件:
· l install.bat——用于部署和执行组件的BAT文件。
· l ipnet.dll——SANNY恶意软件的主要组件。
· l ipnet.ini ——SANNY恶意软件使用的配置文件。
· l NTWDBLIB.dll——在Windows 7(32位和64位)上执行UAC Bypass。
· l update.dll——在Windows 10上执行UAC Bypass。
install.bat执行以下行为:
1.检查BAT文件的当前执行目录。如果不是Windows系统目录,那么在继续执行之前,首先将必要的组件(ipnet.dll和ipnet.ini)复制到Windows系统目录中:
2.停止COMSysApp服务,然后修改相应的Windows服务注册表项确保在启动COMSysApp服务时加载恶意ipnet.dll,从而劫持合法的Windows系统服务COMSysApp(COM +系统应用程序):
3.被劫持的COMSysApp服务启动后,将删除CAB文件的其余所有组件:
ipnet.dll是CAB文件中用于执行恶意行为的主要组件。该DLL导出以下两个函数:
· ServiceMain——在劫持系统服务COMSysApp启动时调用。
· Post——使用FTP协议向命令和控制(C2)服务器传输数据。
ServiceMain函数首先进行检查,查看它是否在svchost.exe或rundll32.exe的环境中运行。如果它在svchost.exe的环境中运行,那么它将在继续进行恶意行为之前首先启动系统服务。如果它正在rundll32.exe的环境中运行,那么它将执行以下行为:
· 使用以下命令从磁盘删除NTWDBLIB.DLL模块:cmd / c taskkill / im cliconfg.exe / f / t && del / f / q NTWDBLIB.DLL
· 将系统上的代码页设置为对应于UTF-8的65001,:cmd / c REG ADD HKCU \ Console / v CodePage / t REG_DWORD / d 65001 / f
七、命令和控制(C2) 通信
SANNY恶意软件使用FTP协议作为C2通信通道。
(一)、FTP配置文件
SANNY恶意软件使用的FTP配置信息被编码并存储在ipnet.ini中。该文件使用以下自定义字符集进行Base64编码:SbVIn = BU / dqNP2kWw0oCrm9xaJ3tZX6OpFc7Asi4lvuhf-TjMLRQ5GKeEHYgD1yz8
解码文件后,可以恢复以下凭据:
· FTP服务器:ftp.capnix [.] com
· 用户名:cnix_21072852
· 密码:vlasimir2017
然后,它继续连接上述配置文件解码的FTP服务器,并使用FtpSetCurrentDirectoryW函数将FTP服务器上的当前目录设置为htdocs。
(二)、系统信息收集
出于侦察起见,SANNY恶意软件会执行系统命令来收集信息,并将其发送到C2服务器。
使用以下命令从机器收集系统信息:
通过执行以下命令收集系统上运行的任务列表:
(三)、C2命令集
在成功连接到从配置文件解码的FTP服务器后,恶意软件会搜索htdocs目录中包含to everyone子字符串的文件。该文件包含由恶意软件执行的C2命令。
发现带有to everyone子字符串的文件后,恶意软件将下载该文件,然后根据以下命令名称执行操作:
· l chip命令:该命令从文件系统中删除现有的ipnet.ini配置文件,并使用指定的配置字符串创建一个新的ipnet.ini文件。chip命令允许攻击者将恶意软件迁移到新的FTP C2服务器。该命令语法如下:
· l pull命令:该命令用于数据传输。它能够从本地文件系统上传任意文件到攻击者的FTP服务器。使用稍后在“压缩和编码数据”一节中描述的算法对上传的文件进行压缩和加密。该命令语法如下:
· l put命令:此命令用于将系统上的现有文件复制到新位置并从原位置删除该文件。该命令语法如下:
· l 默认命令:如果命令以子字符串cmd / c开头,但之后没有跟随之前的命令(chip,pull和put),则直接使用WinExec在机器上执行该命令。
· l user命令:该命令将以登录用户的身份在系统上执行命令。该命令复制explorer.exe的访问令牌并使用以下步骤生成一个进程:
1.在系统上枚举正在运行的进程,搜索explorer.exe进程并获取explorer.exe的进程ID。
2.访问标志设置为0x000F01FF时,获取explorer.exe进程的访问令牌。
3.通过调用CreateProcessAsUser函数并使用步骤2中获取的访问令牌启动应用程序(在C2命令中定义)。
(四)、压缩和编码数据
SANNY恶意软件使用一种有趣的机制来压缩从系统收集的数据,并在上传前对其进行编码。恶意软件不使用archiving程序,而是利用Shell.Application COM对象并调用IShellDispatch接口的CopyHere方法来执行压缩,如下所示:
1.在%temp%目录中创建一个名为temp.zip的空ZIP文件。
2.将PK标头的前16个字节写入ZIP文件。
3.调用IShellDispatch接口的CopyHere方法来压缩收集的数据并写入temp.zip。
4.将temp.zip的内容读入内存。
5.从磁盘中删除temp.zip。
6.在%temp%目录中创建一个空文件post.txt。
7.为temp.zip文件Base64编码(使用前面FTP配置文件部分中提到的同一自定义字符集)并写入文件:%temp%\ post.txt。
8.调用FtpPutFileW函数将post.txt的内容写入远程文件,格式为:from <computer_name_timestamp> .txt
八、在Windows 7上绕过UAC
NTWDBLIB.dll——CAB文件中的这个组件将被提取到%windir%\ system32目录。之后,BAT文件执行cliconfg命令。
此DLL模块的目的是启动install.bat文件。cliconfg.exe是一个合法的Windows二进制文件(SQL客户端配置实用工具),在执行时加载NTWDBLIB.dll。将NTWDBLIB.dll的恶意副本放在与cliconfg.exe相同的目录中是一种称为DLL劫持的技术,从而绕过UAC。
九、在Windows 10绕过UAC
Update.dll——CAB文件中的此组件用于在Windows 10上绕过UAC。如BAT文件分析一节所述,如果底层操作系统是Windows 10,则它使用update.dll开始执行代码而不是直接调用install.bat文件。
update.dll执行的主要操作如下所示:
1.执行以下命令为UAC Bypass设置Windows注册表:
2.利用使用合法Windows二进制文件fodhelper.exe的UAC Bypass技术在Windows 10上绕过UAC,以便使用提升的权限执行install.bat文件:
3.在当前目录中新建另一个BAT文件kill.bat,以删除绕过UAC的证据。BAT文件杀死当前进程并从文件系统中删除update.dll和kill.bat:
十、结论
该行动向我们表明,使用SANNY恶意软件的攻击者正在改进其恶意软件传播方式,特别是整合了UAC Bypass和终端规避技术。通过使用模块化体系结构的多阶段攻击,恶意软件作者增加了逆向工程的难度,并规避了安全解决方案。
用户可以通过在其设置中禁用Office宏来保护自己免受此类攻击,并在文档中启用宏时(尤其是在出现提示时)提高警惕,即便这些文档来源可信。
IoC