Elastic Security Labs

超越哀嚎:解构 BANSHEE 信息窃取器

BANSHEE 恶意软件是一种基于 macOS 的信息窃取器,目标是系统信息、浏览器数据和加密货币钱包。

10 分钟阅读恶意软件分析
Beyond the wail: deconstructing the BANSHEE infostealer

序言

2024 年 8 月,一种名为“BANSHEE Stealer”的新型 macOS 恶意软件出现,引起了网络安全社区的关注。据报道,BANSHEE Stealer 由俄罗斯威胁行为者开发,在地下论坛上推出,旨在跨 macOS x86_64 和 ARM64 架构运行。

这种恶意软件对 macOS 用户构成严重风险,其目标是重要的系统信息、浏览器数据和加密货币钱包。

BANSHEE Stealer 的每月订阅价格高达 3,000 美元,在市场上脱颖而出,尤其与 AgentTesla 等已知的窃取器相比。

随着 macOS 越来越成为网络犯罪分子的主要目标,BANSHEE Stealer 突显了 macOS 特定恶意软件的日益增多。本次分析探讨了 BANSHEE Stealer 的技术细节,旨在帮助社区了解其影响并随时了解新出现的威胁。

主要发现

  • BANSHEE Stealer 突显了 macOS 恶意软件样本数量的增长,因为该操作系统正成为网络威胁更具吸引力的目标。
  • 与基于 Windows 的窃取器相比,BANSHEE Stealer 的每月 3,000 美元价格明显偏高。
  • BANSHEE Stealer 的目标包括各种浏览器、加密货币钱包和大约 100 个浏览器扩展程序,使其成为一种用途广泛且危险的威胁。

恶意软件分析

我们在本次研究中分析的恶意软件包含了所有的 C++ 符号,这很有趣,因为我们可以通过了解这些源代码文件名来猜测项目的代码结构,如下图所示。查看 C++ 生成的全局变量初始化函数,我们可以找到用户在构建过程中自动/手动设置的值,例如远程 IP、加密密钥、构建 ID 等。

下表总结了通过二进制文件中的符号泄露的 .cpp 文件名。

文件名描述
Controller.cpp管理核心执行任务,包括反调试措施、语言检查、数据收集和外泄。
Browsers.cpp处理从各种 Web 浏览器收集的数据。
System.cpp执行 AppleScript 以收集系统信息并执行密码网络钓鱼。
Tools.cpp提供用于加密、目录创建和压缩等实用功能。
Wallets.cpp负责从加密货币钱包中收集数据。

调试器、VM 检测和语言检查

BANSHEE Stealer 使用基本技术来躲避检测。它利用 sysctl API 来检测调试。

对于虚拟化检测,它运行命令 system_profiler SPHardwareDataType | grep 'Model Identifier' 来确定硬件型号标识符中是否出现字符串 Virtual,这表明是虚拟机。这些方法相对简单,可以被高级沙箱和恶意软件分析师轻松规避。

此外,它解析从 CFLocaleCopyPreferredLanguages API 返回的用户首选规范化语言,并查找字符串 ru。这种策略有助于恶意软件避免感染以俄语为主要语言的系统。

系统信息收集

用户密码

恶意软件会创建一个 Osascript 密码提示,其中包含一个对话框,说明要启动应用程序,您需要更新系统设置。请输入您的密码。

当用户输入密码时,将使用 dscl 命令通过运行 dscl Local/Default -authonly <username> <password> 来验证密码。

如果有效,密码将被写入以下文件 /Users/<username>/password-entered

这些凭据可以用于解密系统上存储的密钥链数据,从而可以访问所有保存的密码。

文件、软件和硬件信息收集

函数 System::collectSystemInfo 收集系统信息,并将其序列化为 JSON 对象。它执行命令 system_profiler SPSoftware DataType SPHardwareDataType,其中提供了有关系统软件和硬件的详细信息。它通过从 freeipapi.com 请求来获取机器的公网 IP,并通过内置的 macOS cURL 命令进行。

JSON 文件将保存在 <temporary_path>/system_info.json 下。

BANSHEE 窃取器执行 AppleScript;有趣的是,它将 AppleScript 写入同一个文件 /tmp/tempAppleScript

要执行的第一个脚本首先使用 osascript -e 'set volume with output muted' 命令将系统声音静音。然后,它从系统中收集各种文件,这些文件如下所示:

  • Safari Cookie
  • 笔记数据库
  • 来自桌面和文档文件夹的具有以下扩展名的文件:.txt.docx.rtf.doc.wallet.keys.key

转储密钥链密码

它将系统的密钥链 /Library/Keychains/login.keychain-db 复制到 <temporary_path>/Passwords

浏览器收集

BANSHEE 目前从 9 种不同的浏览器收集数据,包括浏览器历史记录、Cookie、登录信息等。

  • Chrome
  • Firefox
  • Brave
  • Edge
  • Vivaldi
  • Yandex
  • Opera
  • OperaGX

关于 Safari,当前版本仅通过 AppleScript 脚本收集 Cookie。

此外,还会从机器上收集大约 100 个浏览器插件的数据。这些扩展 ID 的列表在本博文末尾提供。

收集的文件保存在 <temporary_path>/Browsers 下。

钱包收集

  • Exodus
  • Electrum
  • Coinomi
  • Guarda
  • Wasabi Wallet
  • Atomic
  • Ledger

收集的钱包存储在 <temporary_path>/Wallets 下。

外泄

恶意软件完成数据收集后,首先使用 ditto 命令压缩临时文件夹。然后对 ZIP 文件进行 XOR 加密和 base64 编码,并通过 POST 请求发送到 URL:http://45.142.122[.]92/send/,使用内置的 cURL 命令。

行为检测

YARA 规则

Elastic Security 创建了 YARA 规则来识别此活动。以下是用于识别 BANSHEE 恶意软件的 YARA 规则

rule Macos_Infostealer_Banshee {
    meta:
        author = "Elastic Security"
        creation_date = "2024-08-13"
        last_modified = "2024-08-13"
        os = "MacOS"
        arch = "x86, arm64"
        category_type = "Infostealer"
        family = "Banshee"
        threat_name = "Macos.Infostealer.Banshee"
        license = "Elastic License v2"

    strings:
        $str_0 = "No debugging, VM, or Russian language detected." ascii fullword
        $str_1 = "Remote IP: " ascii fullword
        $str_2 = "Russian language detected!" ascii fullword
        $str_3 = " is empty or does not exist, skipping." ascii fullword
        $str_4 = "Data posted successfully" ascii fullword
        $binary_0 = { 8B 55 BC 0F BE 08 31 D1 88 08 48 8B 45 D8 48 83 C0 01 48 89 45 D8 E9 }
        $binary_1 = { 48 83 EC 60 48 89 7D C8 48 89 F8 48 89 45 D0 48 89 7D F8 48 89 75 F0 48 89 55 E8 C6 45 E7 00 }
    condition:
        all of ($str_*) or all of ($binary_*)
}

结论

BANSHEE Stealer 是一款基于 macOS 的恶意软件,可以从系统、浏览器、加密货币钱包和众多浏览器扩展程序中收集大量数据。尽管该恶意软件具有潜在的危险功能,但由于其缺乏复杂的混淆和存在调试信息,分析人员可以更容易地对其进行剖析和理解。虽然 BANSHEE Stealer 在设计上并非过于复杂,但它专注于 macOS 系统及其收集的数据范围使其成为一个重大威胁,需要网络安全社区的关注。

可观察对象

所有可观察对象也可以在 下载,以 ECS 和 STIX 格式的组合 zip 包提供。

本研究中讨论了以下可观察对象。

可观察对象类型名称参考
11aa6eeca2547fcf807129787bec0d576de1a29b56945c5a8fb16ed8bf68f782SHA-256BANSHEE 窃取器
45.142.122[.]92ipv4-addrBANSHEE 窃取器 C2