返回 TI 主页

概述

近日,奇安信红雨滴团队在日常样本狩猎过程中捕获到一批使用了与海莲花(OceanLotus)APT组织相似代码混淆方法的攻击样本。此类样本借助Word程序的DLL侧加载执行恶意代码,代码混淆也采用了海莲花组织曾使用过的方法。基于上述相似性,一些安全研究者在这些样本上传到VT后将其归属于海莲花组织。经过红雨滴团队研究人员的研判分析,这些样本具体的攻击流程与海莲花过往活动使用的攻击手法存在明显差异,与海莲花的关联性较弱,暂不能归属到任何APT攻击团伙。

鉴于该类攻击样本所用混淆方法比较典型,且样本攻击流程具有一些独有特征,本文将对样本代码去混淆过程和样本采用的攻击手法做个记录。本次捕获的攻击样本具有如下特点:

  1. 恶意DLL和释放的后续组件使用相同的代码混淆方法干扰分析;

  2. 通过Glitch平台托管C2服务程序;

  3. 释放的组件配合工作从C2服务器下载后续载荷并释放执行。


样本信息

样本信息如下

- -
MD5 文件类型
079af508cee29a0dd09d9dace2b7ac38 RAR
1dbd3e88bc5cb77a7401cb49b44f554e DLL
ed77d96226a262a4cac4807e4355257a DLL
ec44a1e0f5af1c4bd3f308ff1b3fc879 DLL

其中RAR文件中包含恶意DLL和加载DLL的白文件WinWord程序,上面几个DLL具有相似的功能。

样本执行流程如下


混淆与去混淆


混淆方法

样本中采用的混淆方法如下所示,通过cmp/test指令比较数据段指定位置的数据和立即数,后面跟条件跳转指令。海莲花在过往攻击活动中曾使用过该方法混淆代码。在插入大量此类混淆指令后,样本的控制流结构将变得错综复杂,导致静态分析工具(如IDA)无法正常分析代码。


去混淆

由于该混淆方法cmp/test指令比较的两个数据都是已知的,因此我们可以事先得知条件跳转指令是否执行,进而patch掉混淆指令:

(1) 如果条件跳转指令执行,直接将cmp/test + 条件跳转指令替换为jmp指令;

(2) 如果条件跳转指令不执行,则将cmp/test + 条件跳转指令用nop指令替换。

用脚本实现去混淆首先需要解决的问题是如何定位混淆指令所在的位置。文章[1]提供了解决该问题的思路。因为cmp/test指令的第一个操作数表示内存地址,所以重定位表中会记录这些操作数在指令段的具体位置以便于DLL加载进内存后执行重定位操作时进行修正。遍历重定位表中记录的位置信息,通过比对该位置前后数据与混淆指令的特征,便可以确定该位置是否对应混淆指令中cmp/test的第一个操作数,进而可以确定混淆指令所在的位置。

文章[1]在去混淆时将所有混淆指令都处理为jmp指令,而此次捕获的攻击样本混淆指令中的条件跳转不一定会执行。为了得知条件跳转指令的结果,可以借助unicorn或angr等框架模拟执行对应的cmp/test + 条件跳转指令。最后再根据执行结果选择具体的patch方式。

综上,针对该混淆方法进行自动化去混淆的过程如下:

(1) 通过重定位表和指令特征定位混淆指令所在位置;

(2) 模拟执行混淆指令涉及的cmp/test + 条件跳转指令;

(3) 根据模拟执行结果对混淆指令进行patch。

以样本1dbd3e88bc5cb77a7401cb49b44f554e为例,去混淆结果如下所示。


详细分析

以样本079af508cee29a0dd09d9dace2b7ac38为例进行分析。

- -
文件名 CTM – Escrow Contract Agreement.rar
MD5 079af508cee29a0dd09d9dace2b7ac38
文件类型 RAR

RAR中包含一个与RAR同名的exe和一个dll,exe为带有微软数字签名的WinWord.exe,MSVCR100.dll携带恶意代码,负责释放诱饵文档和后续组件。

运行exe后,会展示诱饵文档,文档中没有具体内容,只是一段表示文档出错的文字信息,用以迷惑受害者。


MSVCR100.dll

- -
文件名 MSVCR100.dll
MD5 1dbd3e88bc5cb77a7401cb49b44f554e
文件类型 Win32 DLL
文件大小 1921024字节

该dll文件为dropper,主要功能为释放内嵌的3个PE文件和作为诱饵文档的docx文件。

当exe运行后,同目录下的MSVCR100.dll被加载进内存,并执行导出函数_initterm_e。首先创建目录” C:\\ProgramData\\MicrosoftMessenge\\”用于保存后续释放的组件。

将exe文件和dll属性设为隐藏。

在exe同目录下释放dll中嵌入的docx诱饵文档并打开

然后在目录” C:\\ProgramData\\MicrosoftMessenge\\”下依次创建3个子目录,子目录名字从dll中获取,分别为4keanigb, bpvefocc, cyk33yqh。每创建一个子目录,先将当前exe(即WinWord.exe)复制一份到该子目录中,复制后的文件名字与子目录名字相同,然后再向子目录中释放各自对应的dll文件,这些dll文件均通过同一目录下的WinWord.exe的DLL侧加载启动。

最后通过COM对象设置定时任务,定时任务名称为”MS Messenge”,启动程序为复制到bpvefocc目录下的WinWord程序。


bpvefocc目录组件

- -
文件名 MSVCR100.dll
MD5 7ccae006a305efeff74b9be596abbb56
文件类型 Win32 DLL
文件大小 41779字节

释放到bpvefocc目录下的dll主要功能为启动其他子目录下的组件。具体启动过程如下。首先获取加载该dll的exe路径,找到exe所在目录的父目录,即"C:\\ProgramData\\MicrosoftMessenge\\"。同时获取当前所有进程名字。遍历父目录下的每个子目录,在每个子目录下发现的第一个exe文件如果不在收集的进程名字列表中,就调用CreateProcessW启动。


4keanigb目录组件

- -
文件名 MSVCR100.dll
MD5 c7b6c3eedb55f4f2170ece002c45091c
文件类型 Win32 DLL
文件大小 632320字节

释放到4keanigb目录下的dll首先收集信息,包括system目录、设备硬件信息、计算机名、用户名、Program Files和Program Files (x86)目录下的所有文件和子目录名称。

收集的信息再经加密处理后再通过base64编码作为POST请求的数据回传给C2服务器。回传URL为hxxps://gifted-boulder-transport.glitch.me/HrwQA1。

值得注意的是,请求中的User-Agent涉及的浏览器版本信息(Chrome/88.0.4324.182, Edg/88.0.100.0)表明此类样本是从今年开始发起攻击。

此外, URL中的域名表明C2服务程序托管于Glitch平台,域名为平台生成的随机域名,由三个英文单词组成,攻击者通过这种公共的网络应用发布平台隐藏自己的身份。

发送完信息后,该组件会休眠360秒,等待cyk33yqh目录组件的组件从C2下载7z格式压缩的后续载荷。休眠结束后查找父目录("C:\\ProgramData\\MicrosoftMessenge\\")中保存的7z格式文件,将其解压并执行后续操作。


cyk33yqh目录组件

- -
文件名 MSVCR100.dll
MD5 fed42946a526d3985e3d03b9b9d71b7b
文件类型 Win32 DLL
文件大小 459264字节

释放到cyk33yqh目录下的dll主要功能为从C2下载7z格式压缩的后续载荷。该组件首先休眠300秒,等待4keanigb目录下组件完成回传信息操作,然后从hxxps://gifted-boulder-transport.glitch.me/Zqw4D2下载后续,将其保存为父目录("C:\\ProgramData\\MicrosoftMessenge\\")下的7z格式文件“oisothda.7z”,用于4keanigb目录下组件进一步处理。

由于分析时C2已经失效,故无法获得下载的后续进行更进一步的分析。


总结

此次捕获到的攻击样本虽然采用了海莲花组织曾使用过的代码混淆手法,但诱饵文档没有具体内容、释放的组件在dropper文件中没经过加密,且攻击流程也与海莲花的过往活动有所不同,经研判分析,此类攻击样本与海莲花有较弱的关联性。

此次攻击活动暂未发现国内用户受影响,但防范之心不可无。奇安信红雨滴团队提醒广大用户,切勿打开社交媒体分享的来历不明的链接,不点击执行未知来源的邮件附件,不运行标题夸张的未知文件,不安装非正规途径来源的APP。做到及时备份重要文件,更新安装补丁。

若需运行,安装来历不明的应用,可先通过奇安信威胁情报文件深度分析平台(https://sandbox.ti.qianxin.com/sandbox/page)进行判别。目前已支持包括Windows、安卓平台在内的多种格式文件深度分析。

目前,基于奇安信威胁情报中心的威胁情报数据的全线产品,包括奇安信威胁情报平台(TIP)、天擎、天眼高级威胁检测系统、奇安信NGSOC、奇安信态势感知等,都已经支持对此类攻击的精确检测。


IOCs

MD5

079af508cee29a0dd09d9dace2b7ac38

1dbd3e88bc5cb77a7401cb49b44f554e

7ccae006a305efeff74b9be596abbb56

fed42946a526d3985e3d03b9b9d71b7b

c7b6c3eedb55f4f2170ece002c45091c

ed77d96226a262a4cac4807e4355257a

aa792a76817968f2731eaeb325b70546

3f5d27a867d30f922bc07d03eb8d2bda

d40bca7bd450e3cf4b825044f57b4b9d

ec44a1e0f5af1c4bd3f308ff1b3fc879

b9238fd15f659837a8ae7764d4fcdfc1

23123badbfe3f18420d434d9c979788b

134fa927d2a49f9ab2a557cf31f0b4d8

URL

hxxps://gifted-boulder-transport.glitch.me/HrwQA1

hxxps://gifted-boulder-transport.glitch.me/Zqw4D2

hxxps://river-cliff-crate.glitch.me/T713P

hxxps://river-cliff-crate.glitch.me/T713D

hxxps://cooperative-supreme-pisces.glitch.me/T713P

hxxps://cooperative-supreme-pisces.glitch.me/T713D


参考链接

[1]. https://blog.viettelcybersecurity.com/apt32-deobfuscation-arsenal-deobfuscating-mot-vai-loai-obfucation-toolkit-cua-apt32-phan-2/

APT