很久前分析的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
UsbCeip.exe 为携带Symantec(赛门铁克)签名的正常exe文件,原始名为dot1xtra.exe,这是典型的白加黑利用技术,带有效签名的exe运行后会自动加载木马文件rastls.dll。
图:签名信息
图:文件详细信息
rastls.dll模块被加载后,会将宿主exe即UsbCeip.exe 0×401000(默认基址为0×400000)开始的一大片代码修改为无实际作用的滑板指令,并在宿主exe代码段尾部嵌入HOOK指令,使之程序执行流从宿主exe转到rastls.dll模块。
图:无实际作用的滑板指令
图:劫持宿主进程控制权
本次攻击中使用的关键模块文件都加入了大量混淆、花指令,主要是为了干扰分析人员分析其核心代码,例如加解密函数被加混淆、花指令代码膨胀后高达2000多行,被干扰后无法进行静态分析,极大的增加了工作量。且此技术可对抗杀毒引擎的分析检测,具有一定免杀效果。
花指令代码如下所示:
图:花指令
正常代码一般为线性的执行代码,混淆之后的代码则是上跳下跳,使分析人员无法正常进行分析。
混淆后的代码如下所示:
图:代码混淆
rastls.dll会在获取执行权限后加载OUTLFLTR.DAT文件,进行两次解密后得到一段shellcode,随后便跳转到这段的shellcode首部开始执行。
图:读入OUTLFLTR.DAT文件
图:第一次解密密钥
图:第一次解密算法截图
图:第二次解密关键代码
OUTLFLTR.DAT中的shellcode被执行后,会自加载shellcode中存储的一个名为{92BA1818-0119-4F79-874E-E3BF79C355B8}.dll模块,接着执行此dll的导出函数DllEntry。
图:OUTLFLTR.DAT文件解密出的shellcode代码
该dll的主要功能为加载后续的攻击载荷{ A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll,主要的功能并不在此模块之中。此dll模块会从资源中解密出{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll文件,并在内存中自加载此dll,随后执行此dll的导出函数DllEntry。
图: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模块
图:资源解密后数据
木马会根据资源中的保存的C2信息,使用算法生成通信时的上线域名“nnggmpggmeggidggmfggngggmoggnmggmcggmjggjiggmkggjnggmlggmfgg.ijkloghg.carosseda.com”,并通过GetAddrInfoW获取到C2的IP为88.150.227.107、端口号为14146,木马上线后接收控制端发送的指令执行对应的功能。
木马上线时会向C2发送两个数据包,第一个数据包的内容为第二数据包的长度,第二个数据包的内容为加密后的系统用户名、计算机名、操作系统版本等信息。
图:第一个数据包
图:第二个数据包
图:第二个数据包解密结果
创建目录、删除目录
文件搜索、读写、创建、删除文件等操作
获取系统版本信息、主机名、用户名
注册表读写操作
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天前 被暗夜之刃编辑 ,原因: