前言
2024年8月,一款名为“BANSHEE 窃取程序”的新型 macOS 恶意软件出现,引起了网络安全界的关注。据报道,BANSHEE 窃取程序由俄罗斯威胁参与者开发,并在地下论坛发布,旨在同时支持 macOS x86_64 和 ARM64 架构。
这款恶意软件对 macOS 用户构成了严重威胁,其目标是重要的系统信息、浏览器数据和加密货币钱包。
BANSHEE 窃取程序每月订阅价格高达 3000 美元,在市场上脱颖而出,尤其与 AgentTesla 等已知窃取程序相比。
随着 macOS 越来越成为网络犯罪分子的主要目标,BANSHEE 窃取程序突显了 macOS 特定恶意软件的日益增多。本分析探讨了 BANSHEE 窃取程序的技术细节,旨在帮助社区了解其影响并及时了解新兴威胁。
关键要点
- BANSHEE 窃取程序突显了 macOS 恶意软件样本数量的增长,因为该操作系统正成为网络威胁的更具吸引力的目标。
- 与基于 Windows 的窃取程序相比,BANSHEE 窃取程序的 3000 美元月费非常高。
- BANSHEE 窃取程序针对各种浏览器、加密货币钱包和大约 100 个浏览器扩展程序,使其成为一种用途广泛且危险的威胁。
恶意软件分析
我们在本次研究中分析的恶意软件包含所有 C++ 符号,这很有趣,因为我们通过了解这些源代码文件名可以猜测项目的代码结构,如下图所示。查看 C++ 生成的全局变量初始化函数,我们可以找到在构建过程中由用户自动/手动设置的值,例如远程 IP、加密密钥、构建 ID 等。
下表总结了通过二进制文件中的符号泄露的 .cpp
文件名。
文件名 | 描述 |
---|---|
Controller.cpp | 管理核心执行任务,包括反调试措施、语言检查、数据收集和数据泄露。 |
Browsers.cpp | 处理从各种网络浏览器收集数据。 |
System.cpp | 执行 AppleScript 以收集系统信息并执行密码钓鱼。 |
Tools.cpp | 提供用于加密、目录创建和压缩等的实用程序函数。 |
Wallets.cpp | 负责收集加密货币钱包的数据。 |
调试器、虚拟机检测和语言检查
BANSHEE 窃取程序使用基本技术来逃避检测。它利用 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
,该命令提供有关系统软件和硬件的详细信息。它通过内置的 macOS cURL
命令向 freeipapi.com
请求机器的公网 IP。
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 文件。然后对 ZIP 文件进行异或加密和 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 窃取器是基于 macOS 的恶意软件,可以从系统、浏览器、加密货币钱包和众多浏览器扩展程序中收集大量数据。尽管其功能可能非常危险,但该恶意软件缺乏复杂的混淆,并且存在调试信息,这使得分析师更容易对其进行剖析和理解。虽然 BANSHEE 窃取器的设计并非过于复杂,但其专注于 macOS 系统以及收集的数据范围使其成为一项重大威胁,需要网络安全界予以关注。
可观察指标
所有可观察指标也可在 此处 以 ECS 和 STIX 格式下载,并打包在一个压缩包中。
本研究中讨论了以下可观察指标。
可观察指标 | 类型 | 名称 | 参考 |
---|---|---|---|
11aa6eeca2547fcf807129787bec0d576de1a29b56945c5a8fb16ed8bf68f782 | SHA-256 | BANSHEE 窃取器 | |
45.142.122[.]92 | ipv4-addr | BANSHEE 窃取器 C2 |