简 介
恶意软件即服务(MaaS)的发展极大地降低了网络犯罪分子的入行门槛,信息窃取软件已成为这一地下经济中商业上最为成功的类别之一。在这些威胁当中,自2022年由名为Lumma的威胁行为者推出以来,Lumma窃密软件已成为一款特别复杂精密的恶意软件。这款信息窃取软件最初以“Lumma命令与控制软件(LummaC2)”的名称进行推广,很快就在地下论坛中受到关注,其起售价为250美元。截至2025年3月,它在暗网市场和Telegram(电报)频道上的影响力持续扩大,已有超过一千名活跃用户订阅。
LummaC2 卖家官网
Lumma 交付通常涉及人工交互,例如单击链接、运行恶意命令等。最近,作为我们事件响应服务的一部分,在调查一起事件时,我们的全球应急响应团队 (GERT) 在客户的系统上遇到了 Lumma。分析显示,该事件是由人为交互触发的,即用户被虚假的 CAPTCHA 页面诱骗执行恶意命令。在本文中,我们将详细回顾虚假 CAPTCHA 活动的运作方式,并分享我们在分析和调查活动期间发现的 IoC 列表。尽管我们已经在之前的文章中介绍了这种分发方法,但从那时起已经发现了有关此活动的更多详细信息。
Lumma Stealer 的分布向量
Lumma Stealer 的分发方法多种多样,使用信息窃取恶意软件活动中常见的常见技术。主要感染媒介包括带有恶意附件或链接的网络钓鱼电子邮件,以及带木马的合法应用程序。这些欺骗性策略诱骗用户执行恶意软件,该恶意软件在后台静默运行以收集有价值的数据。还观察到 Lumma 使用漏洞利用工具包、社会工程和受感染的网站来扩大其覆盖范围并逃避安全解决方案的检测。在本文中,我们将主要关注虚假的 CAPTCHA 分发向量。
此向量涉及类似于合法服务的虚假验证页面,通常托管在使用内容分发网络 (CDN) 的平台上。这些页面通常伪装成常用的 CAPTCHA,例如 Google reCAPTCHA 或 Cloudflare CAPTCHA,以诱骗用户相信他们正在与受信任的服务交互。
伪造的 CAPTCHA 分发向量
假冒 CAPTCHA 分发方案
有两种类型的资源可用于推广虚假 CAPTCHA 页面:
• 盗版媒体、成人内容和破解软件网站。攻击者克隆这些网站并将恶意广告注入克隆页面,将用户重定向到恶意 CAPTCHA。
• 用于盗版内容和加密货币的虚假 Telegram 频道。攻击者创建的 Telegram 频道的名称包含与加密货币或盗版内容(如软件、电影等)相关的关键字。当用户搜索此类内容时,欺诈渠道会出现在搜索的顶部。攻击者还使用社交媒体帖子引诱受害者访问这些渠道。当用户加入此类频道时,系统会提示他们通过欺诈性的“Safeguard Captcha”机器人完成身份验证。
Safeguard Captcha 机器人
用户单击 Verify 按钮后,机器人会打开一个带有虚假 CAPTCHA 的弹出页面。
假 CAPTCHA 页面
用户会看到一个看起来像标准 CAPTCHA 验证的弹出页面,提示他们单击 I'm not a robot/Verify/Copy 或一些类似的按钮。然而,这就是欺骗开始的地方。
假 CAPTCHA 页面示例
虚假页面恶意内容
单击 I'm not a robot/Verify/Copy 按钮时,系统会指示用户执行一个不寻常的序列:
• 打开“运行”对话框 (Win R)
• 按 Ctrl V
• 按 Enter 键
在用户不知情的情况下,单击该按钮会自动将 PowerShell 命令复制到剪贴板。用户将命令粘贴到 Run (运行) 对话框中并按 Enter 键后,系统将执行该命令。
复制到剪贴板并通过 Run 对话框执行的脚本示例
该命令可能因站点而异,并且每隔几天就会更改一次,但它通常用于从远程服务器下载 Lumma Stealer,该服务器通常是具有免费试用期的已知 CDN 或合法的代码托管和协作平台,例如 GitHub,并开始恶意软件安装过程。让我们以客户事件中执行的以下命令为例,仔细看看这个感染链:
触发 Lumma 感染链的命令
该命令相当简单。它解码并运行托管在 https[:]//win15.b-cdn[.] 的远程 win15.txt 文件中的内容。net/win15.txt 的win15.txt 文件包含一个 Base64 编码的 PowerShell 脚本,然后下载并运行 Lumma Stealer。解码后,恶意 PowerShell 脚本如下所示:
win15.txt 目录
该脚本执行以下作:
1. 下载恶意软件。它从 https[:]//win15.b-cdn[.] 下载 win15.zip 文件。net/win15.zip 到 [User Profile]AppDataRoamingbFylC6zX.zip。
2. 提取恶意软件。下载的 ZIP 文件被解压到 C:Users[User]AppDataRoaming7oCDTWYu,这是用户 AppData 目录下的隐藏文件夹。
3. 执行恶意软件。该脚本从解压缩的存档中运行Set-up.exe文件,该存档现在位于 C:Users[User]AppDataRoaming7oCDTWYuSet-up.exe。
4. 建立持久化机制。该脚本在 Windows 注册表中创建一个条目以实现持久性,确保恶意软件在每次系统启动时都运行。注册表项将添加到 HKCU:SOFTWAREMicrosoftWindowsCurrentVersionRun 下。键名是 5TQjtTuo,值指向 Set-up.exe。
但是,在某些情况下,恶意软件传递机制可能更复杂。在以下示例中,投放脚本是隐藏在类似 .mp3 文件中的 JavaScript 代码(还使用了其他文件格式,如 .mp4 和 .png)。事实上,除了 JavaScript 之外,该文件还可能包含损坏的 .mp3/.mp4 文件、合法的软件代码或只是随机数据。
该脚本使用 Microsoft HTML 应用程序引擎mshta.exe执行,方法是提示用户将以下命令粘贴到 Run (运行) 对话框中:
命令触发基于 JS 的感染链
mshta 命令将文件解析为 HTA 文件 (Microsoft HTML 应用程序) 并执行标记中的任何 JavaScript 代码
图层 (1)
.mp3 文件中的 JS 脚本由 mshta 执行。
never.mp3 文件中的 JS 脚本
图层 (2)
计算出 Kwb 值后,得到以下脚本,然后由 eval 函数执行。
Layer (2) JS script
图层 (3)
在计算 kXN 和 zzI 的值后,构建并执行最终的 ActiveX 命令。它在 $PBwR 变量中包含编码的 PowerShell 脚本。
反混淆图层 (2) JS 脚本
图层 (4)
解码 PowerShell 脚本后,我们发现它的主要目的是从 C2 路径 hXXps://connect[.] 下载并执行另一个 PowerShell 文件。klipfuzj[.]商店/firefire[.]PNG 的 Png 中。
解密的第 (3) 层 PowerShell 脚本
firefire.png分析
文件firefire.png是一个巨大的 PowerShell 文件 (~31MB),具有多层混淆和反调试。在去掉不必要的代码后,我们可以看到该文件的主要目的是生成并执行一个加密的 PowerShell 脚本,如下所示:
firefire.png
解密密钥是 Invoke-Metasploit 命令的输出,如果启用了 AMSI,则该命令将被阻止。因此,AMSI 会生成一条错误消息:AMSI_RESULT_NOT_DETECTED,该消息用作密钥。如果禁用 AMSI,恶意软件将无法解密脚本。
解密的 PowerShell 脚本大小约为 1.5MB,其主要目的是创建和运行恶意可执行文件。
解密的 PowerShell 脚本
感染方法和技术
Lumma Stealer 已使用各种感染方法在野外被观察到,其中两种主要技术在其分发活动中脱颖而出:DLL 旁加载和将恶意负载注入合法免费软件的覆盖部分。这些技术在逃避检测方面特别有效,因为它们利用了用户对广泛使用的应用程序和系统进程的信任。
• DLL 旁加载
DLL 旁加载是一种众所周知的技术,其中恶意动态链接库 (DLL) 由合法应用程序加载。此技术利用软件中的漏洞或错误配置,这些漏洞或错误配置会无意中从不受信任的目录加载 DLL 文件。攻击者可以将 Lumma Stealer DLL 拖放到与受信任应用程序相同的目录中,从而导致它在执行应用程序时加载。由于恶意 DLL 是在受信任进程的上下文中加载的,因此传统的安全措施更难检测到入侵。
• 将恶意负载注入软件的覆盖部分
Lumma Stealer 常用的另一种方法是将恶意负载注入免费软件的覆盖部分。overlay 部分通常用于合法的软件功能,例如显示图形界面或处理某些输入事件。通过修改软件的这一部分,攻击者可以在不中断应用程序正常运行的情况下注入恶意负载。这种方法特别阴险,因为当恶意代码在后台静默执行时,软件继续看起来合法。它还可以帮助恶意软件逃避专注于系统级监控的安全工具的检测。
这两种方法都依赖于利用受信任的应用程序,这大大增加了成功感染的机会。这些技术可以与其他技术结合使用,例如网络钓鱼或木马化软件包,以最大限度地将 Lumma Stealer 传播到多个目标。
样品分析
为了演示 Lumma Stealer 安装程序的工作原理以及对系统和数据安全的影响,我们将分析我们在客户事件中发现的窃取程序样本。此示例使用覆盖层注入技术。以下是感染链的详细分类以及用于部署和执行 Lumma Stealer 的各种技术。
初始执行和自解压 RAR (SFX)
此示例中的初始负载以 ProjectorNebraska.exe 形式提供,其中包括损坏的合法文件和叠加部分中的恶意软件。它由受害者执行。执行时,文件将提取并运行自解压 RAR (SFX) 存档。此存档包含感染的下一阶段:Nullsoft 脚本安装系统 (NSIS) 安装程序。NSIS 是用于创建 Windows 安装程序的广泛使用的工具。
NSIS 安装程序组件
NSIS 安装程序会删除对恶意软件执行至关重要的几个组件:
NSIS 安装程序组件
其中包括 AutoIt 组件和名为 Hose.cmd 的模糊批处理脚本加载程序。以下 AutoIt 组件将被删除:
• 合法 AutoIt 可执行文件的片段:这些是正版 AutoIt 可执行文件的片段,它们被丢弃到受害者的系统中,然后在感染过程中重新组装。
• 编译后的 AutoIt 脚本:编译后的脚本承载了 Lumma Stealer 的核心功能,包括凭据盗窃和数据泄露等作。
这些组件稍后使用连接和执行各种片段的批处理脚本加载程序重新组合到最终的可执行有效负载中。
Hose.cmd 协调恶意软件执行的最后步骤。以下是其关键组件的细分(去混淆后):
去混淆的批处理脚本代码
执行批处理脚本后的进程树
批处理脚本执行以下作:
• 安全产品规避
• 脚本使用任务列表扫描安全软件(SecureAnywhere 和 Quick Heal AntiVirus)是否存在如果检测到其中任何一个,它会通过 ping -n 198 命令延迟执行,该命令会 ping localhost 198 次。此技巧用于避免沙箱检测,因为沙箱通常在脚本完成 ping 任务之前退出。
• 脚本检查是否存在以下任何一项:Avast、AVG、McAfee、Bitdefender、Sophos,使用任务列表如果检测到其中之一,则保留 AutoIt 的可执行文件名称为 AutoIt3.exe;否则,它会将其重命名为 Suggests.pif。
• 环境设置和有效载荷准备。它为 AutoIt 可执行文件和最终有效负载设置环境变量。它还会在 Temp 目录中创建一个名为 195402 的工作目录来存储恶意组件。
• 混淆和提取。该脚本通过删除字符串 OptimumSlipProfessionalsPerspective 并将结果存储为 Suggests.pif,从 NSIS 安装程序中筛选和清理名为 Sitting 的文件。然后,它使用 copy /b 命令将 Suggests.pif 与 NSIS 安装程序中名为 Oclc 的附加组件合并到 AutoIt 可执行文件中,并再次将其保存为 Suggests.pif。
• 有效载荷组件。它将 NSIS 安装程序中的多个文件(Italy、Holmes、True 等)连接起来,以生成名为 h.a3x 的最终可执行文件,这是一个 AutoIt 脚本。
• 处决 Lumma Stealer。最后,该脚本运行 Suggests.pif,后者反过来执行 h.a3x,从而触发基于 AutoIt 的 Lumma Stealer 执行。
AutoIt 脚本分析
在分析过程中,使用 AutoIt Extractor 实用程序从 h.a3x 文件中反编译和提取脚本。该脚本经过严重混淆处理,需要额外的去混淆才能获得干净且可分析的 .au3 脚本。以下是对 AutoIt 加载程序行为的分析。
AutoIt 脚本提取
反分析检查
该脚本首先验证环境以检测分析工具或沙盒环境。它检查通常与测试环境关联的特定计算机名称和用户名。
环境验证
然后,它会检查来自 Avast (avastui.exe)、Bitdefender (bdagent.exe) 和 Kaspersky (avp.exe) 等常用防病毒工具的进程。
防 AV 检查
如果满足这些条件中的任何一个,脚本将停止执行以逃避检测。
执行加载程序 shellcode
如果反分析检查通过,脚本将根据系统架构动态选择 32 位或 64 位 shellcode,该架构位于脚本内部的 $vinylcigaretteau 变量中。为此,它分配了可执行内存并将 shellcode 注入其中。然后,shellcode 初始化执行环境并为第二阶段有效负载做准备。
AutoIt 加载器的一部分,负责 shellcode 执行
处理 $dayjoy 负载
执行加载程序 shellcode 后,脚本将处理位于 $dayjoy 变量中的第二阶段有效负载。有效负载使用 RC4 和硬编码密钥 1246403907690944 进行解密。
加密的有效负载
为了独立解密有效负载,我们编写了一个自定义 Python 脚本,您可以在下面的屏幕截图中看到该脚本。
用于有效负载解密的 Python 脚本
解密后的负载使用 LZNT1 算法解压缩。
负载解压
最终有效负载执行
解密解压后,$dayjoy payload 会在内存中执行。该脚本使用 DllCallAddress 直接在分配的内存中调用有效负载。这可确保有效负载被秘密执行,而不会被写入磁盘。
最终有效负载执行
这个最终的有效负载是窃取程序本身。该恶意软件的全面数据盗窃功能针对广泛的敏感信息,包括:
• 加密货币钱包凭证(例如 Binance、Ethereum)和相关的浏览器扩展(例如 MetaMask)
• 双重身份验证 (2FA) 数据和身份验证器扩展
• 浏览器存储的凭据和 cookie
• 来自远程访问工具(如 AnyDesk)的存储凭据
• 来自 KeePass 等密码管理器的存储凭据
• 系统和应用程序数据
• 财务信息,例如信用卡号
C2 通信
执行 Lumma Stealer 后,它会与其命令和控制 (C2) 服务器建立通信以泄露被盗数据。恶意软件将收集到的信息发送回攻击者的基础设施以供进一步利用。这种通信通常通过 HTTP 或 HTTPS 执行,通常伪装成合法流量以避免被网络安全监控工具检测到。
已识别 C2 服务器
在分析的样本中确定了 Lumma Stealer 用于与攻击者通信的以下 C2 域:
reinforcenh[.]shop
stogeneratmns[.]shop
fragnantbui[.]shop
drawzhotdog[.]shop
vozmeatillu[.]shop
offensivedzvju[.]shop
ghostreedmnu[.]shop
gutterydhowi[.]shop
这些域用于从受感染的系统接收被盗数据。与这些服务器的通信通常通过加密的 HTTP POST 请求进行。
结 论
作为一个大规模分布的恶意程序,Lumma Stealer 采用复杂的感染链,其中包括许多反分析和检测规避技术,悄无声息地渗透到受害者的设备中。尽管通过可疑的盗版软件和加密货币相关网站以及 Telegram 频道进行的最初感染表明个人是这些攻击的主要目标,但我们在其中一个客户的事件中看到了 Lumma,这表明组织也可能成为这种威胁的受害者。此类恶意软件窃取的信息最终可能会落入更知名的网络犯罪分子手中,例如勒索软件运营商。这就是为什么在早期阶段防止窃贼感染很重要的原因。通过了解感染技术,安全专业人员可以更好地抵御这种日益增长的威胁,并制定更有效的检测和预防策略。
IoC
以下列表包含我们在研究过程中检测到的 URL。请注意,攻击者几乎每天都会更改恶意 URL 和 Telegram 频道,并且在撰写本文时,本节中提供的 IoC 已经处于非活动状态。但是,它们可能对回顾性威胁检测有用。
原文始发于微信公众号(卡巴斯基威胁情报):Lumma Stealer - 追踪其传播渠道
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论