Salim Bitam

攻击链导致 XWORM 和 AGENTTESLA

我们的团队最近观察到一个新的恶意软件活动,该活动采用了经过精心设计的、包含多个阶段的流程。该活动旨在诱骗毫无戒心的用户点击看似合法的文档。

阅读时间:10 分钟攻击模式恶意软件分析
Attack chain leads to XWORM and AGENTTESLA

关键要点

  • 威胁参与者正在使用他们自己定制的 .NET 加载程序部署已知的恶意软件
  • 威胁参与者采用了简单且众所周知的策略,例如通过修补绕过 AMSI 和使用基本的自定义 .NET 加载程序
  • 威胁参与者正在滥用合法的免费文件托管服务

前言

我们的团队最近观察到一个新的恶意软件活动,该活动采用了经过精心设计的、包含多个阶段的流程。该活动旨在诱骗毫无戒心的用户点击看似合法的文档,但实际上这些文档是伪造的。攻击者利用武器化的 Word 文档执行恶意 PowerShell 脚本,并使用自定义混淆的 .NET 加载程序加载各种恶意软件,包括 XWORM 和 AGENTTESLA。

RTF 加载程序代码分析

概述

在最近的一次调查中,我们发现了一个名为 Card & Booking Details.docx 的恶意 Word 文档。此文档旨在欺骗受害者,其中包含两份伪造的扫描文档,即信用卡和护照。

打开文档后,将提取托管在 www.mediafire[.]com/file/79jzbqigitjp2v2/p2.rtf 上的 RTF 对象。

此 RTF 对象包含一个启用宏的 Excel 对象。打开后,此宏将下载一个混淆的 PowerShell 脚本,该脚本又会部署不同的恶意软件家族。

在撰写本文时,我们已经观察到两个不同的恶意软件家族,即 XWORM 和 AGENTTESLA,已通过此执行链部署。上述两个恶意软件家族都由相同的自定义 .NET 加载程序加载到受感染系统的内存中。加载后,恶意有效负载可以执行一系列功能,例如窃取敏感数据和在受感染系统上执行命令。

在这篇研究文章中,我们将逐步介绍恶意软件的初始执行过程,并详细介绍我们发现的功能。

提取恶意 VBA

RTF 文档包含多个嵌入对象,其中一个有趣的对象引起了我们的注意:Excel.SheetMacroEnabled

我们可以使用 Didier Stevens 开发的用于分析 RTF 文件的脚本 rtfdumpy.py 来转储对象,并使用 Philippe Lagadec 开发的脚本 olevba.pyOLE 对象中提取任何嵌入的 VBA 脚本。下面显示的提取的 VBA 脚本从 https://www.mediafire[.]com/file/xnqxmqlcj51501d/7000m.txt/file 下载并执行恶意 PowerShell 脚本。

PowerShell 脚本分析

恶意 PowerShell 脚本使用字符串替换进行混淆,以逃避检测并使分析更加困难。

它包含十六进制格式的附加 PowerShell 脚本块,这些脚本块将在受感染的计算机上部署,旨在通过设置持久性、绕过 AMSI、禁用 Windows Defender 和创建更新恶意软件的机制来准备环境。最终目标是安装两个 .NET 二进制文件,即加载程序和有效负载(XWORM/AGENTTESLA)。

删除恶意文档

恶意软件首先删除原始 Word 文档,首先终止进程 Winword.exe,然后删除位于每个用户的默认 DownloadsDesktop 文件夹中的所有 .DOCX 文件。此初始步骤显示了恶意软件的破坏性,以及它如何潜在地损害用户的数据。

持久性

恶意软件在路径 C:\ProgramData\MinMinons 中创建一个目录,用于存储其他 PowerShell 脚本和二进制文件。然后将当前运行的 PowerShell 脚本复制到 C:\ProgramData\MinMinons\Candlegraphy.\_\_\_

接下来,恶意软件会对第一个嵌入式 PowerShell 脚本进行去混淆处理,该脚本用于创建持久性。它首先编写一个 JScript 文件,该文件通过 ActiveXObject shell 调用保存在 C:\ProgramData\MinMinons\Candlegraphy.\_\_\_ 中的原始 PowerShell 脚本,然后创建一个名为“MOperaChrome”的计划任务,使用 Microsoft 签名的 Windows 脚本宿主 (WSH) 实用程序 wscript.exe 运行 JScript 文件。

绕过 AMSI

第二个嵌入式 PowerShell 脚本负责通过修补 amsiInitFailed 标志来绕过 AMSI。这样做会使 AMSI 的初始化失败,从而阻止为正在进行的进程启动任何扫描。此外,PowerShell 脚本继续禁用 Microsoft Windows Defender 服务。

用户创建

该脚本创建一个名为“System32”的本地管理员帐户,并将其添加到远程桌面用户组。这使攻击者能够通过远程桌面协议 (RDP) 登录。接下来,该脚本禁用机器的防火墙,以允许不受边缘控制过滤的入站 RDP 连接尝试。

恶意软件更新持久性

第三个嵌入式脚本存储一个辅助 JScript 文件,其目的是下载修订版或更新版本的恶意软件。此文件保存到预定位置 C:\ProgramData\MinMinons\miguan.js。此外,还创建了一个名为 (“miguaned”) 的计划任务,用于通过 wscript.exe 执行 JScript 文件,类似于前面描述的任务。

JScript 通过使用以下 CLSID {F935DC22-1CF0-11D0-ADB9-00C04FD58A0B} 调用 ActiveXObject 来创建 WScript.Shell 对象的实例,该 CLSID 对应于 Shell 对象,然后从 URL https://billielishhui.blogspot[.]com/atom.xml 下载更新的 PowerShell 恶意软件。

.NET 加载程序

自定义 DOTNET 加载程序使用 P/INVOKE 技术 调用本机 Windows API 并通过 进程空壳 将有效负载注入到签名的 Microsoft 二进制文件中。

加载程序的代码采用了各种混淆技术来阻碍分析,包括使用死指令、重命名的符号以使代码更难阅读和更混乱以及编码的字符串。幸运的是,像 de4dot 这样的工具可以用来输出其人类可读的版本。

恶意软件利用 LoadLibraryGetProcAddress API 来访问所需的 Windows API。为了隐藏这些 API 的名称,加载程序将它们以编码格式存储在二进制文件中,使用一系列替换和字符串反转方法。

然后,加载程序使用 CreateProcessA API 在挂起状态下启动一个进程。以下是它用作其恶意代码主机的可执行文件列表:

  • C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegSvcs.exe
  • C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe
  • C:\Windows\Microsoft.NET\Framework\v3.5\Msbuild.exe

这些二进制文件已签名并受系统信任,可以避开依赖于白名单系统进程的安全软件的检测。然后,它使用 Zwunmapviewofsection 取消映射目标进程的内存,将有效载荷写入挂起的进程,然后使用 ResumeThread API 恢复线程。

最终有效载荷

在我们的研究中,我们发现威胁参与者一直在部署不同的有效载荷。具体来说,我们观察到两个家族:XWORM 和 AGENTTESLA。

XWORM 因其能够使用虚拟化和沙箱检测等复杂功能而臭名昭著,这些功能用于避免检测并在受感染的系统中支持持久性。

尤其令人担忧的是,XWORM 作为破解版很容易在互联网上获得,其中 2.1 版本尤为普遍。这突显了地下网络犯罪市场的危险以及恶意行为者访问和利用强大工具的容易程度。

我们观察到 XWORM 家族的两个不同版本:2.2 版和 3.1 版。以下是明文形式的 XWORM 样本配置。

AGENTTESLA 是一款用 .NET 编写的木马和凭据窃取程序。虽然它最早出现在 2014 年,但现在它已成为最活跃和最恶意的软件之一。AGENTTESLA 价格实惠,并包含开发人员的支持,使其易于那些技术技能有限的网络罪犯访问。

我们分析的样本经过高度混淆,伪装成 AVG 安装程序,并利用 Discord 作为 C2。它通过以下 Webhook 将窃取的信息上传到攻击者的 Discord 频道:https://discord[.]com/api/webhooks/1089956337733087274/uYNA_D8Ns1z9NZ3B1mGp0XXyGq-785KLGIfEAZsrz3TJd5fvOjXA927F7bUTTzbNT6Zk

观察到的攻击者战术和技术

Elastic 使用 MITRE ATT&CK 框架来记录威胁使用的常见战术、技术和程序。

战术

战术代表技术的“原因”或子技术。它们代表攻击者的战术目标:执行操作的原因。

技术/子技术

技术和子技术代表攻击者如何通过执行操作来实现战术目标。

检测逻辑

YARA

Elastic Security 已创建 YARA 规则来识别此活动。以下是用于识别 XWORM 和 AGENTTESLA 恶意软件家族的 YARA 规则。

rule Windows_Trojan_Xworm_732e6c12 {
meta:
    author = "Elastic Security"
    id = "732e6c12-9ee0-4d04-a6e4-9eef874e2716"
    fingerprint = "afbef8e590105e16bbd87bd726f4a3391cd6a4489f7a4255ba78a3af761ad2f0"
    creation_date = "2023-04-03"
    last_modified = "2023-04-03"
    os = "Windows"
    arch = "x86"
    category_type = "Trojan"
    family = "Xworm"
    threat_name = "Windows.Trojan.Xworm"
    source = "Manual"
    maturity = "Diagnostic"
    reference_sample = "bf5ea8d5fd573abb86de0f27e64df194e7f9efbaadd5063dee8ff9c5c3baeaa2"
    scan_type = "File, Memory"
    severity = 100

strings:
    $str1 = "startsp" ascii wide fullword
    $str2 = "injRun" ascii wide fullword
    $str3 = "getinfo" ascii wide fullword
    $str4 = "Xinfo" ascii wide fullword
    $str5 = "openhide" ascii wide fullword
    $str6 = "WScript.Shell" ascii wide fullword
    $str7 = "hidefolderfile" ascii wide fullword
condition:
    all of them}

rule Windows_Trojan_AgentTesla_d3ac2b2f {
meta:
    author = "Elastic Security"
    id = "d3ac2b2f-14fc-4851-8a57-41032e386aeb"
    fingerprint = "cbbb56fe6cd7277ae9595a10e05e2ce535a4e6bf205810be0bbce3a883b6f8bc"
    creation_date = "2021-03-22"
    last_modified = "2022-06-20"
    os = "Windows"
    arch = "x86"
    category_type = "Trojan"
    family = "AgentTesla"
    threat_name = "Windows.Trojan.AgentTesla"
    source = "Manual"
    maturity = "Diagnostic, Production"
    reference_sample = "65463161760af7ab85f5c475a0f7b1581234a1e714a2c5a555783bdd203f85f4"
    scan_type = "File, Memory"
    severity = 100

strings:
    $a1 = "GetMozillaFromLogins" ascii fullword
    $a2 = "AccountConfiguration+username" wide fullword
    $a3 = "MailAccountConfiguration" ascii fullword
    $a4 = "KillTorProcess" ascii fullword
    $a5 = "SmtpAccountConfiguration" ascii fullword
    $a6 = "GetMozillaFromSQLite" ascii fullword