序言
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 包提供。
本研究中讨论了以下可观察对象。
可观察对象 | 类型 | 名称 | 参考 |
---|---|---|---|
11aa6eeca2547fcf807129787bec0d576de1a29b56945c5a8fb16ed8bf68f782 | SHA-256 | BANSHEE 窃取器 | |
45.142.122[.]92 | ipv4-addr | BANSHEE 窃取器 C2 |