“在收网之前,它会先用本地验证来确认受害者的登录密码,再大范围扫描浏览器、加密货币钱包、密码管理器与钥匙串,最后把窃取的数据用AES-GCM加密,通过libcurl外传——更狡猾的是,它还会把自己复制一份并重新签名,以此实现持久驻留。”Jamf Threat Labs的安全研究员Thijs Xhaflaire在分享给The Hacker News的报告中,这样描述一款新出现的macOS信息窃取木马CrashStealer。仅仅这一段话,就暴露了这款恶意软件的一系列精心设计:它不像多数同类那样依赖AppleScript做投递器,也不在Objective-C的包装层上打转,而是直接用原生C++打造,既精简又隐蔽。
从整个攻击链来看,CrashStealer的第一步就把自己伪装得非常“合规”。它由一个经过苹果官方公证的投递器进行分发,这个投递器被做成一个名为“Werkbit.app”的磁盘映像文件。磁盘映像本身以及其中的二进制文件都带有有效的开发者ID(Emil Grigorov,ID为WWB7JA7AQV),因此可以毫无障碍地通过Gatekeeper的安全检查。这种手法并不新鲜,却是攻击者持续利用的薄弱点:只要拿到一个合法的开发者签名,macOS的防线就会暂时撤除。
但分发环节还有一个更令人困惑的细节。该磁盘映像来自域名“werkbit[.]io”,这个域名的注册时间是2026年6月。更不寻常的是,下载并不是公开开放的——网站要求来访者输入一个正确的会议PIN码,只有拿到这个码的人才能获得安装包。这无疑是一种有目标的定向分发手段,攻击者借此筛选受害者,降低被安全厂商提早发现的风险。Jamf方面进一步调查发现,与此次行动共享后端基础设施的还有多个其他域名,这意味着CrashStealer很可能是一场横跨多平台、多地区的大规模攻击活动的一部分。
当用户真的挂载了这个磁盘映像,屏幕上会出现一个安装引导界面,它给出的指示居然是“用右键点击应用,然后选择‘打开’”。对于那些尚不熟悉macOS安全特性的用户来说,这个引导看起来像是在帮忙绕过未知开发者的警告,实际上却是把执行恶意代码的主动权交到了用户手里。一旦运行,“veltod”可执行文件就会立刻联系一个GitHub仓库(github.com/mgothiclove),去获取一个名为“sys.cache”的文件。这个看似普通的名字背后,其实藏着一条加密的命令:它从中提取出curl命令并拉下一个shell脚本。这个脚本扮演的是下载器的角色,负责把下一阶段的有效载荷——名为“CrashReporter.dmg”的文件——拉取到“/tmp”目录下,静待执行。
CrashStealer在成功启动后的行为几乎是一气呵成的。它首先把自己注册为LaunchAgent,这就保证了即使系统重启,木马也能继续活跃。接着,它开始施加各种反分析手段,让沙箱和调试器难以追踪。然后屏幕上会弹出密码提示框,受害者会像在正常系统操作里那样输入登录密码。木马收到密码后,并不会立刻外传,而是在本地进行验证,验证通过后,它就利用这个密码解锁登录钥匙串,从而可以读取保存在钥匙串中的各种凭据。更严重的是,它还会列出系统中已安装的安全工具与分析软件,好判断自己有没有被盯上。
这些前期准备完成以后,真正的大规模数据收割才拉开序幕。CrashStealer盯上的目标极为广泛,几乎覆盖了一个用户数字生活的所有关键角落。在浏览器端,所有基于Chromium内核的家族成员无一幸免:Google Chrome、Brave、Microsoft Edge、Opera、Opera GX、Vivaldi、Chromium以及Naver Whale,它都能从中抽取登录凭据。在加密货币钱包扩展方面,它列出了约80个目标,包括MetaMask、Phantom、Coinbase、Trust Wallet、Rabby、OKX Wallet、Exodus、Keplr、Solflare、Backpack等,这些钱包一旦被攻破,用户的加密资产就形同裸奔。密码管理器同样受到重点“关照”,1Password、Bitwarden、LastPass、Dashlane、Keeper、KeePassXC、NordPass、Enpass和RoboForm等14款主流管理工具全在其掠夺范围内。除此之外,它还会扫描用户“~/Documents”和“~/Downloads”目录下的文件,把其中看起来可能有价值的文档一并打包。
所有窃取到的数据最终会被压缩成一个ZIP归档,并通过加密通道发送到攻击者控制的服务器(IP地址179.43.166[.]242)。从Jamf Threat Labs描绘的整个过程来看,CrashStealer的设计者显然对macOS的安全机制和人类行为有着十分细致的观察:他们知道Gatekeeper可以靠公证绕开,知道用户会按照屏幕上“右键打开”的指示去做,知道弹出一个与系统风格类似的密码框时大多数人不会多想,更知道把下载逻辑藏在GitHub和多重解码里能拖慢安全团队的分析速度。一场原本可能被扼杀在摇篮里的攻击,正因这些被看透的行为习惯,一路顺畅地走到了数据外传的最后一步。
值得注意的是,CrashStealer将整套数据搜集、加密和传输的逻辑全部封装在原生C++代码中,相比用脚本语言编写的同类木马,它更难以被静态特征库捕捉,也更容易与合法的系统进程混在一起。这反映出macOS平台上的威胁已经从“脚本小子”时代跨入了一个更精密的阶段——攻击者不再满足于简单的外壳,而是刻意追求一种“看起来就像正常软件”的存在感。而那个由真实开发者签名且被公证过的投递器,就是这一思维之下最长效的保护伞。
Jamf Threat Labs的发现还揭示出一个更大的隐忧。研究人员指出,围绕此次行动所关联的后端服务器和域名不止“werkbit[.]io”一个,说明这套基础设施在同时支撑着多个攻击面。如果CrashStealer真的是一场横跨不同操作系统的多平台战役的一部分,那目前看到的可能只是冰山一角:在macOS上它表现为一个信息窃取器,在Windows或Linux上也许会变形成另一个模块。这种共用后端的架构能让攻击者以较低的成本快速切换目标,一旦某个域名或载荷被曝光,他们可以即刻切换,不给防御方留下完整的画像。
从防御的视角来看,CrashStealer的出现再次提醒人们,不能把苹果的公证和Gatekeeper视为绝对可靠的安全屏障。签名和公证机制确实有效阻挡了大量未签名的恶意软件,但它们没有办法检测开发者本身是否怀有恶意。只要攻击者愿意支付开发者账号费用并通过公证审核,一份看似清白的应用就可以被签上合法的名头,堂而皇之地分发。用户教育也是一个绕不过去的话题。当系统提示“此软件来自未识别的开发者”时,很多人会被引导用右键打开的方式强行绕过,而CrashStealer恰恰利用了这种心理,把绕过动作包装成安装向导的一个标准步骤,进一步削弱了用户的安全警惕。
总的来说,CrashStealer并非一个简单的信息窃取工具,而是一个浓缩了供应链伪装、本地验证、多重下载链和广泛数据采集的综合威胁。它用真实的开发者ID获得了Gatekeeper的信任,用会议PIN码锁定了目标群体,用看似简陋却行之有效的界面诱导用户亲手打开恶意代码,再以C++内核静默收网。对于信息窃取木马而言,这种设计已经超出了普通“脚本小子”的想象力,进入了具有专业组织背景的攻击层级。而关于那些尚未浮现的后台域名、未知的变种载荷以及可能的跨平台联动,仍留下了太多个让安全社区既困惑又必须继续追查下去的线索。
热门跟贴