【翻译】信息窃取软件Vidar Stealer的分析与复现
面包and牛奶 发表于 山东 企业安全 780浏览 · 2024-06-06 13:12

翻译:https://www.cyfirma.com/research/vidar-stealer-an-in-depth-analysis-of-an-information-stealing-malware/

在CYFIRMA,我们致力于提供有关普遍威胁和恶意实体使用的策略的最新见解,这些威胁和策略针对的是组织和个人。这项深入的研究关注于Vidar Stealer,一种作为服务型恶意软件运行的信息窃取工具。研究探讨了威胁行为者使用的策略,以在系统和网络上规避检测,以及他们隐藏恶意代码和活动的技术。此外,它还检查了他们使用社交媒体平台获取数据窃取和更新的命令与控制详情的情况。

0X00 介绍


这项研究提供了Vidar Stealer的简明概述,这是一种用C++编写的强大恶意软件,能够从受到危害的系统中窃取广泛的数据。Vidar Stealer针对用户的个人数据、Web浏览器数据、加密货币钱包、财务数据、用户目录内的敏感文件、通讯应用程序、进程探查器数据、网络通讯等。这种可定制的恶意软件正作为服务型恶意软件在暗网和地下论坛上出售,并利用社交媒体平台作为其C2(命令与控制)基础设施的一部分获取如IP地址、指令、更新和下载等详细信息。了解Vidar Stealer的操作和影响对于网络安全专业人员来说至关重要,以便他们能够针对这种复杂的威胁制定有效的防御策略。

关键发现

  • Vidar是一款窃取各种数据的信息盗窃恶意软件。
  • 它作为服务型恶意软件在暗网和地下论坛上出售。
  • 它具有可定制的功能。
  • 该恶意软件在加密形式下隐藏核心恶意代码,并在分析环境以寻找调试器/分析工具后进行解码。
  • 将恶意代码注入合法的Windows进程。
  • 使用社交媒体平台获取C2细节。
  • 从C2下载额外的二进制文件以支持其操作。
  • 检查自签名证书的使用以检测恶意软件与C2之间潜在的网络拦截。
  • 从受损系统中收集包括个人和财务数据、应用程序数据、系统活动等在内的广泛数据。
  • 将所有目标数据收割到ProgramData文件夹内的随机生成的文件名下。
  • 将所有收集到的数据传输到C2服务器,并随后从ProgramData文件夹中删除它们,以消除数据窃取的潜在痕迹。
  • 分析的样本没有表现出持久性机制的迹象。
  • 根据在暗网和Telegram频道上推广和出售恶意软件所使用的语言,威胁行为者似乎来自俄罗斯。

0X01 TLM归属


Vidar Stealer最早于2018年被发现,此后它已经多次更新以增强其功能。该恶意软件由一个专门的团队支持,他们在其门户网站上声称每周一提供更新:


Vidar Stealer将Telegram和Steam等社交媒体平台整合到其基础设施中,不仅为订阅用户提供更新和支持,而且还提供了命令和控制(C2)功能。这包括在配置文件页面上嵌入IP地址/URL,恶意软件在执行的初始阶段会检索这些信息。
以这种方式使用社交媒体可以提供对恶意软件运行所需信息的无限制访问,而不会引起任何警报。仅通过更新社交媒体个人资料页面上的详情,例如IP地址,C2就可以改变,这提供了从服务拒绝中的保护,以防IP/URL被网络服务提供商或安全解决方案阻塞。


Vidar的Telegram官方支持频道,以及拥有372名订阅者的使用俄语的Vidar新闻Telegram频道,表明了恶意软件或威胁行为者的俄罗斯起源:

在二月份时,“Sultan”——Vidar恶意软件背后的名字,分享了一张图片,展示了Lumma和Raccoon窃取者一起对抗杀毒解决方案的情形。这表明威胁行为者之间的合作,他们联合起来共享基础设施以实现他们的目标。

在我们进行的观察中,我们注意到 Vidar Stealer 与 STOP/Djvu 勒索软件之间随时间发展出的有趣合作。我们观察到它们经常一起传播,通常伴随着 SmokeLoader 后门。此外,已知 SmokeLoader 可以引入 RedLine 窃取者和 Laplas 剪贴板特洛伊木马。当所有这些组件在单个 PC 上运行时,结果是混乱的。很可能 Djvu 勒索软件联盟旨在通过利用这一广泛的恶意软件阵列,从单个受害者那里获取最大利润。
威胁环境:从外部威胁环境的角度来看,威胁环境呈现出动态和不断发展的特点,其特征是 Vidar Stealer 等复杂恶意软件的存在。威胁行为者展示出高度的适应能力,采用高级策略以规避检测并最大化其恶意活动。
值得注意的是,Vidar Stealer 与 STOP/Djvu 勒索软件等其他恶意软件品种之间的合作,凸显了现代网络威胁的相互联系性质。此外,利用 Telegram 和 Steam 等社交媒体平台推广恶意软件,强调了监视这些渠道以便早期威胁检测的重要性。总的来说,组织和个人面临来自利用多种恶意软件变体的多方面攻击的重大风险,强调了需要强大的网络安全措施和主动防御策略。
恶意软件样本是一个32位基于控制台的可执行文件,通常作为下载器恶意软件(如私有加载器)的载荷交付。它是使用Visual Studio编译并用C++编码的。
这个非封装文件包含五个部分,其中两个标记为可执行。这表明在满足特定条件后,代码执行可能会转换以支持底层操作。

.data部分的熵值以及统一的字节分布表明该部分内存在混淆内容:

该恶意软件最初仅加载两个库,其余所需库在运行时加载:

导入表明恶意软件的功能和反分析措施:

0X02 行为与代码分析


第一阶段

初始阶段,恶意软件利用如GetEnvironmentStrings和GetModuleHandleExW这样的API调用来检索环境细节。随后,如果检测到调试器或分析环境,它会触发内存访问违规异常,并通过调用RtlExitUserProcess终止进程。

第二阶段

如果恶意软件没有检测到任何分析环境,它会继续使用按位异或运算对.data部分的内容进行解码:


解码后的内容揭示了许多信息,包括C2 URL、通讯中使用的用户代理、目标数据和应用程序等:

第三阶段

解码.data部分内容之后,它会继续创建一个挂起的进程RegAsm.exe:

在此之后,它通过将解码后的.data部分中检索到的代码写入挂起的RegAsm.exe进程的虚拟内存中,执行进程注入:

将代码注入到RegAsm.exe之后,它会恢复挂起的进程,并随后自我终止:

第四阶段

此阶段,RegAsm.exe执行被注入的代码。它建立连接,从解码后的.data部分内容中提取的字符串识别出的URLhttps[:]//steamcommunity[.]com/profiles/76561199686524322中检索C2信息:

响应体中包含了C2地址https[:]//65.108.55.55[:]9000,它从受害者的PC中窃取数据:

它在C:\Users\user\AppData\Local\Microsoft\Windows\INetCache\IE\WO8CAGSI目录('WO8CAGSI'是随机生成的目录名)中下载了sqlx[1].dll,这是一个非恶意的sqlite3二进制文件,它实现了一个自包含的、无服务器的、零配置的、事务性SQL数据库引擎,以帮助进行数据收集和窃取:

恶意软件还发起了另一个通信请求,目标URL为https[:]//t[.]me/k0mono,这个地址也在解码内容中找到:

对这个请求的响应包含了另一个C2地址https[:]//91.107.221.88[:]9000

所有网络通信都通过使用TLS 1.2的安全渠道进行。任何试图拦截此通信的尝试都会导致恶意进程终止,并伴随着错误信息“证书验证失败:自签名证书”:

0X03 数据窃取


在最终阶段,恶意进程开始从受害者的PC收集并窃取数据。这包括来自Web浏览器的数据,包括cookies、历史记录、扩展、登录数据、会话数据和缓存。此外,它还针对加密货币钱包、用户目录内的敏感文件,以及来自Telegram应用的数据:

它还尝试使用ReadFile操作读取系统特定的目录(隐藏在安全描述符或系统目录中),例如$Recycle.Bin$Windows.~BT$SysReset,其中C:\$Directory是特定目录名称的占位符:

恶意软件还会访问与Windows中的安全描述符相关的特殊NTFS元数据属性:


此外,它还读取跳转列表,可以快速访问最近打开的文件、常用程序和相关任务:


它还读取C:\Windows\System32\config\SOFTWARE目录,该目录通常引用Windows系统上的Windows注册表中的关键文件:

除此之外,它还从ProgramData文件夹、进程资源管理器数据和网络请求中收集数据。所有这些数据都被编译到名为C:\ProgramData\HJJDGHCBGDHI的文件夹中,并具有不同的文件名:


为了将收集到的数据的访问权限限制在自己身上,该恶意软件采用了一种在整个运行过程中反复锁定和解锁文件的技术。一旦从受感染的系统中收集到目标数据,它就会将其泄露到指定的C2服务器,然后删除收集到的数据以消除任何泄露痕迹:

最后,恶意进程在完成数据窃取过程后会自动终止:

0X04 Vidar Stealer特征


分析 Vidar Stealer 提供了对其操作特性的宝贵见解。基于此项检查和提取的数据,以下几点概述了这款信息窃取恶意软件的能力:

  • 信息收集:Vidar 擅长从受感染的系统中收集各种敏感信息,包括浏览器数据(cookies、历史记录)、加密货币钱包、特定于系统的目录、进程探查器数据和网络请求。
  • 数据窃取:Vidar 将收集的数据窃取到命令与控制(C2)服务器。这包括通过安全渠道传输被窃信息以确保隐秘的窃取。
  • 规避技术:Vidar 采用多种规避技术来避免被安全软件检测到。这包括检查环境是否存在调试器/分析工具,使用自签名证书以检测网络拦截,以及使用混淆方法来隐藏其恶意代码。
  • 进程注入:利用进程注入针对合法的Windows进程(RegAsm.exe)。
  • 社交媒体:利用社交媒体平台作为其C2基础设施的一部分,以获取诸如C2 IP地址/URL、指令、更新和下载等细节。它还使用社交媒体来推广和分发恶意软件。
  • 与其他恶意软件的合作:观察到Vidar与其他恶意软件品种(如STOP/Djvu勒索软件)合作。这种合作导致了一次更全面和破坏性更大的攻击,利用多个恶意软件变种以最大化影响。

0X05 结论


总而言之,对 Vidar Stealer 的分析提供了对网络威胁不断演变的格局以及现代恶意软件的复杂性的宝贵见解。Vidar 的多方面能力,包括信息收集、数据窃取、规避技术和与其他恶意软件的合作,突显了组织和个人面对的网络攻击的复杂性和动态性。此外,恶意软件利用社交媒体平台的做法,强调了监控不同渠道以早期检测威胁的重要性。
随着网络威胁的不断发展,组织采取强有力的网络安全措施和主动防御策略以降低像 Vidar Stealer 这样的威胁带来的风险是必不可少的。为了降低与 Vidar Stealer 相关的风险,用户在打开不可信来源的文件或点击不熟悉的链接时应谨慎行事,特别是那些提供可疑软件或内容的链接。此外,部署强有力的网络安全措施,包括使用信誉良好的防病毒软件,确保软件定期更新,以及时刻警惕社会工程学策略,可以大大加强对此类威胁的保护。
对于平台提供者和用户来说,保持警觉,检测和报告可疑活动至关重要。网络安全专家和平台管理员之间的合作对于及时识别和处理此类威胁至关重要,从而导致更安全的在线环境。教育和意识提升活动也至关重要,它们能够为个人提供识别和避开此类恶意软件的知识,最终促进一个更具韧性和安全的在线生态系统的发展。

0X06 IOC


C2地址
S/N Indicators Type Context
1 7e74918f0790056546b862fa3e114c2a File installer.exe
2 fed19121e9d547d9762e7aa6dd53e0756c414bd0a0650e38d6b0c01b000ad2fc File installer.exe
3 90e744829865d57082a7f452edc90de5 File sqlx[1].dll
4 036a57102385d7f0d7b2deacf932c1c372ae30d924365b7a88f8a26657dd7550 File sqlx[1].dll
5 https[:]//steamcommunity[.]com/profiles/76561199686524322 URL C2
6 https[:]//t[.]me/k0mono URL C2
7 https[:]//65.108.55.55[:]9000 URL C2
8 https[:]//91.107.221.88[:]9000 URL C2
9 65[.]108[.]55[.]55 IP address C2
10 91[.]107[.]221[.]88 IP address C2
YARA规则
rule vidar_stealer {
meta:
description = “YARA rule for detecting Vidar Stealer”
author = CRT
reference = “MD5: 7e74918f0790056546b862fa3e114c2a, SHA256: fed19121e9d547d9762e7aa6dd53e0756c414bd0a0650e38d6b0c01b000ad2fc, URLs: steamcommunity.com/profiles/76561199686524322, t.me/k0mono, IP: 65.108.55.55, IP: 91.107.221.88”
strings:
$md5_hash = “7e74918f0790056546b862fa3e114c2a”
$sha256_hash = “fed19121e9d547d9762e7aa6dd53e0756c414bd0a0650e38d6b0c01b000ad2fc”
$steam_url = “steamcommunity.com/profiles/76561199686524322”
$telegram_url = “t.me/k0mono”
$c2_url1 = “65.108.55.55”
$c2_url2 = “91.107.221.88”
condition:
$md5_hash or $sha256_hash or $steam_url or $telegram_url or $c2_url1 or $c2_url2 }
0 条评论
某人
表情
可输入 255