近期,360安全大脑监测到一款名为Lumma Stealer的恶意软件传播量呈现出了上升态势,而该恶意软件的传播方式较为特殊——它是利用了虚假的CAPTCHA验证发起攻击。该恶意软件的攻击者采用了精心设计的社会工程学策略和多层技术规避机制,其目标直指个人和企业用户的敏感数据。作为一种以“恶意软件即服务(MaaS)”进行分发形式的恶意软件,Lumma Stealer在暗网市场上以每月250~1000美元不等的价格出售,这无疑为网络犯罪分子提供了一款颇具性价比的攻击工具。

一、攻击分析

(一)虚假的CAPTCHA验证

攻击者通过虚假CAPTCHA验证页面作为诱饵,利用mshta加载远端内嵌恶意脚本的mp3文件。通过这一系列精心设计的步骤,最终实现对受害者设备上多种敏感信息的窃取,包括但不限于浏览器存储的密码、加密货币钱包密钥、双因素认证种子等关键数据。

        图1. Lumma Stealer攻击流程示意图

 

攻击者精心构造的虚假CAPTCHA验证页面如下。

图2. 虚假CAPTCHA验证页面

 

用户一旦被误导,便会点击页面中那个格外显眼的“I’m not a robot”按钮,之后页面会弹出一个提示框,其内容为要求受骗用户按“Win+R”快捷键,之后按“Ctrl+V”,最后按回车键。攻击者声称以上三步操作是为了进行验证,然而其实际效果是引导用户打开系统的“运行”窗口,再将页面提供的恶意代码粘贴到文本框中让系统执行(恶意代码是在用户打开页面时便已被偷偷植入到系统剪切板中的)。

图3. 虚假页面的提示窗及恶意代码

 

(二)混合格式内嵌混淆代码

通过对页面植入到系统剪切板中的恶意代码进行分析,发现mshta所加载的mp3文件内嵌入了第一层恶意js脚本。这个被加载的dodieplay5.mp3实际上是被攻击者创建出的混合格式文件:

文件以合法MP3文件头开始,可以被音频播放器正常打开;
同时,文件中还包含了特殊格式的HTML/JavaScript代码;
恶意代码会在文件被mshta加载时解析执行,而在音乐播放器中则会被忽略。

图4. 被构造的mp3文件中包含的恶意代码

 

其中的部分关键JavaScript代码还经过了多层的混淆处理:

图5. 被混淆的JS代码

 

经过了两轮去混淆的解码操作后,我们得到了一段PowerShell脚本。而解码出的这段脚本功能主要为下载远端数据到本地并执行。

图6. 两轮去混淆解码后的PowerShell脚本

 

而下载到的bmp文件与上述的mp3文件形式类似,同样是带有多轮混淆恶意代码的一个混合格式文件。而经过多轮去混淆和解密后,内容如下:

图7. 从bmp文件中多轮去混淆和解密后的恶意PowerShell脚本

 

经过如此繁复的解密操作后,我们终于得到了最终的恶意功能代码。这段代码便是Lumma Stealer加载器代码,其会被加载到内存中执行。

图8. 最终在内存中被加载执行的Lumma Stealer代码

 

(三)内存中的Lumma Stealer

而这个在内存中被加载和执行的Lumma Stealer恶意程序具有以下主要功能和技术特点:

内存操作和反分析机制

其关键功能为:

AMSI绕过

代码搜索并修改Windows中的“AmsiScanBuffer”函数,是一种常见的AMSI(反恶意软件扫描接口)绕过技术,目的是禁用PowerShell脚本的实时扫描功能。

内存扫描和修改

使用VirtualQuery、ReadProcessMemory和WriteProcessMemory等API扫描进程内存,用于搜索包含“dll”的内存区域。

其实现方式为:

创建动态程序集和Win32 API PInvoke定义。
获取当前进程句柄并枚举所有内存区域。
在内存中查找并替换“AmsiScanBuffer”签名。

恶意负载加载技术

Base64解码

将变量$a中存储的Base64编码数据解码为PE文件。

反射加载

使用[System.AppDomain]::CurrentDomain.Load()方法将PE文件直接加载到内存中。

无文件执行

整个执行过程不将PE文件写入磁盘,仅在内存中运行。

动态入口点调用

自动识别并调用恶意负载的入口点函数。

隐藏技术

字符串拆分

将“AmsiScanBuffer”字符串分割为多个部分($a + $b + $c + $d)以避免静态检测。

代码混淆

使用大量合法Windows API和复杂内存操作来混淆真实意图。

无DLL导入

通过动态定义和调用Win32 API而非显式导入,降低可疑性。

其他技术特点

使用IsReadable函数检查内存区域是否可读。
修改内存保护属性以启用写入权限。
使用GetMappedFileName专门定位CLR相关的内存区域。
仅在PowerShell的0及以上版本环境执行。

 

二、关于Lumma Stealer

Lumma Stealer(又名 LummaC2 Stealer)是一款用 C 语言编写的信息窃取程序。自 2022 年 8 月以来,它一直通过恶意软件即服务(MaaS)的模式在某俄语论坛上发布和售卖。其具有感染率成功率高、第三方依赖项少、文件体积小、窃密功能强大、抓取文件效率高等特点。

图9. Lumma Stealer在某恶意论坛的售卖页面

 

另外,我们还捕获到了利用pdf、mov、mp4等格式进行隐藏加载的样本。

图10. 其他格式的恶意文件

 

三、防护建议

基于对Lumma Stealer攻击链的分析,我们提出以下防护建议来帮助组织和个人有效防范此类威胁:

(一)对于个人用户

提高警惕性

对任何要求复制执行命令行的网站保持高度警惕,尤其是看似合法的CAPTCHA验证页面。

使用密码管理器

采用安全的密码管理解决方案,避免在浏览器中保存敏感凭证。

启用两步验证

对重要账户使用复杂密码并启用双因素认证

定期备份

对关键数据进行定期备份,并确保备份与主系统隔离。

及时更新

确保操作系统和安全软件始终保持最新状态,以获取最新的安全补丁。

(二)对于企业及组织

实施终端检测与响应(EDR)解决方案

部署能够检测内存注入和无文件攻击的现代EDR工具。

应用PowerShell约束语言模式

限制PowerShell的执行能力,减少被恶意脚本利用的可能性。

禁用不必要的组件

特别是阻止MSHTA等LOL类常被滥用的组件在无正当业务需求的环境中运行。

加强网络监控

设置检测与阻断疑似C2通信的网络监控机制,特别关注分块数据传输模式。

开展安全意识培训

定期为员工提供有针对性的安全意识培训,提高对社会工程学攻击的识别能力。

实施零信任架构

采用以身份为中心的安全模型,要求所有访问请求进行严格验证。

 

四、360拦截

此外,安装了360客户端的用户请确保360的正常开启。360无需升级便可直接对该木马进行有效拦截。

图11. 360安全大脑拦截mshta.exe加载恶意脚本行为

 

同时,360也可通过扫描对带有恶意代码的混合格式文件进行识别和查杀。

图12. 安全卫士扫描并识别带有恶意代码的混合格式文件

 

五、IOCs

(一)HASH

EFAF874A87C0B169A295A384B1EBEDFEE9A18D81

(二)URLs

hxxps://objectstorage.ap-singapore-2.oraclecloud[.]com/n/ax4mqlu25efi/b/rukeporkalobkt/o/fifthloadcheck-going-almost-there.html

hxxps://vesting[.]shop/dodieplay5.mp3

hxxps://bi.yeaio[.]shop/30f549cc9856fe1c10a38e7cd1b80228285818d721.bmp

文章原文链接:https://www.anquanke.com/post/id/306195