Shady恶意软件用两个木马双重感染PC
导语:研究人员发现恶意攻击者用 RevengeRAT和WSHRAT同时感染恶意软件。
FortiGuard Labs研究人员近期发现一个恶意软件样本,该样本检测率很低。研究人员手动分析发现该恶意样本是用来释放恶意软件的,而且会释放两个RevengeRAT 和WSHRAT木马。
第一阶段:Launcher/Dropper
打开恶意样本文件,研究人员发现其中含有JS代码,从中可以看到URL编码的数据。解码后,研究人员发现了一些VBS脚本。恶意软件作者在调用函数Chr()时使用简单的字符替换来隐藏真实的字符串(shell.application和cmd /c cd %temp%)。
图 1 – VBScript Code
VBScript代码的目标是:
1.创建新的Shell.Application对象
2.调用ShellExecute()函数,最终会生成一个硬编码文件名为A6p.vbs的新文件
3.执行新创建的脚步文件A6p.vbs
4.暂停CMD命令执行13秒(通过调用timeout.exe程序实现)
5.删除脚本文件A6p.vbs
6.执行下载的脚本文件Microsoft.vbs
7.关闭当前窗口
图 2 – 第一阶段Launcher/Dropper执行
第二阶段: Downloader
A6p.vbs 文件的目的是从外部网站提取资源。代码使用混淆的字符串来绕过检测。恶意软件开发者使用函数H9a来显示这些字符串。这是用来创建对象(MSXML2.XMLHTTP ,ADODB.STREAM)和获取字符串的,比如MICROSOFT.VBS。
脚本分析(MICROSOFT.VBS)
A6p.vbs 脚步执行后,会从远程服务器下载脚本文件Microsoft.vbs。
该文件被保存为%TEMP%文件夹的MICROSOFT.VBS文件。VB脚本代码是有主类th3m41n组成的,使用了3个方法,分别是“dugh41r”, “t01l3t”, “b3st1n”。 MICROSOFT.VBS代码的目的是重构基于XML的结构,通过调用Microsoft.XMLDOM 对象创建,并通过不同类方法中间的解码层来传递对象,最后通过调用VBScript的 “ExecuteGlobal()”函数来执行base64编码的数据。
图 3 –Downloader脚本(A6p.vbs)
图 4 – MICROSOFT.VBS和编码的Base64数据
脚本分析(MICROSOFT.VBS – 解码的Base64数据)
该脚本使用2个函数writeBytes() 和 decodebase64() 。writeBytes()是用来创建ADODB.Stream对象来将二进制文件写入给定文件,decodebase64()是用来创建Microsoft.XMLDOM对象来创建临时XML元素来保存base64编码的数据,然后解码。
图 5 – writeBytes()和decodebase64() 函数
其中数据所有者有2个本地变量,分别是longText1和H。longText1含有base64编码的VB脚本数据,因为base64数据与下载的文件不同,是MICROSOFT.VBS的一个副本。变量H含有.NET可执行文件的数据。而且很明显恶意软件作者加入了一些垃圾代码尝试阻碍分析的过程。
前面的代码执行后,就会创建一个新的对象,并收集操作系统环境和硬编码的数据,最终通过调用VB脚本翻译器和参数//B来运行新创建的脚本GXxdZDvzyH.vbs。
启用batch-mode和禁用执行过程中可能会产生的警告信息。
图6 GXxdZDvzyH.vbs生成和执行
在脚本执行过程中,Windows注册表HKCU\Microsoft \Software\Microsoft中会加入一个新的key——microsoft,用来保存伪造的base64编码的数据。该数据之后会用一个PowerShell命令来固定,脚本会在用0替换了@ 后结束。
图 7 – 伪造的base64数据
执行Revenge RAT 和驻留
脚本会调用大量PowerShell命令来绕过翻译器的执行策略和隐藏其行踪,绕过-ExecutionPolicy Bypass -windowstyle hidden -noexit -Command参数。
下表说明了脚本来执行过程中传递给PowerShell翻译器的命令行参数,以及每个参数的目的:
连接到C2服务器
如前所述,会创建一个新的线程,并加载和执行一个.NET Assembly。研究任意从Windows注册表中复制到可执行文件中来提供更好的payload。下图是可执行文件exe的基本信息。
图 8 – 释放的exe文件的基本信息
当样本在.NET调试器中执行后,发现代码并没有像其他恶意软件那样使用混淆后的代码。相反,代码非常清楚和简单。
RAT运行后,会连接2个C2服务器,其IP地址和端口在主类的构造函数中已经分配了。IP 地址为193.56.28.134和185.84.181.102,端口号为5478。下面是类构造函数的一个截图,其中初始化了多个变量,包含C2 IP地址和端口:
图 9 – C2服务器IP地址和端口号
研究人员开始分析恶意软件时,2个C2服务器就down了。但恶意软件开始尝试连接到2个IP地址除非一个连接被建立。所以为了继续分析该恶意软件,研究人员必须安装一个伪造的C2服务器。为此,研究人员将C2服务器IP地址修改为127.0.0.1。
图 10 –C2服务器修改IP地址
报告收集的信息
到C2服务器的连接建立后,就会从受害者系统收集信息并发送给服务器。研究人员分析发现,受害者和服务器之间的每个包都包含多个部分,magic字符串命令、与命令相关的数据域、分隔符、magic字符串结束符。
InformationachillepowerSG91c2U=achillepowerXzU4MUYxMDkzachillepower10.0.2.15achillepowerTTBZ VEVTMEVOVi1QQyAvIE0wWVRlczBFbnY=achillepowerNoachillepowerTWljcm9zb2Z0IFdpbmRvd3MgNyB VbHRpbWF0ZSAgMzI=achillepowerSW50ZWwoUikgQ29yZShUTSkgaTctNjcwMCBDUFUgQCAzLjQwR0h6 achillepower3757629440achillepowerTWljcm9zb2Z0IFNlY3VyaXR5IEVzc2VudGlhbHM=achillepowerTi9B achillepower5478achillepowerZG5TcHkgdjYuMC40ICgzMi1iaXQsIC5ORVQgQ29yZSwgRGVidWdnaW5nK Q==achillepowerZW4tVVM=achillepowerFalse*-]NK[-*
C2
在 .Net代码中研究人员发现一个名为this.data()的线程函数,负责处理所有接收到的C2命令。分析该函数,研究人员发现了多个命令magic字符串,如“PNC”, “P”, “IE”, “LP”, “UNV”。
PNC命令就像一个心跳,恶意软件只发送回了PNC。
P命令要求恶意软件来收集受害者的窗口title。
IE和LP命令要求恶意软件用包中给定的值来操作系统注册表。
UNV命令包中含有一个base64编码的gzip流,是由恶意ASM代码的一部分组成的。通过该命令,攻击者可以发送恶意ASM代码到恶意软件,并获取内存中执行的代码。下面的截图是一个处理UNV命令的代码段,并比较命令字符串和base64解码,gzip流解压缩,以及加载ASM代码到内存的this.LA()函数中。然后,ASM代码在调用CreateInstance() API创建的对象中执行。
图 11 – 处理UNV命令的代码段
执行WSH RAT和驻留
脚本分析(GXxdZDvzyH.VBS)
在感染的第二阶段,脚本也会执行,恶意软件作者借用了GXxdZDvzyH.vbs脚本中的MICROSOFT.VBS代码,但不同的payload是用base64编码的。因为代码之前已经分析过了,因此本文只关注隐藏在编码数据中的脚本。
图 12 –Microsoft.vbs和 GXxdZDvzyH.vbs脚本的差异
脚本分析(GXxdZDvzyH.VBS – 解码的BASE-64)
新脚本是WSH RAT的v1.6。代码表明一共有29个函数执行不同的任务,包括驻留、窃取的数据处理等。
脚本执行后,会通过函数调用来执行安全检测以验证当前用户的权限,根据使用的权限,会进行权限提升到更高的用户权限(startupElevate())。此外,会执行第二个安全检查来禁用当前安全环境(disableSecurity())。
图 13 – 安全检查的代码
WSH RAT的版本关注于从主流的浏览器中窃取信息。WSH RAT也有很多的特征,研究人员关注最重要的几个,尤其是当前样本中触发的那些。
脚本会生成含有与受感染计算机相关的信息的伪造的HTTP请求,并使用User-Agent: header作为一种窃取信息的机制。
Information()函数执行取回的信息有:
图 14 – HTTP POST请求和User-Agent数据
下表表明User-Agent Header中使用了数据格式,以及脚本收集的数据的描述。
为了实现驻留,WSH RAT在Windows注册表中添加新的数据,并在Windows开始菜单文件夹(“%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup”)中加入一个留一个副本。
图 15 – 添加值作为开始菜单应用
WSH RAT一共使用了26个命令,所有的命令都是可以根据名字看出其具体的作用,如下所示:
"disconnect", "reboot", "shutdown", "excecute", "install-sdk", "get-pass", "get-pass-offline", "update", "uninstall", "up-n-exec", "bring-log", "down-n-exec", "filemanager", "rdp", "keylogger", "offline-keylogger", "browse-logs", "cmd-shell", "get-processes", "disable-uac", "check-eligible", "force-eligible", "elevate", "if-elevate", "kill-process", "sleep"。
发表评论