作为顶级APT组织之一,海莲花在近年的攻击活动中使用了多种木马工具,其典型包括CSbeacon、RemyRAT、Denis等。在19年上半年的海莲花组织攻击事件中,我们发现一种多功能、强反检测、强反分析的木马成为了主要攻击载荷。由于该木马被部分国外安全厂商识别为Denes,我们将这个名称与其功能特征RAT(remote administration tool)相结合,称该木马为DenesRAT。本报告将展示对该木马的分析结果与相关攻击链的攻击过程。
前言
作为顶级APT组织之一,海莲花在近年的攻击活动中使用了多种木马工具,其典型包括CSbeacon、RemyRAT、Denis等。在19年上半年的海莲花组织攻击事件中,我们发现一种多功能、强反检测、强反分析的木马成为了主要攻击载荷。由于该木马被部分国外安全厂商识别为Denes,我们将这个名称与其功能特征RAT(remote administration tool)相结合,称该木马为DenesRAT。本报告将展示对该木马的分析结果与相关攻击链的攻击过程。
攻击链:通过hta脚本投放DenesRAT
攻击链概述
该攻击链为2019年中旬所捕获到的较新攻击方式,攻击者通过鱼叉邮件投递恶意压缩包,通过迷惑性的主题及照片诱使用户打开伪装成html文档的hta脚本,并完成恶意软件的释放与安装。
攻击链流程分析
侦察目标阶段
本次攻击中海莲花将目标瞄向了越南环保部门与人员。在分析了攻击目标的关注点之后,海莲花组织针对性地收集了反映越南环境问题的图像信息,用于制作诱饵文档。
制作工具阶段
通过解压本次投放的压缩包,我们可以看出文件夹及文件名均使用了越南语。
其文档名为:
Thông tin về chuyên đề môi trường_Nhờ anh Đặng Vũ Lượng tư vấn thêm |
其大意与环境相关。
文件夹中所包含的图片均与环境污染有联系,所有此次攻击当是向越南环保组织定向发起的。
投递工具阶段
该攻击链中,海莲花组织使用鱼叉攻击的方式进行文件的投放,邮件中附件为zip压缩包形式,文件名为“Thông tin về chuyên đề môi trường_Nhờ anh Đặng Vũ Lượng tư vấn them.zip”。大意为“环境议题资料”。
触发工具阶段
该诱饵文件通过文件+图片的格式诱使受害者运行hta脚本,触发木马释放过程。
- Hta脚本执行
投放的hta文档经过混淆,运行过程中会将”,” “.” “ ”替换为”+”,”/”,”=”。
图2.1 经过混淆的hta脚本
hta脚本通过实例化L模块,并显式调用X函数释放Loader。参数如下:
图2.2 实例化模块并传参调用
Name | Value | Means |
Param1 | 1632689155 | 解密Key |
Param2 | 31529(0x7B29) | 附加密文数据起始偏移 |
Param3 | 194 | 释放docx文档名称长度 |
Param3 | 1292962 | 附加密文长度 |
- Loader释放
Loader是一个.Net DLL。在显式调用后,该DLL会将hta做相应字符替换,再经base64解码,最终解密后得到shellcode。
图2.4 Loader解密并加载shellcode
解密算法十分简单,利用三字节Key(0x03,0xdc,0x50)每字节异或
图2.5 shellcode解密算法
生成并弹出欺骗性空文档掩人耳目
图2.6 生成并弹出具有欺骗性的空文档
随后将解密数据加载到内存执行:
图2.7 内存加载并执行shellcode
- Shellcode执行
Shellcode在执行过程中会在内存中加载DLL
图2.8 内存释放二级dll并运行
待释放的文件均存在于资源中,资源数据会通过RtlDecompressBuffer解压释放,资源号分别为0x65,0x66:
图2.9 dll载入资源
DLL随后在system32,Program File及Windows路径下获取所有exe及dll名称。通过生成随机数,随机选择一个文件,将其文件描述作为释放恶意代码的文件夹。
本次执行时选择了如下文件:
若随机选的文件没有描述内容,首次释放会生成文件夹”NLS_000001”
DLL会在Program Files中根据选中文件描述创建目录,如果缺少权限,则改为在%appdata%下创建。
最终生成如下结果,exe是随机选中文件的名字。
安装木马阶段
该文件夹中所包含的可执行文件是adobe 3d utility的原始程序:
Exe执行时会加载同目录下的BIB.dll,ACE.dll,AGM.dll,CoolType.dll
这四个dll均为被劫持的dll,通过白利用被加载。这四个dll最终加载Shellcode的是CoolType.dll。
当beacon标志位小于0x64时才能加载shellcode,而满足此要求的只有CoolType.dll
随后返回到exe进程空间,读取同目录下的Shellcode文件,并在内存中执行:
该Shellcode会进行自释放操作,最终释放的恶意软件为DLL文件,被部分杀毒厂商标注为Denes木马。该木马释放名称为{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll,代码中充斥着大量无意义花指令以干扰分析。
该DLL执行开始会从资源中提取并使用RC4算法解密基础配置信息:
Item | Value | Length |
domain encode string | ghijklmnop | 0x14(UNICODELEN) |
Registry Name1 | SOFTWARE\App\AppX37cc7fdccd644b4f85f4b22d5a3f105a\Application | 0x7A(UNICODE LEN) |
Registry Name2 | SOFTWARE\App\AppX37cc7fdccd644b4f85f4b22d5a3f105a\DefaultIcon | 0x7A(UNICODE LEN) |
Registry Value | Data | 0x08(UNICODE LEN) |
Mutex Encode String | abc | 0x06(UNICODE LEN) |
Domain1 | ipv6.ursulapapst.xyz | 0x28(UNICODE LEN) |
Domain2 | udt.sophiahoule.com | 0x26(UNICODE LEN) |
Domain3 | location.allannicolle.com | 0x32(UNICODE LEN) |
Httpprov Module | 00 45 00 4D 5A | 0x054408 |
Trojan Version | 07 94 45 23 | 0x04 |
其内存分布为:
在以上配置文件中,具有共同特性的是注册表项均符合如下规律:
SOFTWARE\App\AppX\AppX[0-9a-f]
建立连接阶段
释放资源完毕后,恶意程序将在内存中展开Httpprov组件,后续通信均通过其导出函数CreateInstance接口完成。
待恶意软件初始化完成,将向控制端发送上线信息。木马将从保存CC信息的3个表中取出域名信息,进行通信。
提取解密配置信息中的domain信息
木马的URI生成逻辑如下:
通过随机数控制元音及辅音字符的产生
通过产生的字符串,计算其CRC32,经其结果算出两个数,并最终形成URI:
如果客户端首次与CC连接,CC会返回1个UUID作为Session ID,并保存到注册表项中
SOFTWARE\App\AppX37cc7fdccd644b4f85f4b22d5a3f105a\DefaultIcon
以上所有通信均经过LZMA压缩再由RC4编码。
RC4编码
随后木马将收集系统信息上报CC,结构如下
Offset | Meaning |
0x0 | Unknown |
0x1 | 硬编码字节 |
0x2 | 提权标志位 |
0x3 | 木马版本ID |
0x7 | 计算机名 |
0x27 | 用户名 |
0x79 | 系统注册表的ProductName,CSDVersion,CurrentVersion,ReleaseId,CurrentBuildNumber,IsWow64Process的返回值 |
0x179 | VolumeName和VolumnPathName(格式%S(%S);) |
0x279 | DeviceIoControl 0x2d1400 查询VolSerialNumber结果 |
0x379 | wmi SELECT SerialNumber FROM Win32_BaseBoard |
0x3f9 | GetSystemTimeAsFileTime |
0x400 | Unknown |
0x401 | 解密资源中的数值 |
其内存分布为:
执行攻击阶段
木马与C&C服务器连接成功后,接收控制指令展开攻击。
DenesRAT木马支持以下功能:
MainCmd | Meaning |
0 | 收集系统信息 |
1 | 设置会话ID |
2 | 以pipe方式创建进程 |
3 | 设置重连计数器 |
4 | 推迟轮询时间 |
5 | 读取文件或注册表键值,并计算哈希 |
6 | 创建进程 |
7 | 创建文件或注册表项 |
8 | 写注册表 |
9 | 查询注册表 |
10 | 查询指定文件 |
11 | 移动文件 |
12 | 删除文件 |
13 | 列出磁盘 |
14 | 创建目录 |
15 | 删除目录 |
16 | 从指定位置读文件 |
17 | 调用httpprov通信 |
18 | 未知 |
19 | 查询键值或执行文件 |
20 | 设置环境变量 |
21 | 执行shellcode |
22 | 获取环境变量 |
攻击链:利用winrar漏洞释放DenesRAT
攻击链概述
该攻击链也属于恶意诱饵的一种,但效果发生了变化。白利用诱饵文档中伪装成Word文档的可执行文件需要用户当场点击并运行,而使用WinRAR漏洞的恶意诱饵在解压后会将恶意程序放到了自启动目录下,重启即可执行,增强了隐蔽性,缺乏经验的用户很难觉察出其中的蹊跷。
该攻击流程的主要行为及其在攻击链中的组成如下:
攻击链流程分析
下面以2019年的ACE样本来展示该攻击链流程。
侦察目标阶段
海莲花组织长期针对中国大陆的官方机构,针对目标单位定向创建诱饵邮件,伪装成各类通知、报告、统计表等。而政府机关里的工作人员对这类名称早已习以为常,从而使得这些诱饵文档具有高度欺骗性。
制作工具阶段
邮件中包含一个ACE压缩包,解压后包含一个自解压文件和若干Word文件。
文件名 | 属性和功能 |
xxx.rar/zip | 畸形的ACE压缩包,利用CVE-2018-20250释放自解压程序到自启动目录,可绕过UAC。 |
文件名 | 属性和功能 |
winword.exe | 自解压程序,通过Windows自启动执行,白利用regsrv加载执行恶意程序。 |
Report file 01.docx
Report file 02.docx Report file 03.docx
|
两个Word文档,无实际作用。第3个Word文档为加密文档。 |
投递工具阶段
同攻击链1相同,海莲花同样使用鱼叉邮件,附件为rar压缩包,名称为”Report – SIO.rar”。
触发工具阶段
当用户在桌面或Windows下载目录使用WinRAR解压压缩包时,会触发CVE-2018-20250漏洞,使得包含恶意程序的自解压程序放置到自启动目录下。
安装木马阶段
解压后的文件是自解压文件,释放出一个ocx组件,会白利用regsvr32进行注册。并在第二次注册时改变流程去解密运行Shellcode。
注册时,regsvr32先加载组件,随后会调用其导出函数DllRegisterServer,正是后者解密了Shellcode。进入Shellcode的特征代码如下:
ocx组件包含资源文件。Shellcode会读取该资源,解密组装出一个Dll并加载执行。
Shellcode分步解密数据,先是PE头到数据目录表,接着是Section头部,最后解密其余Section,并从Dll入口点开始执行,跳转点代码特征如下:
执行前,抹掉了PE头部的原始入口点:
该最终载荷为DenesRAT,与攻击链2中最终载荷相同。
建立连接阶段
与攻击链1不同的是,该攻击链中搭载的DenesRAT木马使用了tcp协议而非http协议连接C&C服务器,流量格式为4字节长度+加密内容:
加密逻辑与攻击链2所述相同,为lzma+RC4的方式。
执行攻击阶段
该DenesRAT与攻击链1中的DenesRAT木马功能一致。
攻击链:winrar自解压文件释放DenesRAT
攻击链概述
该攻击链利用自解压文件执行定义好的SFX脚本,实现诱骗攻击的目的,自解压文件一般以exe结尾,可自定义其功能脚本,实现静默执行,同时会执行程序原始功能,避免被察觉,此次攻击事件中则是以.doc.exe的形式来进行攻击。
该攻击流程的主要行为及其在攻击链中的组成如下:
攻击链流程分析
下面以一个典型的攻击样本来描述该攻击链的执行流程。
投递工具阶段
利用伪装为doc的SFX自解压压缩包,诱骗用户点击。
触发工具阶段
诱导用户点击后显示Error!字符串误导用户。实际执行的SFX自解压脚本如下:
脚本功能:
1、执行同目录下的pkg后缀文件;
2、利用注册表绕过UAC。
下图为doc打开后展示的内容:
运行pkg后缀的文件,该文件为DLL动态库文件,调用的入口函数为DllRegisterServer,该部分主要完成以下功能:
1、调用RegQueryValueExA读取注册表项,确保注册表项已成功写入;
2、读取同目录下的.bin结尾文件,加载至内存,并执行。
安装木马阶段
此阶段运行.bin后缀的文件,该文件有触发工具阶段的Dll加载至内存。该文件为自解压解密文件,在解压解密部分的代码中增加了大量的垃圾指令干扰分析。如下图所示:
利用jmp指令打断分析流,如下图列举对比:
解密&解压完成后跳入功能代码部分,具体功能如下:
1、从Kernel32.dll中获取VirtualAlloc、RtlMoveMemory、RtlZeroMemory函数地址;
2、加载加密过的PE文件到内存并对偏移进行修复;
3、调用该文件的入入口函数。
加载的PE文件的功能:
1、使用FindResource等函数提取其资源段中的数据,从中解密出C2地址,注册表地址,以及RC4密钥和一个完整的PE文件,利用xor进行异或解密。
2、对配置文件进行解密;
3、创建名为: 0f000d0005的互斥体;
4、利用当前进程ID,线程ID,处理器数量,系统时间生成一个随机数;
5、获取当前进程的模块名称,获取系统的环境变量等信息;
6、利用GetComputerNameW,GetUserNameW函数获取计算机信息;
7、利用GetTokenInformation或IsUserAnAdmin判断当前进程所属用户权限;
8、读取注册表项中的ProductName、CurrentBuildNumber、CSDVersion等键值,获取系统产品信息,例:Windows 7 Ultimate Service Pack 1 6.1.7601 x86;
9、利用FindFirstVolumeW、QueryDosDeviceW函数查询磁盘信息,例:(C:); (A:); (D:);,以;加空格的形式进行分割;
10、利用WMI接口查询系统信息。例:SELECT SerialNumber FROM Win32_BaseBoard;
此部分利用一些技巧对执行流程进行隐藏:
建立链接阶段
将上述信息加密后,发送给C2服务器,受控端上线。传输逻辑如下:先发送长度信息,再发送等长数据至C2服务器。
可见,该木马与前述攻击链中的木马同属于DenesRAT,通信协议亦相同。
结论
通过对以上三起本年度海莲花攻击事件的分析,我们发现,海莲花组织近期的攻击方式多样,攻击链条复杂,但使用的核心攻击技术与最终木马载荷较为固定。作为本年度海莲花组织使用的主要远控攻击载荷,DenesRAT木马值得被重点关注。结合木马分析结果可以发现,与往年相比,海莲花组织对木马的需求继续上升,在要求其功能的同时还要求有高隐蔽性和高对抗性,多级释放、内存加载、混淆、加密等技术已经成为各攻击链中的常规操作,这对安全厂商的检测能力和安全人员的分析能力提出了更高的要求。
此外,以上攻击链还表明海莲花组织会积极尝试使用各类热门漏洞和攻击技术,将其融入到自己的攻击流程中,来增加自己的打击范围和攻击成功率。
关于伏影实验室
伏影实验室专注于安全威胁研究与监测技术,包括但不限于威胁识别技术,威胁跟踪技术,威胁捕获技术,威胁主体识别技术。研究目标包括:僵尸网络威胁,DDOS对抗,WEB对抗,流行服务系统脆弱利用威胁、身份认证威胁,数字资产威胁,黑色产业威胁 及 新兴威胁。通过掌控现网威胁来识别风险,缓解威胁伤害,为威胁对抗提供决策支撑。
关于绿盟威胁情报中心
绿盟威胁情报中心(NSFOCUS Threat Intelligence center, NTI)是绿盟科技为落实智慧安全2.0战略,促进网络空间安全生态建设和威胁情报应用,增强客户攻防对抗能力而组建的专业性安全研究组织。其依托公司专业的安全团队和强大的安全研究能力,对全球网络安全威胁和态势进行持续观察和分析,以威胁情报的生产、运营、应用等能力及关键技术作为核心研究内容,推出了绿盟威胁情报平台以及一系列集成威胁情报的新一代安全产品,为用户提供可操作的情报数据、专业的情报服务和高效的威胁防护能力,帮助用户更好地了解和应对各类网络威胁。