Lumma Stealer通过GitHub分发机制进行恶意投递的深度分析
摘要
趋势科技的Managed XDR团队调查了一起通过GitHub分发Lumma Stealer的活动,攻击者滥用了GitHub的发布基础设施来投递多种恶意软件,包括SectopRAT、Vidar和Cobeacon。攻击者利用GitHub发布基础设施进行初始访问,用户从安全URL下载文件。这些文件窃取敏感数据并连接到外部C&C服务器,执行命令以规避检测。Lumma Stealer及其他恶意变种投放并执行额外工具,生成多个目录并暂存数据。攻击中使用了PowerShell脚本和Shell命令等技术来实现持久化和数据窃取。事件中使用的战术、技术和程序(TTP)与Stargazer Goblin组织的活动存在重叠,该组织以使用受感染网站和GitHub进行载荷分发而闻名。分析揭示了URL模式的连贯性以及利用受感染合法网站重定向到GitHub托管的恶意载荷。主动实施安全最佳实践和建议将帮助组织加强防御,包括验证URL和文件、定期检查数字证书以及使用能够检测和阻止恶意活动的终端安全解决方案。
引言
趋势科技™ Managed XDR发现了一个涉及Lumma Stealer(一种信息窃取恶意软件)的复杂活动,该活动通过GitHub的发布基础设施进行分发。调查显示,恶意行为者利用GitHub作为受信任平台来投递该窃取程序,随后启动额外的恶意活动。它下载并执行其他威胁,包括SectopRAT(一种远程访问木马)、Vidar、Cobeacon和另一个Lumma Stealer变种。该活动与归因于Stargazer Goblin组织的战术存在显著重叠,该威胁行为者使用受感染网站和GitHub仓库进行载荷分发。感染链和载荷使用的变化进一步展示了该组织的适应性和不断演进的方法。本文剖析了这些攻击中使用的战术、技术和程序(TTP),强调了网络威胁情报在揭示攻击者策略中的关键作用。
初始访问
在两起独立的Lumma Stealer案例中,我们追踪到初始访问点来自GitHub发布基础设施的文件下载。在一个实例中,用户通过Google Chrome浏览器下载了一个名为Pictore.exe的文件,URL指向托管在云服务提供商上的GitHub发布资源。类似地,我们调查的另一个案例涉及下载App_aeIGCY3g.exe,该文件也通过GitHub的发布机制临时托管。这些事件展示了攻击者利用受信任平台(如GitHub)分发恶意文件的战术。
两个文件最初由ConsolHQ LTD和Verandah Green Limited签名(分别于2024年12月6日和12月12日)。然而,它们的证书已被发行方明确撤销,表明这些文件现在被视为不可信且可能恶意。
从遥测中提取的GitHub URL字符串如下:
|
|
在此示例中,URL提供临时安全访问以下载名为Pictore.exe的文件,X-Amz-Expires参数指示URL仅有效300秒(5分钟)。使用预签名URL进一步表明该文件是与特定GitHub仓库关联的发布的一部分,确保下载经过认证且有时间限制。
执行
我们将文件Pictore.exe和App_aeIGCY3g.exe识别为Lumma Stealer,这是一种信息窃取恶意软件,旨在窃取敏感信息(如凭据、加密货币钱包、系统信息和文件),同时与攻击者控制的服务器通信以促进进一步的恶意活动。由于两个文件表现出相同的行为,本文将主要关注从Pictore.exe收集的数据。
Pictore.exe的执行生成以下文件:
- nsis7z.dll
- app-64.7z
- System.dll
- nse2869.tmp
- nsu27DC.tmp
丢弃的文件C:\Users<username>\AppData\Local\Temp\1\nse2869.tmp\nsis7z.dll是一个7zip归档工具,用于从归档C:\Users<username>\AppData\Local\Temp\1\nse2869.tmp\app-64.7z中提取文件。
从app-64.7z归档中提取的文件被解压到目录C:\Users<username>\AppData\Local\Temp\1\nse2869.tmp\7z-out\,其中包含Lumma Stealer及其组件。这些文件表明恶意可执行文件是使用Electron构建的(使用Chromium进行渲染)或本身是基于Chromium的应用程序。默认情况下,Electron应用将Chromium与应用捆绑以渲染图形用户界面。使用.pak文件和V8快照等Chromium资源也表明该应用可能是Electron应用。
我们观察到Pictore.exe连接到两个外部IP地址,可能是它们的命令与控制(C&C)服务器——192[.]142[.]10[.]246:80和192[.]178[.]54[.]36:443。同时,App_aeIGCY3g.exe通过端口80连接到84[.]200[.]24[.]26。
检查我们的Trend Vision One™遥测,我们发现了以下到外部IP地址192[.]142[.]10[.]246和84[.]200[.]24[.]26的HTTP请求:
|
|
解码后的URL字符串结果如下:
|
|
字符串显示恶意软件收集了系统信息,包括RAM大小、显示适配器、操作系统版本、主机名、运行时间、用户目录路径和临时目录内容。然后可能将这些数据外泄到攻击者控制的服务器(192[.]142[.]10[.]246和84[.]200[.]24[.]26)。
Pictore.exe(以及App_aeIGCY3g.exe)生成了以下Shell命令行:
命令行 | 详情 |
---|---|
Pictore.exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --user-data-dir="C:\Users\<redacted>\AppData\Roaming\qfwbhfiixlbsvkug" --mojo-platform-channel-handle=2472 --field-trial-handle=1996,i,16339862247624116936,1579335656413102094,131072 --disablefeatures=SpareRendererForSitePerProcess, WinRetrieveSuggestionsOnlyOnDemand /prefetch:8 |
该命令收集GPU信息,如供应商ID、设备ID和驱动程序版本等。它禁用GPU沙箱以帮助规避可能监控GPU进程的安全软件。它检查GPU配置以检测是否在虚拟化环境中运行(这在安全实验室和沙箱中很常见)。 |
Pictore.exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --user-data-dir="C:\Users\<redacted>\AppData\Roaming\qfwbhfiixlbsvkug" --mojo-platform-channel-handle=2472 --field-trial-handle=1996,i,16339862247624116936,1579335656413102094,131072 --disable-features=SpareRendererForSitePerProcess, WinRetrieveSuggestionsOnlyOnDemand /prefetch:8 |
该命令收集网络相关信息,如服务和平台通道句柄,以建立与恶意服务的通信。它禁用某些功能以避免检测并增强Lumma Stealer的功能。它配置自定义用户数据目录以存储或暂存数据。使用特定标志绕过沙箱机制并可能规避安全监控工具。 |
Pictore.exe --type=gpu-process --user-data-dir="C:\Users\<redacted>\AppData\Roaming\qfwbhfiixlbsvkug" --gpu-"preferences=UAAAAAAAAADgAAAYAAAAAAAAAAAAAAAAAAAAABgAAAAAAAwAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAA= --mojo-platform-channel-handle=2000 --field-trial-handle=1996,i,16339862247624116936,1579335656413102094,131072 --disable-features=SpareRendererForSitePerProcess, WinRetrieveSuggestionsOnlyOnDemand /prefetch:2 |
该命令收集GPU偏好以调整系统行为进行规避,使用自定义用户数据目录暂存数据,并禁用功能以绕过检测。编码的GPU设置和平台句柄表明与攻击者控制的服务进行隐蔽通信,同时避免安全软件。 |
powershell.exe -NoProfile -NoLogo -InputFormat Text -NoExit -ExecutionPolicy Unrestricted -Command - |
该命令启动具有无限制脚本执行权限的PowerShell,防止加载配置文件和徽标,保持会话开放以执行进一步命令,并允许通过管道执行额外代码(通常用于隐蔽或恶意活动)。 |
C:\Windows\system32\cmd.exe /d /s /c "findstr /C:"Detected boot environment" "%windir%\Panther\setupact.log"" |
该命令使用findstr命令在setupact.log文件中搜索短语"Detected boot environment"。通常用于在设置或安装过程中检查系统的启动环境,可能用于收集有关系统状态的信息以进行侦察。 |
C:\Windows\system32\cmd.exe /d /s /c "echo %COMPUTERNAME%.%USERDNSDOMAIN%" |
该命令回显计算机的完全限定域名(FQDN),这是计算机名称(%COMPUTERNAME%)和DNS域(%USERDNSDOMAIN%)的组合。通常用于收集有关系统网络配置的信息,特别是机器名称和域。 |
C:\Windows\system32\cmd.exe /d /s /c "chcp" |
该命令设置命令提示符中的活动代码页编号。可用于确保恶意软件在具有不同区域设置的环境中正确运行。 |
表1. Shell命令行
SectopRAT、Vidar和Lumma Stealer
我们发现初始的Lumma Stealer文件Pictore.exe和App_aeIGCY3g.exe在受影响的机器上投放了各种工具和恶意软件,如SeptopRAT、Vidar、Cobeacon和另一个Lumma Stealer变种。这些文件在临时目录中随机命名(可能是动态生成)的文件夹中创建,随后被执行。
SectopRAT
创建了以下SectopRAT文件:
C:\Windows\system32\cmd.exe /d /s /c ""C:\Users\<username>\AppData\Local\Temp\1\yVUCCXe3c5E4qLcCd4\PillsHarvest.exe""
C:\Windows\system32\cmd.exe /d /s /c ""C:\Users\<username>\AppData\Local\Temp\1\yVUCCXe3c5E4qLcCd4\BelfastProt.exe""
C:\Windows\system32\cmd.exe /d /s /c ""C:\Users\<username>\AppData\Local\Temp\cxCzdFWzpj8waIrVyr\HumanitarianProvinces.exe””
C:\Windows\system32\cmd.exe /d /s /c ""C:\Users\<username>\AppData\Local\Temp\2pprtBdjzhf5iVtTfAJT5aNsRxD\Scielfic.exe””
注意,由于所有SectopRAT文件表现出相同的行为,我们将重点分析文件HumanitarianProvinces.exe。
执行时,HumanitarianProvinces.exe在位于C:\Users<user>\AppData\Local\Temp\的临时目录中生成了多个随机命名的目录。以下是一些这些目录的示例: Now, Eternal, Pressing, Recommend, Sen, Schema, Openings, Access, Earn, Signup, Cheats, Gift, Silver, Statutory, Reprints, Rwanda, Brain,