Ocean Lotus样本分析
0x00样本简介
该样本是2018年5月份国内某安全厂商威胁情报系统捕获的一起针对中国及其他东亚地区国家政府、科研单位领域的攻击样本,该APT组织确认为APT-32(海莲花OceanLotus)。
此次攻击载体选用的是.doc后缀的rtf文件,该rtf文件通过利用漏洞CVE-2017-11882释放恶意文件到本地并加载执行。其释放文件利用了白加黑的组合加载手法逃避杀软的查杀,在运行过程中并无我们常见的多级注入行为,也并没有文件落地,具有较强的隐蔽性。原始样本信息如表1所示。
文件名称 | Document_GPI Invitation-UNSOOC China.doc |
---|---|
Md5 | 02ae075da4fb2a6d38ce06f8f40e397e |
文件类型 | Rtf |
0x01攻击流程
该样本首先通过利用Office公式编辑器模块在解析公式名时候出现的栈溢出漏洞CVE-2017-11882释放三个文件(MicrosoftWindowsDiskDiagnosticResolver.exe,rastls.dll和OUTLFLTR.DAT)到本地临时目录,然后执行释放的PE文件。MicrosoftWindowsDiskDiagnosticResolver.exe是一个拥有合法签名的PE文件,该PE文件运行期间会加载rastls.dll(注意系统目录下也有一个同名DLL)。rastls.dll模块DllMain会将宿主PE的代码段内容进行CSP加密混淆,并且会hook代码段后续一个位置,劫持EIP至DLL里面的函数,继而加载OUTLFLTR.DAT。然后从OUTLFLTR.DAT解密出shellcode1,跳转执行shellcode1.后续将.DAT文件解密变形出多个DLL文件,这些内存中的DLL文件将导入网络功能、注册表功能等所需的系统资源DLL。最终将执行其窃密、远控等恶意功能。其运行流程如下图所示。
0x02详细分析
漏洞部分该报告不分析,我们直接分析其释放文件。
MicrosoftWindowsDiskDiagnosticResolver.exe是一个白签名文件(如图2所示),我们从rastls.dll着手分析。调试器挂载MicrosoftWindowsDiskDiagnosticResolver.exe,跟进rastls.dll模块,结合IDA反汇编可以快速跟踪到对宿主代码段加密部分(图3)。
然后修改0x40c19b处的代码为call sub_6e771ed0。
sub_6e771ed0是rastls.dll中的函数,IDA可观察到明显的文件操作行为。
在sub_6e771ed0内部下断或下断文件操作相关API,可跟踪到程序调用CreateFileW加载OUTLFLTR.DAT文件(图6)
随后将在OUTLFLTR.DAT文件中提取处指定位置资源解析出相应的shellcode1(图7),并跳转执行shellcode(图8)。
Shellcode1中继续从提取的资源中解密出第一个动态链接库文件,名为{92BA1818-0119-4F79-874E-E3BF79C355B8}.dll。跳转到经PE解析得到的该DLL的OEP位置。DLLMain函数并无特殊功能,其提供的大量局部函数片段将服务shellocde。
此时我们Dump出修复之后的DLL文件(可对VirtualProtect下断快速找到堆区的DLL文件)。修改Dump文件的文件对齐即各区段偏移之后,直接IDA反汇编以辅助我们动态跟踪。
执行完{92BA1818-0119-4F79-874E-E3BF79C355B8}.dll DllEntry之后,返回至shellcode1,后续将调用{92BA1818-0119-4F79-874E-E3BF79C355B8}.dll中的构造好的代码片段寻找第二个DLL资源。
找到第二个DLL之后,程序流会解密出第二段shellcode2,跳转执行shellcode2,然后修复找到的DLL,跳转到新的DLL OEP。
{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll与第一个DLL类似,其DllEntry无特别作用,但是它提供了针对源资源的解密方法,后续的程序流程中将调用揭秘方法解密出敏感信息(如网络相关的CC)。此外该DLL将会继续解密提取出三个网络相关的动态链接库文件。
继续解密修复第三个DLL资源。
HttpProv.dll提供了一个重要的导出函数CreateInstance。
解密出第四个DLL资源。
设置图标资源相关的注册表值选用REG_OPTION_NON_VOLATILE方式,即只在内存中有效,无实际注册表修改。猜测这应该也是一种隐蔽自身的手段。
解密出最后一个DLL资源。
解密出的这些DLL文件在其初始化过程中将会载入网络模块相关系统资源,然后将进行本地数据上传、远程CC连接等行为。
0x03 IOC
网络C2
回连域名 | andreagahuvrauvin.comstraliaenollma.xyzbyronorenstein.com |
---|---|
释放文件及中间件哈希
文件名 | MD5 |
---|---|
MicrosoftWindowsDiskDiagnosticResolver.exe | 62944e26b36b1dcace429ae26ba66164 |
OUTLFLTR.DAT | b10f93cdbcdf43d4c5c5770872e239f4 |
rastls.dll | f775cc387a55831386e44dd00ef9723e |
{92BA1818-0119-4F79-874E-E3BF79C355B8}.dll | 93b6996fe1f5a91400b76f4a56f56a0c |
{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll | 76a4d8da378ad191e3d93d210c217e59 |
HttpProv.dll | b8df4f077f900878871dddea14774bc5 |
DnsProvider.dll | a5ad1094870ffaa5129b51a840d497cd |
HttpProv.dll | c2941048fa90d98147e8f0790b708657 |
0x04总结
此次捕获的由APT组织海莲花针对我国发起的攻击活动的高危情报,该样本选用伪装成doc文件的RTF文档作为攻击载体,利用了常见的栈溢出漏洞CVE-2017-11882,当用户打开后缀为.doc的文档时,若没有更新该漏洞补丁则会触发漏洞释放内嵌的资源文件到本地。释放文件采用了白利用技术绕过常规杀软检测,在木马运行过程中无文件落地并且也没有进行常规木马的可信进程注入行为。解析的shellcode存在较多的加密混淆操作,后续的窃密远控行为分为多线程执行,其执行流程在内存中解密出的多模块间跳转,这些操作一定程度上加大了逆向分析难度。总结来说,该样本具有较强的隐蔽性,较高的稳定性,其蓄谋攻击可见一斑。
- 标题: Ocean Lotus样本分析
- 作者: xiaoeryu
- 创建于 : 2021-05-24 15:51:57
- 更新于 : 2022-11-14 22:15:42
- 链接: https://github.com/xiaoeryu/2021/05/24/Ocean-Lotus样本分析/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。