介绍
Zscaler ThreatLabz 最近发现了一种新的窃取活动,称为“Steal-It”活动。在此活动中,威胁行为者使用 Nishang 的 Start-CaptureServer PowerShell 脚本的自定义版本窃取和泄露 NTLMv2 哈希值,执行各种系统命令,并通过 Mockbin API 泄露检索到的数据。
通过对恶意负载的深入分析,我们的团队观察到该活动采用的地理围栏策略,特别关注澳大利亚、波兰和比利时等目标区域。这些操作使用定制的 PowerShell 脚本,旨在在将关键的 NTLM 哈希传输到 Mockbin 平台之前窃取它。该活动的初始阶段涉及部署隐藏在 zip 存档中的 LNK 文件,同时通过战略性地利用 StartUp 文件夹来确保系统内的持久性。此外,收集到的系统信息和 NTMLv2 哈希值是使用 Mockbin API 泄露的。
我们认为 Steal-It 活动可能归因于 APT28(又名 Fancy Bear),因为它与 CERT-UA 在“威胁行为者归因”部分中报告的 APT28 网络攻击相似。
在本博客中,我们介绍:
1、要点
2、活动分析
3、NTLMv2 哈希窃取感染链
4、SystemInfo窃取感染链
5、Fansly Whoami 消除感染链
6、Windows Update Exfil 感染链
7、威胁行为者归因
8、结论
9、Zscaler 沙盒覆盖范围
10、MITRE ATT&CK TTP 映射
11、妥协指标 (IoC)
要点
渗透策略:我们发现威胁行为者通过执行系统命令,使用 Nishang 框架中的自定义脚本和系统信息来窃取和渗透 NTLM 哈希值。一旦捕获,数据就会通过模拟 API 泄露。
显式图像作为诱饵:Fansly Whoami Exfil 和 Exfil Sysinfo OnlyFans 感染链变体使用模型的显式图像来诱使受害者执行初始有效负载。
地理围栏和目标区域:威胁行为者使用地理围栏策略,特别关注澳大利亚、波兰和比利时等目标区域。
Mockbin 即服务:我们观察到使用 Mockbin(一种 API 端点生成工具)和模拟 API 来传输被盗数据(例如 NTLM 哈希值和命令输出)。
活动分析
在分析了 Steal-It 活动的多个样本后,我们根据 TTP 中观察到的变化对感染链进行了分类。以下部分描述了这些感染链。
NTLMv2 哈希窃取感染链
怎么运行的
图1:NTLMv2哈希窃取感染链流程
概述
NTLMv2 哈希窃取感染链利用 Nishang 的 Start-CaptureServer PowerShell 脚本的定制版本来窃取 NTLMv2 哈希,并通过mocky API 将窃取的哈希传输到 Mockbin。
技术分析
感染链以与恶意 LNK(快捷方式)文件捆绑在一起的 ZIP 存档开始,该 LNK 文件被委托从mockbin[.]org和webhook[.] 站点下载并执行另一个 PowerShell 脚本,如下面的屏幕截图所示。
图 2:初始 LNK 文件下载并执行自定义 Nishang 的 Start-CaptureServer PowerShell 脚本
恶意LNK文件执行的PowerShell脚本是Nishang的Start-CaptureServer.ps1脚本的定制版本,专门用于捕获NTLMv2哈希值。
威胁参与者修改了Start-CaptureServer.ps1 ,删除了:
1、评论
2、可检测字符串 ito 逃避静态检测
3、用于捕获凭据的基本身份验证方法
我们团队观察到的最重要的修改是,通过使用 URL https[:]//mockbin.org/bin/调用Net.WebClient.DownloadString( )函数来泄露捕获的 Base64 编码的 NTLMv2 哈希值:一个论点。下面的屏幕截图对此进行了描述。
图 3:Nishang Start-CaptureServer PowerShell 脚本的定制版本
一旦执行DownloadString()函数,它就会对指定的mockbin.org URL执行 GET 请求。
Mockbin 使您能够创建自定义端点来测试、模拟和监视跨不同库、套接字和 API 的 HTTP 请求和响应。当使用捕获的 Base64 编码的 NTMLv2 哈希向 Mockbin URL 发出 GET 请求时,该请求将记录在服务器端,并且可以被威胁行为者跟踪。
SystemInfo窃取感染链
怎么运行的
图4:Systeminfo窃取感染链流程
概述
Systeminfo 窃取感染链使用 OnlyFans 品牌来诱使用户下载该链的后期阶段,从而将命令输出渗透到 Mockbin。
技术分析
该感染链以名为“best_tits.zip”的 ZIP 存档开始,该存档与名为onlyfans.com-1.lnk的恶意 LNK(快捷方式)文件捆绑在一起。
执行后,恶意 LNK 文件会运行一个命令,该命令使用 base64 编码参数打开 Microsoft Edge 浏览器。此参数是 JavaScript 单行代码,使用location.href重定向到http://run[.]mocky[.]io/v3/ URL 。下面的屏幕截图对此进行了描述。
图 5:初始 LNK 文件 - OnlyFans
为了隐藏恶意重定向,该命令还会在另一个选项卡中打开合法的 OnlyFans 网站,并暂停执行 9 秒。
现在打开的run[.]mocky[.]io URL是一个 HTML 页面,其中包含恶意 JavaScript 代码,该代码执行以下操作:
验证 userAgent 标头是否包含关键字“win”以确定所使用的操作系统是否为 Windows。
利用 IPAPI Geolocation API 检查国家/地区代码是否为“AU”(澳大利亚)。
特别寻找“AU”国家代码表明感染链是地理围栏的并且针对来自澳大利亚的用户。
如果用户的操作系统是 Windows 并且位于澳大利亚,则代码会继续下载另一个名为m8的恶意 LNK 文件。该文件是通过解码 Base64 编码的数据块来创建的,如下面的屏幕截图所示。
图 6:针对来自澳大利亚的目标用户进行地理围栏的 Run[.]Mocky[.]io HTML 页面
此外,下载的 LNK 文件将复制到上一个LNK 文件的参数中指定的启动文件夹: move /y %userprofile%Downloadsm8 m8.lnk 。
由于之前LNK文件的工作目录设置为Startup文件夹路径,因此LNK文件被复制到Startup文件夹中。因此,每次系统重新启动时都会执行m8.lnk文件,从而允许在系统上持久化。
执行时,下载的 LNK 文件m8.lnk会从run[.]mocky[.]io下载 CMD 文件,并将其作为m8.cmd复制到Startup文件夹,方法与之前的 LNK 文件相同。这些操作如下面的屏幕截图所示。
图7:LNK文件下载最终脚本
CMD 文件m8.cmd在系统重新启动时执行,是委托收集和窃取系统信息的最终脚本。执行后,它首先运行以下三个系统命令并将输出存储在ProgramData目录中。
ip配置
系统信息
任务列表
从这里开始,脚本使用CertUtil对命令输出文件进行base64 编码,并使用set /p ipc=