Daniel Stepanic

Elastic 安全实验室发现 LOBSHOT 恶意软件

对 LOBSHOT 的分析,一种通过 Google Ads 传播的 hVNC 恶意软件家族。

阅读需 20 分钟恶意软件分析
Elastic Security Labs discovers the LOBSHOT malware

主要发现

  • 攻击者继续滥用恶意广告,例如通过 Google Ads 冒充合法软件,从而扩大覆盖范围
  • Elastic 安全实验室正在揭示一种未被发现的 hVNC 恶意软件,该软件一直在悄悄地收集大量的安装基础
  • 这种我们称之为 LOBSHOT 的恶意软件似乎被用于金融目的,利用银行木马和信息窃取功能

前言

Elastic 安全实验室和研究社区注意到,今年早些时候,恶意广告的采用量大幅增加。攻击者通过 Google Ads 使用精心设计的虚假网站来宣传他们的恶意软件,并将后门嵌入到用户看来是合法的安装程序中。在这篇文章中,我们将重点介绍我们从这种激增中观察到的一种恶意软件家族,我们称之为 LOBSHOT。LOBSHOT 继续收集受害者,同时保持低调。

LOBSHOT 的核心功能之一是其 hVNC(隐藏虚拟网络计算)组件。这些模块允许直接且不受观察地访问机器。此功能在绕过欺诈检测系统方面继续取得成功,并且通常作为插件集成到许多流行的恶意软件家族中。

我们将介绍 LOBSHOT 的感染链及其行为。此外,我们将为该恶意软件家族提供 YARA 签名和配置提取器。

在我们的分析过程中,我们观察到属于 TA505 的已知基础设施。TA505 是一个知名的网络犯罪团伙,与 Dridex、Locky 和 Necurs 活动有关。由 Proofpoint 记录的一个加载器,称为 Get2,过去也与我们观察到的 LOBSHOT 相同的域相关联。我们以中等信心评估,LOBSHOT 是 TA505 从 2022 年开始利用的一种新的恶意软件能力。

活动背景

今年早些时候,Elastic 安全实验室观察到多起感染事件,其中发生了一系列有趣的事件,导致执行了未知的 hVNC 恶意软件,我们称之为 LOBSHOT。大约在同一时间,安全社区也观察到了类似的感染链,这些感染链的共同点是用户搜索合法软件下载,最终从 Google 推广的广告中获得了非法的软件 [1, 2, 3, 4]。

在一个示例中,恶意广告是针对一个合法的远程桌面解决方案 AnyDesk。仔细检查 URL 可以发现它指向 https://www.amydecke[.]website,而不是合法的 AnyDesk URL https://www.anydesk[.]com

这些着陆页非常有说服力,其品牌与合法软件相似,并包含指向 MSI 安装程序的立即下载按钮。

感谢安全研究员 Will Dormann,我们得以 查看 AnyDesk 活动的屏幕截图。

在发布时,我们没有看到任何关于 LOBSHOT 的先前公开信息,因此我们将重点研究 LOBSHOT 的功能和能力。

LOBSHOT 代码分析

为了专注于 LOBSHOT 恶意软件,我们将跳过初始感染链。对于这些初始细节,这里有一份很好的 沙箱 报告,可以查看一般的 TTP。自去年 7 月以来,我们已经观察到 500 多个独特的 LOBSHOT 样本。我们观察到的样本被编译为 32 位 DLL 或 32 位可执行文件,通常大小在 93 KB 到 124 KB 左右。请考虑以下 样本,它代表了 LOBSHOT,用于此分析的目的。

动态 API 解析

在我们的 LOBSHOT 样本中,像我们今天看到的大多数恶意软件一样,它采用动态导入解析来逃避安全产品并减缓对其功能的快速识别。此过程涉及在运行时解析恶意软件需要的 Windows API 的名称,而不是提前将导入放入程序中。

Defender 模拟检查

加载初始库后,LOBSHOT 通过验证计算机名称是否与字符串 HAL9TH 匹配以及用户名是否与 JohnDoe 匹配来执行 Windows Defender 反模拟检查。这些是 Defender 模拟层内的硬编码值,如果存在,恶意软件会立即停止运行。这种验证已纳入包括 Arkei、Vidar 和 Oski 在内的许多其他信息窃取器中。以下是使用 Qiling 框架的模拟输出,突出显示了这些验证检查。

字符串混淆

此恶意软件通过使用不同按位运算符的简单加密函数来隐藏其主要字符串。为了执行字符串解密,LOBSHOT 使用来自对 WTSEnumerateSessionsA 的调用的 WTS_SESSION_INFO 结构的初始种子。

在这种情况下,恶意软件开发人员通过对 SessionID (始终为 0)和“Services”中的 S 字符执行异或来设置初始种子。

初始枚举

在发送任何出站网络请求之前,LOBSHOT 构建一个自定义结构,其中包含从机器枚举的数据,包括

  • SOFTWARE\Microsoft\Cryptography\MachineGuid 派生的机器 GUID
  • Windows 版本、用户名、计算机名
  • 虚拟机检查、正在运行的进程数、进程 ID、恶意软件的父进程
  • Windows 桌面对象详细信息
    • 屏幕高度/宽度
    • 显示设备信息
    • 桌面对象和窗口的句柄
    • 显示器的 DPI

执行流程

执行 LOBSHOT 后,它将自身的副本移动到 C:\ProgramData 文件夹,使用 explorer.exe 生成一个新进程,终止原始进程,最后删除原始文件。这种设计选择是为了尝试打破进程树的祖先关系;使分析师更难发现。

以下是初始执行后的屏幕截图,恶意软件现在没有父进程,并且从 C:\ProgramData 目录运行。

持久性

对于持久性,LOBSHOT 利用 注册表运行键持久性方法。在我们的样本中,它放置在 HKEY_CURRENT_USER 注册表配置单元中,并使用随机生成的名称指向位于 C:\ProgramData 中的恶意软件。

此外,它还在 Software\Microsoft\Windows NT\CurrentVersion\Devices 键路径下设置注册表键数据,该键用于检查一个硬编码的全局标识符键,该键将指示系统已被感染。在我们的样本中,Display 值设置为字符串 134a1160。窃取器功能的结果记录在 Default Printer 值中。我们将在下一节中讨论窃取器功能。

窃取器功能

在建立持久性机制后,LOBSHOT 启动一个新线程,启动窃取器功能。它首先针对处理加密货币钱包的特定 Google Chrome 扩展程序。以下是 Procmon 输出,显示 LOBSHOT 尝试访问 32 个 Chrome 钱包扩展程序、9 个 Edge 钱包扩展程序和 11 个 Firefox 钱包扩展程序。

有关映射到其扩展 ID 的不同加密货币的完整列表,请参阅附录

如果与这些扩展程序中的任何一个匹配,则结果将作为二进制数据插入 Software\Microsoft\Windows NT\CurrentVersion\Devices 注册表键值中,格式为浏览器名称_扩展程序名称。以下是注册表修改后的示例,显示:Chrome_Yoroi

在枚举浏览器扩展程序后,会检查 C:\ProgramData 目录中是否存在一个名为 hmr_*.dat 的硬编码文件。如果此文件存在,它将使用 rundll32.exe 执行,并带有以下命令行参数

rundll32.exe "C:\ProgramData\hmr_1.dat", #1 hmod

虽然我们没有直接观察到此行为,但此功能似乎展示了开发人员内置的一个功能,允许其他执行选项,例如加载他们自己的 DLL。

网络通信

对于我们审查的每个 LOBSHOT 样本,都有一个硬编码的 IP 地址和端口,它们是从二进制文件中解密出来的,用作主要的 C2(命令与控制服务器)。恶意软件每 5 秒发送一次信标,通过以下调用进行通信:

  • ws2_32.socket
  • ws2_32.connect
  • ws2_32.send
  • ws2_32.select
  • ws2_32.recv
  • ws2_32.shutdown
  • ws2_32.closesocket

在这些出站请求中,它会发送伪随机硬编码数据,以及模块的缩短的 GUID 值和版本号。

以下是在初始出站请求期间发送的发送请求缓冲区的示例,其中显示了上述硬编码值和版本号。

搜索上述 mov 指令,并将其与硬编码值的第一个 DWORD ( C7 06 25 56 0A DC ) 配对,在 VirusTotal 中显示在过去一年中有超过 550 个样本。其中一些最早的样本出现在 2022 年 7 月下旬。这些硬编码值的普遍存在表明,它已被积极使用和开发了很长时间,并且将来可能会继续被使用。

在初始握手之后,LOBSHOT 将通过此端口发送包含枚举数据的先前自定义数据结构,例如主机名、用户名、Windows 对象等。

功能

LOBSHOT 的核心功能之一是其 hVNC(隐藏虚拟网络计算)模块。

与传统的 VNC(虚拟网络计算)不同,传统 VNC 软件提供对机器的远程访问,并征得用户的同意,且可以在机器上清楚地观察到采取的操作。hVNC 的作用方式相反,旨在保持隐秘,攻击者的所有操作都发生在同一台机器上,但受害者无法明显观察到。hVNC 在银行木马领域成为一种流行的解决方案,以绕过设备和欺诈检测解决方案。有关 hVNC 的更多详细信息,请参见此处

LOBSHOT 通过使用 CreateDesktopW Windows API 生成隐藏桌面,然后使用 SetThreadDesktop API 将桌面分配给恶意软件来实现 hVNC 功能。然后在新的隐藏桌面的上下文中创建一个新的 Windows explorer.exe 进程。

在此阶段,受害者机器将开始发送屏幕截图,这些屏幕截图代表发送到攻击者控制的侦听客户端的隐藏桌面。攻击者通过控制键盘、单击按钮和移动鼠标来与客户端进行交互,这些功能为攻击者提供了对设备的完全远程控制。

在 LOBSHOT 的 hVNC 模块中,有一个内置的 GUI 菜单,允许攻击者快速运行以下命令:

  • 启动新的 explorer.exe 进程
  • 启动 Windows 运行命令
  • 使用提供的命令启动新的 Windows 进程
  • 启动浏览器(Internet Explorer、Edge、Firefox)
  • 终止现有的 explorer.exe 进程并启动新的 explorer.exe 进程
  • 篡改 Windows 声音设置
  • 设置/检索剪贴板文本
  • 激活开始菜单
  • 修改 DPI 感知设置

虽然主要功能集中在 LOBSHOT 的 hVNC 模块上,但它确实具有其他功能。例如,它可以替换操作员提供的 C2;它通过将新的 C2 详细信息写入注册表项路径 Software\Microsoft\Windows NT\CurrentVersion\DevicesVideo 值下来管理此操作。

LOBSHOT 还包含一个更新机制,它将删除先前对注册表所做的修改,例如删除 “Display” 值和运行键持久性,启动一个新进程,最后退出现有进程。

LOBSHOT 配置提取器

Elastic Security Labs 已发布一个开源工具,该工具在 Elastic 2.0 许可下,允许从 LOBSHOT 样本中提取配置。该工具可以从此处下载。

提取器可以在单个文件或目录级别运行,示例如下:

  • python lobshot_config_extractor.py --file sample.bin
  • python lobshot_config_extractor.py --directory samples

总结

威胁组织正在继续利用恶意广告技术,伪装成具有后门的合法软件,例如 LOBSHOT。这些类型的恶意软件看起来很小,但最终会打包重要的功能,这有助于威胁行动者在初始访问阶段快速移动,并具有完全交互式的远程控制功能。我们每周都会继续看到与此家族相关的新样本,并预计它会在一段时间内存在。

检测逻辑

预防

检测

EQL 查询

使用 Kibana 中安全解决方案的时间轴部分中的 “关联” 选项卡,可以使用以下 EQL 查询来搜索类似的行为:

以下 EQL 查询可用于检测在 LOBSHOT 中观察到的可疑祖父、父、子关系。

sequence by host.id, user.id with maxspan=1m
 [process where event.type == "start" and not startsWith~(process.executable, process.parent.executable)] by process.parent.name, process.entity\_id
 [file where event.type == "deletion"] by file.name, process.entity\_id
 [process where event.type == "start" and not startsWith~(process.executable, process.parent.executable)] by process.name, process.parent.entity\_id
until [process where event.type == "end"] by process.name, process.entity\_id

YARA 规则

rule Windows_Trojan_Lobshot {
    meta:
        author = "Elastic Security"
        creation_date = "2023-04-18"
        last_modified = "2023-04-18"
        license = "Elastic License v2"
        os = "Windows"
        threat_name = "Windows.Trojan.Lobshot"
        reference_sample = "e4ea88887753a936eaf3361dcc00380b88b0c210dcbde24f8f7ce27991856bf6"
    strings:
        $str0 = "HVNC Remote Control" ascii fullword
        $str1 = " Error # %d - %08lx" ascii fullword
        $str2 = "Set  clipboard text failed." ascii fullword
        $str3 = "OK %08lx %08lx %d" ascii fullword
        $str4 = "\") & (rundll32.exe \"" wide fullword
        $str5 = "%LOCALAPPDATA%\\svc.db" wide fullword
        $str6 = "cmd.exe /c (ping -n 10 127.0.0.1) & (del /F /Q \"" wide fullword
        $seq_str_decrypt = { 8A 5A ?? 8D 52 ?? 80 EB ?? 85 FF 74 ?? C0 E0 ?? 2C ?? 0A C3 32 C1 32 C7 88 06 32 E8 83 C6 ?? 83 C5 ?? EB ?? }
        $seq_emu_check = { 8B 35 ?? ?? ?? ?? 8D 44 24 ?? 50 8D 44 24 ?? C7 44 24 ?? 48 41 4C 39 50 C7 44 24 ?? 54 48 00 00 FF D6 }
        $seq_enum_xor = { FF 15 ?? ?? ?? ?? 84 C0 0F 84 ?? ?? ?? ?? 83 7C 24 ?? 00 0F 84 ?? ?? ?? ?? 8B 4C 24 ?? 68 07 80 00 00 8B 41 ?? 8A 00 32 01 A2 ?? ?? ?? ?? }
        $seq_create_guid = { 8D 48 ?? 80 F9 ?? 77 ?? 2C ?? C1 E2 ?? 46 0F B6 C8 0B D1 83 FE ?? 7C ?? 5F 8B C2 5E C3 }
    condition:
        2 of ($seq*) or 5 of ($str*)
}

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

Elastic 使用 MITRE ATT&CK 框架记录高级持续性威胁对企业网络使用的常见战术、技术和程序。

战术

战术代表技术或子技术的原因。它是对手的战术目标:执行操作的原因。

技术/子技术

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

观测

所有可观察对象也可以ECS 和 STIX 格式下载。此外,我们还创建了一个VirusTotal 集合,其中包含所有指标。

指标类型参考
95.217.125.200IP 地址LOBSHOT C2
e4ea88887753a936eaf3361dcc00380b88b0c210dcbde24f8f7ce27991856bf6SHA-256LOBSHOT

参考

以上研究中参考了以下内容:

附录

Chrome 钱包扩展

钱包名称扩展 ID
Yoroiffnbelfdoeiohenkjibnmadjiehjhajb
TronLinkibnejdfjmmkpcnlpebklmnkoeoihofec
Nifty Walletjbdaocneiiinmjbjlgalhcelgbejmnid
MetaMasknkbihfbeogaeaoehlefnkodbefgpgknn
Math Walletafbcbjpbpfadlkmhmclhkeeodmamcflc
Coinbase Wallethnfanknocfeofbddgcijnmhnfnkdnaad
Binance Walletfhbohimaelbohpjbbldcngcnapndodjp
Brave Walletodbfpeeihdkbihmopkbjmoonfanlbfcl
Guardahpglfhgfnhbgpjdenjgmdgoeiappafln
Equal Walletblnieiiffboillknjnepogjhkgnoapac
Jaxx Libertycjelfplplebdjjenllpjcblmjkfcffne
BitApp Walletfihkakfobkmkjojpchpfgcmhfjnmnfpi
iWalletkncchdigobghenbbaddojjnnaogfppfj
Wombatamkmjjmmflddogmhpjloimipbofnfjih
Oxygenfhilaheimglignddkjgofkcbgekhenbh
MyEtherWalletnlbmnnijcnlegkjjpcfjclmcfggfefdm
GuildWalletnanjmdknhkinifnkgdcggcfnhdaammmj
Saturn Walletnkddgncdjgjfcddamfgcmfnlhccnimig
Ronin Walletfnjhmkhhmkbjkkabndcnnogagogbneec
Station Walletaiifbnbfobpmeekipheeijimdpnlpgpp
Harmonyfnnegphlobjdpkhecapkijjdkgcjhkib
Coin98 Walletaeachknmefphepccionboohckonoeemg
EVER Walletcgeeodpfagjceefieflmdfphplkenlfk
KardiaChain Walletpdadjkfkgcafgbceimcpbkalnfnepbnk
Phantombfnaelmomeimhlpmgjnjophhpkkoljpa
Pali Walletmgffkfbidihjpoaomajlbgchddlicgpn
BOLT Xaodkkagnadcbobfpggfnjeongemjbjca
Liquality Walletkpfopkelmapcoipemfendmdcghnegimn
XDEFI Wallethmeobnfnfcmdkdcmlblgagmfpfboieaf
Namilpfcbjknijpeeillifnkikgncikgfhdo
MultiversX DeFi Walletdngmlblcodfobpdpecaadgfbcggfjfnm

Edge 钱包扩展

钱包名称扩展 ID
Yoroiakoiaibnepcedcplijmiamnaigbepmcb
MetaMaskejbalbakoplchlghecdalmeeeajnimhm
Math Walletdfeccadlilpndjjohbjdblepmjeahlmm
Ronin Walletkjmoohlgokccodicjjfebfomlbljgfhk
Station Walletajkhoeiiokighlmdnlakpjfoobnjinie
BDLT 钱包fplfipmamcjaknpgnipjeaeeidnjooao
Glowniihfokdlimbddhfmngnplgfcgpmlido
OneKeyobffkkagpmohennipjokmpllocnlndac
MetaWalletkfocnlddfahihoalinnfbnfmopjokmhl

Firefox 钱包扩展

钱包名称扩展 ID
Yoroi{530f7c6c-6077-4703-8f71-cb368c663e35}.xpi
Ronin Walletronin-wallet@axieinfinity.com.xpi
MetaMaskwebextension@metamask.io.xpi
TronLink{5799d9b6-8343-4c26-9ab6-5d2ad39884ce}.xpi
{aa812bee-9e92-48ba-9570-5faf0cfe2578}.xpi
{59ea5f29-6ea9-40b5-83cd-937249b001e1}.xpi
{d8ddfc2a-97d9-4c60-8b53-5edd299b6674}.xpi
Phantom{7c42eea1-b3e4-4be4-a56f-82a5852b12dc}.xpi
{b3e96b5f-b5bf-8b48-846b-52f430365e80}.xpi
{eb1fb57b-ca3d-4624-a841-728fdb28455f}.xpi
{76596e30-ecdb-477a-91fd-c08f2018df1a}.xpi