APT32组织攻击样本分析报告系列-第一篇
2020-05-23 11:36:43 Author: bbs.pediy.com(查看原文) 阅读量:648 收藏

      很久前分析的APT32组织相关的样本,稍微整理下分析相关的材料(包括IDA7.0的idb文件、提取的宏文件、解混淆后的宏文件、调试shellcode代码),发出来给朋友们参考参考。希望能给大家一点点帮助!

      链接: https://pan.baidu.com/s/1OYGdZ9jbH_65LTwDtpiczQ 提取码: ak4q

目 录

1 基本信息

2 攻击流程图

3 病毒母体分析

4 RASTLS.DLL 分析

4.1 白签名利用

4.2 劫持宿主进程控制权

4.3 OUTLFLTR.DAT文件解析

4.4 加载DLL外壳模块

4.5 {92BA1818-0119-4F79-874E-E3BF79C355B8}.DLL分析

4.6 {A96B020F-0000-466F-A96D-A91BBF8EAC96}.DLL 行为分析

4.7 后门通信分析

4.8 后门功能分析

5 技术特点总结

6 IOC

样本MD5

877ecaa43243f6b57745f72278965467

样本名

WinWord.exe

样本文件大小

2,395,648字节

样本类型

后门

样本描述

伪装图标为winword程序,诱骗用户执行后释放并执行白签名利用木马后门。

分析时间

2018年11月

图 样本攻击流程图

此病毒常可能被伪装为WinWord.doc.exe,因windows系统默认不显示后缀名,导致实际显示的后缀名为WinWord.doc,达到欺骗用户的目的。

病毒母体WinWord.exe被执行,首先会在%temp%目录释放执行伪造的欺骗文档WinWord.doc,并且还在C:\Program Files\UsbCeip_3410992958\”目录下释放拥有赛门铁克签名的正常文件UsbCeip.exe、后门木马rastls.dll、被加密的shellcode文件OUTLFLTR.DAT,随后创建名称为“UsbCeip”的计划任务,使后门木马rastls.dll常驻用户电脑,并根据云控指令伺机窃取机密信息或进行下一阶段攻击。                                            

图:病毒母体运行流程图

图:欺骗文档WinWord.doc

4.1  白签名利用

UsbCeip.exe 为携带Symantec(赛门铁克)签名的正常exe文件,原始名为dot1xtra.exe,这是典型的白加黑利用技术,带有效签名的exe运行后会自动加载木马文件rastls.dll。

图:签名信息

图:文件详细信息

4.2  劫持宿主进程控制权

rastls.dll模块被加载后,会将宿主exe即UsbCeip.exe 0×401000(默认基址为0×400000)开始的一大片代码修改为无实际作用的滑板指令,并在宿主exe代码段尾部嵌入HOOK指令,使之程序执行流从宿主exe转到rastls.dll模块。

图:无实际作用的滑板指令

图:劫持宿主进程控制权

4.3  混淆、花指令

本次攻击中使用的关键模块文件都加入了大量混淆、花指令,主要是为了干扰分析人员分析其核心代码,例如加解密函数被加混淆、花指令代码膨胀后高达2000多行,被干扰后无法进行静态分析,极大的增加了工作量。且此技术可对抗杀毒引擎的分析检测,具有一定免杀效果。

花指令代码如下所示:

图:花指令

正常代码一般为线性的执行代码,混淆之后的代码则是上跳下跳,使分析人员无法正常进行分析。

混淆后的代码如下所示:

图:代码混淆

4.4  OUTLFLTR.DAT文件解析

rastls.dll会在获取执行权限后加载OUTLFLTR.DAT文件,进行两次解密后得到一段shellcode,随后便跳转到这段的shellcode首部开始执行。

图:读入OUTLFLTR.DAT文件

图:第一次解密密钥

图:第一次解密算法截图

图:第二次解密关键代码

4.5  加载dll外壳模块

OUTLFLTR.DAT中的shellcode被执行后,会自加载shellcode中存储的一个名为{92BA1818-0119-4F79-874E-E3BF79C355B8}.dll模块,接着执行此dll的导出函数DllEntry。

图:OUTLFLTR.DAT文件解密出的shellcode代码

4.6  {92BA1818-0119-4F79-874E-E3BF79C355B8}.dll分析

该dll的主要功能为加载后续的攻击载荷{ A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll,主要的功能并不在此模块之中。此dll模块会从资源中解密出{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll文件,并在内存中自加载此dll,随后执行此dll的导出函数DllEntry。

图:dll名称

4.7  {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll 行为分析

该dll的为木马的核心功能模块。包括C2的通讯、系统信息采集、文件操作、进程操作、注册表操作等功能的实现代码都保存在此模块之中。该dll的DllEntry(入口函数)执行后,将从模块资源中解密出木马的c2等配置信息及2个通信相关的dll,并且这两个dll名称都为HttpProv.dll。每个通信dll都导出一个”CreateInstance”函数。

图:dll名称

对{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll模块的资源文件解密结果如下:

1.     Unicode字符串,"hijklmnopz"

2.     Unicode字符串,注册表键值"SOFTWARE\App\AppX37cc7fdccd644b4f85f4b22d5a3f105a\Application"

3.     Unicode字符串,注册表键值"SOFTWARE\App\AppX37cc7fdccd644b4f85f4b22d5a3f105a\DefaultIcon"

4.     Unicode字符串,"Data"

5.     Unicode字符串,"abcT"

6.     carosseda.com   C2

7.     ugdale.com   C2

8.     vieoulden.com   C2

9.     两个名称为HttpProv.dll的DLL模块

图:资源解密后数据

4.8  后门通信分析

木马会根据资源中的保存的C2信息,使用算法生成通信时的上线域名“nnggmpggmeggidggmfggngggmoggnmggmcggmjggjiggmkggjnggmlggmfgg.ijkloghg.carosseda.com”,并通过GetAddrInfoW获取到C2的IP为88.150.227.107、端口号为14146,木马上线后接收控制端发送的指令执行对应的功能。

木马上线时会向C2发送两个数据包,第一个数据包的内容为第二数据包的长度,第二个数据包的内容为加密后的系统用户名、计算机名、操作系统版本等信息。

图:第一个数据包

图:第二个数据包

图:第二个数据包解密结果

4.9  后门功能分析

创建目录、删除目录

文件搜索、读写、创建、删除文件等操作

获取系统版本信息、主机名、用户名

注册表读写操作

1.   白签名程序利用;

2.   DLL劫持宿主进程执行权;

3.   大量花指令、混淆代码;

4.   多重保护外壳;

5.   DLL模块内存自加载;

6.   数据双重加密;

7.   DGA(域名生成算法)。

文件:

877ecaa43243f6b57745f72278965467(WinWord.exe)

ddcd8a9e925505a426da53ce8c9ec0e3(rastls.dll)

3041186172b3e314b1ec72e78c931386(OUTLFLTR.DAT)

312a2254b8bf65e4ad8fd928fe7a9301({92BA1818-0119-4F79-874E-E3BF79C355B8}.dll)

0364d85deb831b49b7024ca7402522fb({A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll)

0ad14ff69944992b9780996fa3ef7b32(HttpProv.dll)

6a7690653b48c4ea0899f24b059852c7(HttpProv.dll)

C2:

88.150.227.107:14146

88.150.99.201

88.150.122.191

88.150.118.198

nnggmpggmeggidggmfggngggmoggnmggmcggmjggjiggmkggjnggmlggmfgg.ijkloghg.carosseda.com

carosseda.com

ugdale.com

vieoulden.com

[培训]科锐逆向工程师培训班38期--远程教学预课班将于 2020年5月28日 正式开班!

最后于 4天前 被暗夜之刃编辑 ,原因:


文章来源: https://bbs.pediy.com/thread-259589.htm
如有侵权请联系:admin#unsafe.sh