一年多来,针对 macOS 设备的信息窃取者一直在上升,Atomic Stealer (Amos)、RealStealer (Realst)、MetaStealer 变种通过恶意网站、破解应用程序和木马安装程序在野外广泛传播。在过去的几周里,出现了一个新的macOS恶意软件系列,研究人员将其称为“Cuckoo Stealer”,引起了人们对其既充当信息窃取者又充当间谍软件的能力的关注。

在这篇文章中,我们从检测的角度回顾了 Cuckoo Stealer 的主要功能和逻辑,并提供了扩展的妥协指标,以帮助威胁猎人和防御者。在撰写本文时,最新版本的 XProtect 版本 2194 不会阻止 Cuckoo Stealer 恶意软件的执行。SentinelOne 客户受到保护,免受 macOS Cuckoo Stealer 的侵害。

更多杜鹃偷窃者出现

自 4 月 30 日关于该恶意软件系列出现的初步报告以来,我们看到新样本和木马应用程序从 Kandji 最初报告的 4 个增加到撰写本文时的 18 个独特的木马应用程序,并且每天都有新样本出现。

木马应用程序是各种“潜在有害程序”,提供可疑服务,例如 PDF 或音乐转换器、清洁程序和卸载程序(完整列表出现在本文末尾的 IoC 中),例如:

  • 应用 Uninstaller.app

  • DumpMedia 亚马逊音乐 Converter.app

  • 适用于Android的FoneDog Toolkit Mac.app

  • iMyMac PDF Compressor.app

  • PowerUninstall.app

  • TuneSolo Apple Music Converter.app

如前所述,这些应用程序在 MacOS 文件夹中包含一个名为 的恶意二进制文件。最新的二进制文件(适用于英特尔 x86 和 arm64 架构的“胖”和“瘦”版本)是临时共同设计的,它们的父应用程序都共享相同的捆绑标识符 .updupd.upd

Apple 的实用程序将为所有这些示例提供相同的输出:codesign

codesign -dv file
…
Identifier=upd.upd
Format=Mach-O thin (x86_64)
CodeDirectory v=20400 size=1536 flags=0x2(adhoc) hashes=38+7 location=embedded
Signature=adhoc
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=0 size=12

Apple 的 Gatekeeper 为毫无戒心的用户提供了一些保护,默认情况下会发出警告,指出应用程序未经公证。恶意软件作者已经预料到了这一点,并向用户提供了有关如何运行该应用程序的说明。

macOS Cuckoo Stealer 网守

该恶意软件是用 C++ 编写的,是在 Xcode 版本 12.2 的 12B45b 中创建的,这是一个相当旧的版本,于 2020 年 11 月发布,使用仍在运行 macOS 11 Big Sur(版本 20A2408)的设备从同年开始。

代码签名和包含此信息的应用程序使当前样本相对容易识别。Info.plist

简单的混淆帮助杜鹃躲在苹果窝里

该恶意软件的一个显着特征是大量使用XOR字符串,以试图从简单的静态签名扫描程序中隐藏其行为。这些示例使用不同长度的不同 XOR 密钥(请参阅本文末尾的 IoC 列表)来动态解密主字符串和功能。

尽管二进制文件被剥离并且缺少函数名称,但解密例程很容易从代码其余部分对它的大量交叉引用中识别出来。当前示例精确地调用解密例程 223 次。

布谷鸟解密功能

布谷鸟解密功能

通过在调试器中中断此函数,输出解密的字符串以了解恶意软件的行为相对简单。

但是,并非所有混淆字符串都通过此函数进行处理。解密密钥和例程也可以在代码的其他地方独立找到。

在当前二进制文件中为数不多的未混淆字符串中,有一个字符串表示文件扩展名数组,指示恶意软件作者有兴趣窃取的信息类型。

{"txt", "rtf", "doc", "docx", "xls", "xlsx", "key", "wallet", "jpg", "dat", "pdf", "pem", "asc", "ppk", "rdp", "sql", "ovpn", "kdbx", "conf", "json"}

寻找对“wallet”(数组中的项目之一)的交叉引用,我们发现该数组被消耗在一个函数中,该函数同时调用解密函数和另一个实现相同 XOR 例程和密钥的函数。

macOS Cuckoo 函数解密

在 radare2 中,我们可以通过字符串地址的命令输出找到对 XOR 键的所有引用。greppingax

在 radare2 中查找交叉引用

在 radare2 中查找交叉引用

Cuckoo Stealer 可观察行为

尽管有这些混淆尝试,但对 Cuckoo Stealer 的分析表明,不出所料,它使用了许多与我们在过去 12 个月左右遇到的其他信息窃取者相同的技术。特别是,它使用AppleScript来复制感兴趣的文件和文件夹,并以纯文本形式窃取用户的管理员密码。

SentinelOne 检测到杜鹃偷窃者

SentinelOne 检测到 Cuckoo Stealer

这是通过使用“隐藏答案”选项的简单AppleScript对话框实现的,macOS攻击者至少从2008年开始就一直在使用这种策略,正如我们最近在Atomic Stealer中观察到的那样。

#Microsoft,好的,但是 #Apple 安全性也失败了吗?
2008 年,在 #XProtect 之前,在 OS X 10.5 Leopard 中,PokerStealer 以明文形式抓取密码,就像 Atomic Stealer、MetaStealer 和其他公司在 2024 年仍在做的那样。
fa91b42b68d92f57b56929cb35c12ae54e022ad2 pic.twitter.com/oe2MNHJLsf

— 菲尔·斯托克斯 ⫍🐠⫎ (@philofishal) April 4, 2024

使用 Cuckoo Stealer,如果用户输入的不是有效的管理员密码,恶意软件将重复显示对话框,直到提供正确的密码。即使用户按下“取消”按钮,这仍然是正确的。

Kandji的研究人员在这里很好地阐明了如何检查密码的基本机制。然后,抓取的密码以明文形式保存在用户主目录的隐藏子文件夹中命名的文件中。隐藏文件夹的名称是 和 随机生成的标识符的组合。例如:pw.dat.local-UUID

~/.local-6635DD81-94DD-59E3-9D84-20BD41C51999/

以下正则表达式可用于查找包含此模式的路径或命令:

\.local-[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}/

// alternatively:
\.local-[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/

此外,该恶意软件还尝试安装带有标签的持久性 LaunchAgent。属性列表文件本身的名称将采用父应用程序包的形式。例如,木马 DumpMedia Spotify Music Converter.app 将创建一个名为 的 plist,而 iMyMac Video Converter.app 将写出与 相同的 plist。com.user.loginscript~/Library/LaunchAgents/com.dumpmedia.spotifymusicconverter.plistcom.immyac.videoconverter.plist

Cuckoo Stealer 启动代理

Cuckoo Stealer 启动代理

此持久性代理将指向位于上述同一隐藏目录中的二进制文件的副本。upd.local-<UUID>

该恶意软件还利用了几个 Living Off the Land 实用程序,包括 和 用于发现。xattrosascriptsystem_profiler

命令

参数

AWK的

/硬件 UUID/{打印 $(NF)}

启动CTL

加载 -w “/Users/user1/Library/LaunchAgents/com.dumpmedia.spotifymusicconverter.plist”

osascript

-e '显示对话框“macOS 需要访问系统设置”默认答案“”,标题为“系统偏好设置”,图标警告与隐藏答案'

system_profiler

SPHardwareDataType \|awk '/硬件 UUID/{print $(NF)}'

XATTR的

-d com.apple.quarantine “/用户/user1/.local-6635DD81-94DD-59E3-9D84-20BD41C51999/DumpMediaSpotify音乐转换器”

SentinelOne 检测到 Cuckoo Stealer

Cuckoo Stealer 执行链

SentinelOne 可防止杜鹃偷窃者

SentinelOne Singularity 检测 Cuckoo Stealer,并在策略设置为 Protect/Protect 时阻止其执行。在检测模式下,代理将允许分析师观察和调查恶意行为,如下所示。

SentinelOne 控制台检测到 Cuckoo Stealer

代理版本 23.4.1.7125 及更高版本提供了一组广泛的行为指示器,包括对特定于 macOS 信息窃取程序的 MITRE TTP 的引用。

结论

Cuckoo Stealer 活动背后的参与者显然已经投入了一些资源来开发一种新颖的信息窃取器,而不是购买目前在各种 Telegram 频道和暗网论坛上流传的任何现成产品。这一点,以及自最初报告此威胁以来我们观察到的样本数量的增加,表明我们将来可能会看到该恶意软件的更多变体。

建议企业使用第三方安全解决方案,例如 SentinelOne Singularity,以确保设备免受针对机群中 macOS 设备的此威胁和其他威胁。

要了解有关 SentinelOne 如何帮助保护您的组织的更多信息,请联系我们或申请免费演示

妥协指标

捆绑标识符
upd.upd

观察到的应用程序名称应用程序 Uninstaller.app

DumpMedia Amazon Music Converter.app
DumpMedia DeezPlus.app
DumpMedia Pandora Music Converter.app
DumpMedia Spotify 音乐 Converter.app
DumpMedia 视频 Converter.app
DumpMedia YouTube Music Converter.app
FoneDog 数据 Recovery.app
FoneDog iPhone Cleaner.app
FoneDog PDF Compressor.app
适用于 Android 的 FoneDog Toolkit Mac.app 适用于 iOS 的
FoneDog 工具包 Mac.app
FoneDog Video Converter.app
iMyMac PDF Compressor.app
iMyMac Video Converter.app
PowerUninstall.app
TunesFun Apple Music Converter.app
TuneSolo Apple Music Converter.app

观察到的马赫-Os (SHA1)
04a572b2a17412bba6c875a43289aac521f7b98d
0e3e58a2b19072823df2ec52f09e51acf0d0d724
127c486eab9398a2f42208d96aa12dd8fcfb68b5
1ef1f94d39931b6e625167b021a718f3cfe 6bb80
1f49bb334ebcec6b2493d157caf90a8146fb68d9
219f57e9afe201ad4088340cd5b191223d4c4227
24c311abe5d93d21172a6928ba3a211528aa04f9
266f48c38efbb5a6d49fb74194c74fe68d02d62a
298c9ab225d7262a2106bc7bec0993eaa1210a0d
2a422057790bae755c3225aff3e47977df234b11
2c7ec5358b69f8e36c35c53501e4ba6efce25689
2cdda89c50c2aa1eb4b828350b7086748c58fe08
3 5d75565de813e89a765718ed31c1bfebfd3c11c
4cf895c391557498d2586cee3ace3c32a3a83a4e
4cfdf872051900df8a959b95a03f6c906ad4596e
50360b325aad398a5d580a2adc9aef597eb98855
5220a53c1930ea93849caa88850cb6628a06cd90
57a1f3d3cbbc33b92177660ee620bff4f1c5b229
63eb1abe69b11c8ae04092ccf822633d1e1ff648
69c6c1f09f8a1ad61f1c48527ff27e56847a716f
66f aba0ebabccea1902ba2ab7ac183a4bd22617555
71fddbccb15904b14b5773e689f611bfd5a0d111
82c70c956f5f66cf642991285fd631a9094abbf4
873fd2fc21457e707832c859534d596a7c803a46
8bab36fe676c8296ef3889d5ef0afcc4b3f017f3
8bc02ae4262eaf2cbb2454709db7f95cebcc9432
8bee44d0e4e22d3a85cfb9d00d00cb7d85433c9d
8c10459be56dde03c75cda993a489373a8251abf 9ac058dda
4541aa0e7ba222d25c55c407451f318a7
9d4b45104b3eb3734cb0ba45ca365b95a4c88505
9efa91a0cba44334b1071344314853699155814f
ac755f6da9877a4fc161d666f866a1d82e6de1b0
ac948abaa90b4f1498e699706407ac0c6d4164c7
b49a69fa41a2d7f5f81dbc2be9ea7cfc45c1f3df
b4bd11aa174d1a2f75aff276a2f9c50c4b6a4a1d
b4da5459ccd0556357f8ccd3471a63eebfa6e3b7
b66 5880c2aecc15db8afa80f027ed0650be23e8f9
bd5cdf05db06c3a81b0509e9f85c26feb34cea81
c5c8335ed343d14d2150a9ba90e182ca739bde8a
c8a6e4a3b16adf5be7c37b589d36cb2bd9706a92
c98d92e01423800404c77f6f82d62e5e7516d46d
cd04a6df24ab7852267619d388dee17f20c66deb
cf069bcafb6510282c8aeab7282e19abc46d558f
db180e1664e566a3393d884a52b93b35bb33911e
db1 9034d60973d0bcaa237c24252fe969803bc7c
dfed0ca9d883a45a40b2c23c29557ac4679ef698
e57b537f5f3307c6c59f5477e6320f17a9ba5046
e68f0f0e6102a1cd78d5d32ec7807b2060d08f79
e6fa7fcbaf339df464279b8090f6908fed7b325a
e9180ee202c42e2b94689c7e3fb2532dd5179fad
ecca309e0b43cd7f4517a863b95abf7b89be4584
f4999331606b753daaf6d6ad84917712f1420c85
f6e9081e36ca28bf619aebb40a67c56a2de2806e
fad49cac81011214d7fe3db7fc0bd663ef7bb353

观察到的异或键
0dhIscuDmR6xn3VMAG9ZYjBKC4VDeXGbyDyWjHM 4E72G6aXPne5ejcUgAfae6khJB3c871V0QUmkI 6neCM1yILp7V3BbMpgfgYYE6KY 7ricF8bWO0eBNiKEravcj2iIXohSNt
7Y9lGDAyEf9vxEmFgRqq pDwYM52NFPbsUc
GXMSjRLvCPrrFnc1xa3xvYd43DfM8
HhvDDxmmfm7QuLH4rP63Fzn2eyW5BzuM3N
Hnyl2YPkOMLTNOndVtQwON
JB3k62Vtqymx09aJtnF9lZrCeIc
JsGqCdROAT1VDpSnxrAyZY45uQvRFP

LydNPzURb22Lxk4fxPkdd
MTGpOAycVm9btlQyEa5xVQPiz
Qmi5gstd6Oc27AJLXJQtEqGMxXzHUx
QssogTgvuTaZzPYZQynw0d
aZeTZw0X2lXM083cgmJQvnmCn9kmt
coOwAdmPtzt5Ps9rvUGOMEeFYajX2nJaismV
rzdbcSkVHXHefChUJQFGjAm12oinXwlyH2sHfiY
vLiOnPSKZ1bqjlp1dwuDvmmeQ3QN