一、概述
近日,微步在线情报局捕获到一批Donot APT组织最新投递的使用了更新升级代码的Windows恶意样本。Donot(肚脑虫)组织是疑似具有南亚背景的APT组织,其主要围绕周边国家的政府机构展开网络攻击活动,窃密敏感信息。该组织具备针对Windows与Android双平台的攻击能力。
微步情报局针对此次样本分析有如下发现:
- 攻击者的下载器使用了Donot组织常用的异或、加减法对字符串进行解密。
- 在后续的攻击模块中,攻击者对加解密算法及代码进行了升级,使用了大量C++的库函数,给逆向分析带来一定困难。
- Donot攻击者不像以前使用开源、商业木马,而是投递模块化木马进行不同操作,首先投递木马对信息进行收集,再投递后续载荷将搜集的信息传回C2地址。
- 和以往部分Donot组织样本相同,攻击者会与en.wikipedia.org检测网络链接,因此判断为此次攻击目标范围不包括国内。
- 微步在线通过对样本的C2地址进行拓线分析,已对其进行标记,可用于威胁情报检测。微步在线威胁感知平台 TDP 、本地威胁情报管理平台 TIP 、威胁情报云 API 、互联网安全接入服务 OneDNS 、主机威胁检测与响应平台 OneEDR 等均已支持对此次攻击事件和团伙的检测。
二、样本分析
2.1 WinUpdateAssistant.exe
FileName:WinUpdateAssistant.exe
Creation Time::2021-06-25 09:39:59
FileSize:341.78 KB (349981 bytes)
Hash:488cc5b0881ade78f90394e77e69e44740addd916ae7df633bbbc158dc119
该样本为攻击者投递的下载器,主要功能是与C2进行通信将后续木马下载保存至特定目录,且为后续攻击载荷创建自启动,使木马常驻在计算机中。该恶意样本还具有反虚拟机等对抗操作。
样本中使用了Donot常用的异或字符串加解密,大部分字符串使用XOR 3加解密,也有部分字符串通过依次+1或依次-1进行加解密。
样本首先创建互斥量“GoogleInc”。
在当前目录下查询文件”WinUpdateAssistant.lnk”是否存在,当不存在时,将自身拷贝到%TMP%目录下“WinUpdateAssistant.exe”。
通过COM对象在当前目录创建隐藏属性的LNK文件,该LNK文件指向%temp%目录下的木马文件,且LNK 文件的快捷键被修改为 Ctrl+C。这样每次调用 Ctrl+C 复制文件时都会启动这个快捷方式进而运行木马本体,但由于互斥量的原因,在运行核心代码之前木马会退出进程。
通过WMIC命令获取当前虚拟机名称,然后将获取到的名称“VMware Virtual Platform”与解密后的字符串“VMWARE”比较,判断当前是否处于虚拟机中,如果字符串匹配,则退出当前进程。
遍历“C:\Program Files”或”C:\Program Files(x86)”目录下的所有文件夹名称。
获取包括用户名、计算机名、操作系统、处理器等主机系统信息,然后将这些信息进行拼接。
木马会先发起Get请求到en.wikipedia.org/wiki/Encyclopedia测试网络连接,在C盘下创建文件”C:\ProgramData\Msupdate.txt”写入数字“1234567890”。
创建文件夹C:\ProgramData\MSDN,尝试从C2地址micrsoft.live下载“Audiosrvpm.dll”,并将获取的计算机信息加密后回传到C2地址“micrsoft.live/Noja/adms”
最后创建计划任务,执行下载的DLL文件,参数为”AUDO”。
2.2 WinRMBd.dll
Filename:WinRMBd.dll
Creation Time:2021-07-26 07:07:05
FileSize:252,416Bytes
Hash:7e423cfa1a54eaf07b5fbae12111bb9113b78baf012d283481ef51fd964146ea
样本为C++文件,主要功能为窃取用户的登录信息、保存的密码等浏览器隐私信息,并将窃取的信息保存至特定目录下。该模块中没有与C2通信的功能,回传信息、连接C2等功能在攻击者投放的另一模块中。该文件中使用了大量的C++库函数,给分析人员带来一定的困难。除此之外,在字符串的加解密上,也不再是简单的异或或加减法,而是通过定义了一串Key值,根据加密后字符串在Key值中的顺序位进行后续加解密操作。
该样本 DLL除了不包含任何内容的DllMain函数,还包含一个存在恶意代码的导出函数“WinBd”。
先通过加解密字符串解密出函数名称,获取函数地址后调用函数。
然后通过判断调用函数的参数决定是否执行恶意代码,当参数错误或参数为空时,程序会退出进程或崩溃。
样本在执行过程中,会窃取浏览器的各项隐私信息,如FireFox的cert9.db、logins.json、key4.db文件,这些都是浏览器保存的用户登录信息。
读取到对应的文件里的内容并将其保存在新建的目录文件“C:\ProgramData\MSDN\natadsorb\”下,并添加.rnm的后缀。攻击者会在后续的模块中读取文件内容并将其回传到 C2。
2.3 WinRMUl.dll
Filename:WinRMUl.dll
Creation Time:2021-08-16 06:58:19
FileSize:542720 bytes
Hash:79060b7b0ff613c763f5816f72a5a76067ac7b703130ad2786b8ce406240e231
样本同样为C++文件,与“WinRMBd.dll”在加解密算法、垃圾代码块等内容上有大量相似之处,恶意代码都存储在导出函数“WinUl”中。木马的主要功能是将攻击者窃取保存至特定目录的用户隐私信息回传至C2地址“anticlean.xyz”。
代码先通过自定义算法解密部分字符串:
通过判断调用导出函数的参数,来决定是否继续执行后续恶意代码,当参数为空时,movzx指令会出现错误提示。
再经过大量的字符串加解密、拼接等操作,最终拼接出“C:\ProgramData\MSDN\natadobsu\nvr\”、“C:\ProgramData\MSDN\nataddorhs/nvr”、“C:\ProgramData\MSDN\natadolk\”等路径,并对拼接出的多个路径遍历文件后缀名为.rnm的所有文件(这里的.rnm就是前面所投递木马的窃取的浏览器隐私信息文件)。
当遍历到相应的文件后,解密 C2 服务器地址,然后将遍历到的文件发送到 C2 服务器“anticlean.xyz/vxmot/yibo”。
在发送文件的过程中,可以看到攻击者自定义的一些字符串内容,如图的name=“colina”以及filename=“窃取的文件名”。
并将窃取的文件内容回传C2。
发送窃取的文件内容后,攻击者还会读取C2地址的Http请求返回的内容,但截至分析时返回的内容仅为“Abort”。
三、总结
在本次捕获攻击事件中,印度攻击者Donot使用了与以往不同的加解密方法,并且在样本投递中,不再使用印度攻击者常使用的商业木马、开源工具等进行窃密、远控操作,而是出现了模块化的趋势,投递不同的文件分别执行不同的功能,且代码复杂度也比以往有了提升。
从域名来看,攻击者回连的C2地址依然使用了该组织常使用的.xyz域名,且在证书上有效期仅为2021年7月-10月三个月时间。