购物车

您的购物车目前是空的

商品分类
  1. 嘶货 首页
  2. 企业动态

Shady恶意软件用两个木马双重感染PC

FortiGuard Labs研究人员近期发现一个恶意软件样本,该样本检测率很低。研究人员手动分析发现该恶意样本是用来释放恶意软件的,而且会释放两个RevengeRAT 和WSHRAT木马。

第一阶段:Launcher/Dropper

打开恶意样本文件,研究人员发现其中含有JS代码,从中可以看到URL编码的数据。解码后,研究人员发现了一些VBS脚本。恶意软件作者在调用函数Chr()时使用简单的字符替换来隐藏真实的字符串(shell.application和cmd /c cd %temp%)。

Figure 1 â VBScript Code

图 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.关闭当前窗口

Figure 2 â 1st Stage Launcher/Dropper Execution

图 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编码的数据。

Figure 3 âDownloader Script (A6p.vbs)

图 3 –Downloader脚本(A6p.vbs)

Figure 4 â MICROSOFT.VBS and its decoded Base64 data

图 4 – MICROSOFT.VBS和编码的Base64数据

脚本分析(MICROSOFT.VBS – 解码的Base64数据)

该脚本使用2个函数writeBytes() 和  decodebase64() 。writeBytes()是用来创建ADODB.Stream对象来将二进制文件写入给定文件,decodebase64()是用来创建Microsoft.XMLDOM对象来创建临时XML元素来保存base64编码的数据,然后解码。

Figure 5 â writeBytes() and decodebase64() functions

图 5 – writeBytes()和decodebase64() 函数

其中数据所有者有2个本地变量,分别是longText1和H。longText1含有base64编码的VB脚本数据,因为base64数据与下载的文件不同,是MICROSOFT.VBS的一个副本。变量H含有.NET可执行文件的数据。而且很明显恶意软件作者加入了一些垃圾代码尝试阻碍分析的过程。

前面的代码执行后,就会创建一个新的对象,并收集操作系统环境和硬编码的数据,最终通过调用VB脚本翻译器和参数//B来运行新创建的脚本GXxdZDvzyH.vbs。

启用batch-mode和禁用执行过程中可能会产生的警告信息。

Figure 6 â GXxdZDvzyH.vbs generation and execution

图6 GXxdZDvzyH.vbs生成和执行

在脚本执行过程中,Windows注册表HKCU\Microsoft \Software\Microsoft中会加入一个新的key——microsoft,用来保存伪造的base64编码的数据。该数据之后会用一个PowerShell命令来固定,脚本会在用0替换了@ 后结束。

Figure 7 â Malformed base64 data

图 7 – 伪造的base64数据

执行Revenge RAT 和驻留

脚本会调用大量PowerShell命令来绕过翻译器的执行策略和隐藏其行踪,绕过-ExecutionPolicy Bypass -windowstyle hidden -noexit -Command参数。

下表说明了脚本来执行过程中传递给PowerShell翻译器的命令行参数,以及每个参数的目的:

revenge-rat-table

连接到C2服务器

如前所述,会创建一个新的线程,并加载和执行一个.NET Assembly。研究任意从Windows注册表中复制到可执行文件中来提供更好的payload。下图是可执行文件exe的基本信息。

Figure 8 - Dropped exe fileâs basic information

图 8 – 释放的exe文件的基本信息

当样本在.NET调试器中执行后,发现代码并没有像其他恶意软件那样使用混淆后的代码。相反,代码非常清楚和简单。

RAT运行后,会连接2个C2服务器,其IP地址和端口在主类的构造函数中已经分配了。IP 地址为193.56.28.134和185.84.181.102,端口号为5478。下面是类构造函数的一个截图,其中初始化了多个变量,包含C2 IP地址和端口:

Figure 9 - C&C serverâs IP address and port number

图 9 – C2服务器IP地址和端口号

研究人员开始分析恶意软件时,2个C2服务器就down了。但恶意软件开始尝试连接到2个IP地址除非一个连接被建立。所以为了继续分析该恶意软件,研究人员必须安装一个伪造的C2服务器。为此,研究人员将C2服务器IP地址修改为127.0.0.1。

Figure 10 â The C&C serverâs changed IP address

图 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创建的对象中执行。

Figure 11 - Code snippet of processing âUNVâ command

图 11 – 处理UNV命令的代码段

执行WSH RAT和驻留

脚本分析(GXxdZDvzyH.VBS)

在感染的第二阶段,脚本也会执行,恶意软件作者借用了GXxdZDvzyH.vbs脚本中的MICROSOFT.VBS代码,但不同的payload是用base64编码的。因为代码之前已经分析过了,因此本文只关注隐藏在编码数据中的脚本。

Figure 12 â Diff between Microsoft.vbs and GXxdZDvzyH.vbs scripts

 

图 12 –Microsoft.vbs和 GXxdZDvzyH.vbs脚本的差异

脚本分析(GXxdZDvzyH.VBS – 解码的BASE-64)

新脚本是WSH RAT的v1.6。代码表明一共有29个函数执行不同的任务,包括驻留、窃取的数据处理等。

脚本执行后,会通过函数调用来执行安全检测以验证当前用户的权限,根据使用的权限,会进行权限提升到更高的用户权限(startupElevate())。此外,会执行第二个安全检查来禁用当前安全环境(disableSecurity())。

Figure 13 â Security check code

图 13 – 安全检查的代码

WSH RAT的版本关注于从主流的浏览器中窃取信息。WSH RAT也有很多的特征,研究人员关注最重要的几个,尤其是当前样本中触发的那些。

脚本会生成含有与受感染计算机相关的信息的伪造的HTTP请求,并使用User-Agent: header作为一种窃取信息的机制。

Information()函数执行取回的信息有:

Figure 14 â HTTP POST Request and User-Agent data

图 14 – HTTP POST请求和User-Agent数据

下表表明User-Agent Header中使用了数据格式,以及脚本收集的数据的描述。

table RevengeRAT

为了实现驻留,WSH RAT在Windows注册表中添加新的数据,并在Windows开始菜单文件夹(“%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup”)中加入一个留一个副本。

Figure 15 â Added value as Startup application

 

图 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"。


联系我们

010-62029792

在线咨询: 点击这里给我发消息

电子邮箱:info@4hou.com

工作时间:09:00 ~ 18:00