假冒 Mac 崩溃报告索要密码?千万别输

macOSTahoe ·
假冒 Mac 崩溃报告索要密码?千万别输

一款伪装成 macOS 崩溃报告器的恶意软件正在窃取 Mac 密码和加密钱包。教你识别假密码弹窗,以及已经输入后该怎么补救。

你的 Mac 弹出一个窗口,外观和系统崩溃报告一模一样,而且必须输入登录密码才肯消失。别输。2026 年 7 月,Jamf Threat Labs 发布了一份针对 macOS 信息窃取程序的分析报告,将其命名为 CrashStealer,它干的正是这件事:伪装成一个普通的 macOS 系统工具,然后收割你交给它的密码。如果你已经输过了,请直接跳到本页后面的处置手册,从头开始逐条执行。

这不是一个关于奇异零日漏洞的故事。没有任何东西被黑,没有安全缺陷被利用,也没有任何更新能够阻止它。整套攻击只依赖一件事:多数 Mac 用户在多年的正常使用中,已经被训练成会往任何看起来来自 macOS 的窗口里输入密码。CrashStealer 画出一个足够逼真的窗口,剩下的由用户自己完成。

也正因为如此,这是一个可以靠知识而非软件解决的问题。下面有两样在多数报道里找不到的东西:一套用来区分真正的 macOS 授权弹窗和应用自绘仿冒窗口的实用方法,以及一份在你意识到自己已经把密码输进去的那一刻可用的、冷静有序的处置手册。第一部分讲预防,第二部分讲损害控制——通常人们都是在凌晨两点才反应过来的。

核心要点

  • 真正的 macOS 崩溃报告器从不索要你的密码。 如果一个自称崩溃报告、诊断工具或系统更新程序的窗口向你要登录密码,那个窗口是某个应用画出来的,不是 macOS 画的。
  • 上下文胜过像素。 一个下了功夫的攻击者能做出截图级完美的仿冒品。他们伪造不了的是真弹窗出现的理由:真正的 macOS 授权对话框,总是紧随你刚刚做过的某个操作。凭空冒出来的弹窗,是你能拿到的最强警示信号。
  • 公证不等于安全审计。 Jamf Threat Labs 报告称,分发 CrashStealer 的那个应用带有有效的 Apple Developer ID 签名和公证,这正是它通过 Gatekeeper 的原因。Apple 此后已吊销该证书,但吊销属于事后清理,不是事前防护。
  • 如果你输了密码,就当登录钥匙串也一并丢了。 Jamf 报告称,该恶意软件会在本地校验输入的密码,一旦密码正确,就能用它解锁登录钥匙串,从而拿到的远不止你输入的那一串字符。
  • 恢复的顺序很重要。 从另一台可信设备上操作:先改 Apple Account 密码,再改密码管理器主密码,然后是邮箱、钱、最后才是其他一切。加密货币助记词一律视为已烧毁。

Jamf Threat Labs 到底报告了什么

Jamf Threat Labs 在 2026 年 7 月中旬发布了对 CrashStealer 的分析,随后几天被 9to5Mac、MacRumors、Help Net Security、Malwarebytes、Infosecurity Magazine 和 SecureMac 转载。有必要把「实际报告的内容」和「后来被转述成模糊警告的内容」区分开。

投递方式:一个和你要的东西对不上的磁盘映像

根据 Jamf 的分析,恶意软件藏在一个名为 Werkbit Setup 的磁盘映像里。受害者挂载这个 DMG,安装了自以为是他们要找的那款软件。这个阶段没有任何东西显得可疑,因为这个阶段还没有任何东西提出反常的要求。

这里的关键细节是「对不上」。你搜的是一个东西,落到「下载」文件夹里的磁盘映像却叫另一个名字。这道缝隙是在任何东西运行之前,为数不多的可靠信号之一,值得养成一个习惯:在把任何东西从磁盘映像里拖出来之前,先看一眼 Finder 边栏里那个映像的名字。

诱饵:一个自称 CrashReporter 的应用

Jamf 报告称,安装之后,这个恶意应用把自己呈现为 CrashReporter.app,同时借用了正常 macOS 系统组件的名字和大致外观。随后它显示一个模仿 macOS 系统对话框样式的密码弹窗。

这个伪装之所以高明,有一个具体原因。崩溃报告恰恰是 macOS 少数会主动弹出的东西之一。应用确实会崩溃,macOS 确实会提议上报,而多数用户已经在没仔细看的情况下关掉过这个对话框几十次了。恶意软件借用的正是这份熟悉感。它出现在一个「意外的系统窗口不会让人觉得奇怪」的时刻,然后索要真对话框从来不会索要的那样东西。

你输进去之后会发生什么

这一部分让 CrashStealer 比普通钓鱼窗口更糟。Jamf 报告称,该恶意软件会在本地校验输入的密码,如果密码正确,它就能用来解锁登录钥匙串。

想想这在实践中意味着什么。你输入的那个密码本身并不是奖品,它是通往那个装着其他一切的容器的钥匙。你的登录钥匙串里存着 Wi-Fi 密码、应用凭据、证书、安全备忘录,对很多人来说还有一长串保存下来的网站登录信息。解锁它,等于把一串被盗的字符转换成一次完整的凭据脱库。

报告中列出的目标与此完全吻合:浏览器保存的凭据、密码管理器数据、包括浏览器钱包扩展在内的加密货币钱包数据,以及登录钥匙串内容。如果你曾经好奇我们为什么反复强调 Mac 密码不只是一把屏幕锁,答案就在这里。它位于整棵凭据树的根部。我们那篇为什么 macOS 反复索要登录钥匙串密码的指南,解释了在正常、无恶意的情况下,这个钥匙串与你的账户密码绑定得有多紧。

两个值得了解的技术细节

Jamf 强调了两个特征,即便你从不碰反汇编工具,它们对防守方也有意义。

第一,CrashStealer 是用原生 C++ 编写的。过去几年里,很多 Mac 窃取程序严重依赖 AppleScript,而 AppleScript 相对容易检查、容易被安全工具做模式匹配、也容易被 macOS 自身用自动化权限拦下来。原生二进制文件绕开了整整一类生态系统已经习惯依赖的检测手段。对普通用户的实际启示是:「恶意应用会索要自动化权限」这类经验法则,靠不住。

第二,也是后果更严重的一点:分发这个恶意软件的应用带有有效 Apple Developer ID 的签名和公证。这就是 Gatekeeper 放行它、而没有制造多数人印象中那种「不受信任软件」摩擦的原因。我们后面还会回到这一点,因为在很多人的威胁模型里,「可它是公证过的啊」这句话承担了远超其能力的分量。

时间线

据 Jamf 称,看起来尚未完成或仍在开发中的早期样本出现在 2026 年 5 月前后。可正常工作的野外版本在 2026 年 7 月初被检测到,公开分析随后在 7 月 13 日至 15 日左右发布。

从半成品样本到可用部署之间的这两个月间隔很正常,这也是一个理由,说明不该把任何单篇已发布的分析当作故事的终点。窃取程序会持续迭代。磁盘映像的名字、应用的名字、弹窗的具体措辞,是这套操作中最容易被替换的部分。手法才是持久的部分,而手法才是值得学的东西。

核心思路:密码弹窗是一句声明,不是一份证明

在进入清单之前,先讲一个能让所有清单都更容易记住的观念。

当一个窗口出现在你的屏幕上索要密码时,那个窗口是在对「自己是谁」作出一句声明。它声称自己是 macOS。窗口的外观无法为这句声明提供任何佐证,因为任何有权在你屏幕上绘制内容的应用,都能画出任何东西,包括系统对话框的完美复制品。字体、间距、锁形图标、背景材质的精确色调、按钮位置、角落里那个小小的应用图标:全都只是像素,全都可以照抄。

所以问题从来不是「这个看起来像真的吗」,而是「有没有一个理由,让真的那个出现在这里」。

这个视角的转换,是本文其余部分的立足点。视觉检查仍然有价值,下面也确实有一些能可靠抓住粗制滥造仿冒品的具体检查项。但视觉检查是一道筛子,不是一份判决。上下文才是判决。

视觉取证:真 macOS 弹窗 vs. 应用自绘仿冒品

以下是你实际可以检查的项目,大致按每一项应得的权重排序。

1. 你是否做了某件需要授权的事?

这是价值最高的检查项,遥遥领先,而且成本为零。

真正的 macOS 授权弹窗是「后果」。你安装了什么东西。你在「系统设置」里改了某个带锁图标的设置项。你批准了一个系统扩展。你运行了一条需要提权的命令。你解锁了某个钥匙串项目。你更改了网络配置。在上述每一种情况里,你都在一两秒前执行了一个明确的动作,而弹窗会点出那个动作。

在正常运行中,macOS 不会在你读网页或看视频的时候自行决定向你索要登录密码。如果一个密码弹窗出现了,而你说不出是你刚做的哪件事导致了它,那就把它当作敌对目标,直到被证明并非如此。不是「大概没事」,是敌对。

推论令人不适但确实成立:知道这一点的攻击者,会设法把假弹窗的时机对准你做过的某件事,最常见的就是你刚安装完他们的应用那一刻。在你打开刚下载的软件之后立刻出现的弹窗,不是令人安心的上下文。那恰恰是 CrashStealer 弹窗出现的时刻。

2. 索要密码的这个东西,有资格索要吗?

有些系统组件会例行索要你的密码,有些则从不索要。

macOS 崩溃报告器牢牢地属于「从不」那一类。当一个应用崩溃时,真正的对话框会告诉你该应用意外退出,并提供重新打开、忽略或向 Apple 发送报告的选项。它不需要你的密码,因为把崩溃日志发给 Apple 不需要管理员权限。不存在任何一种配置,能让真正的崩溃报告器要求你验证身份。

同样的道理适用于绝大多数只是给你看信息的东西。一个告诉你应用崩溃了的窗口、一条关于可用更新的通知、一个关于文档保存失败的对话框、一条关于驱动器已断开的消息:这些都没有正当理由索要你的登录密码。如果一条信息提示突然变成了一个身份验证请求,那么出问题的是那个窗口,不是你的 Mac。

真正会索要密码的类别包括:安装会向个人文件夹之外写入内容的软件、解锁「系统设置」中带锁图标的面板、批准内核扩展或系统扩展、更改 FileVault 或「启动安全性」设置,以及针对特定已存储项目的钥匙串访问。如果你面前那个窗口做的不是上述任何一件事,它就不该索要密码。

3. 查清楚到底是哪个应用在索要

假弹窗属于某个进程。你可以趁弹窗还在屏幕上的时候,去把那个进程找出来。

看菜单栏。 把指针移到屏幕顶部。Apple 菜单旁边的应用名称会告诉你当前哪个应用处于最前台。如果一个自称系统对话框的窗口正开着,而菜单栏显示的是你刚下载的某个应用的名字,答案已经有了。

试试 Command-Tab。 如果你能从这个弹窗切换走,而它像任何普通应用窗口一样退到另一个窗口后面,那它就属于某个应用。有些真正的系统对话框会浮在一切之上;应用自绘的仿冒品通常做不到,而那些做得到的,会在别的地方露出马脚。

打开强制退出。 按 Command-Option-Escape。「强制退出」窗口会按名称列出正在运行的应用。找找有没有你不认识的、有没有在弹窗出现的同一时刻进入列表的、或者名字与某个系统组件可疑地相近的。退出那个作祟的应用,通常会让弹窗随之消失,而这本身就是你要找的确认。

打开活动监视器。 「应用程序」>「实用工具」>「活动监视器」会给你一份更长的列表,包含后台进程。按 CPU 或按进程名排序,找找最近才出现的条目。这比强制退出更费事,也更容易误报,因为 macOS 本身就合法地运行着大量名字古怪的后台进程,但当强制退出里什么都看不出来时,这就是你要看的地方。

诚实的局限:一个做工精良的仿冒品可以把自己的进程命名得平平无奇,而你也未必能在上百个正常名字里认出一个恶意的。这项检查能可靠地抓住偷懒的仿冒品,偶尔能抓住精心制作的。

4. 拖拽测试

这一项是真正有用的,而且它只在一个方向上成立。

试着把弹窗窗口在屏幕上拖动。把它推向屏幕最边缘,或者拖到第二块显示器上(如果你有的话)。真正的系统对话框是它自己的窗口,可以被移到桌面的任何位置。而一个被绘制在另一个窗口内部的仿冒品——当仿冒品寄生在网页、Electron 应用或全屏视图里时很常见——无法离开其父窗口的边界。如果这个弹窗被裁切、被弹回原位,或者拒绝越出某个对应着其他应用窗口的矩形范围,那它就是假的。没有例外。

单向的那一面是:如果弹窗确实能在屏幕上自由拖动,这什么也证明不了。原生应用可以创建一个无边框浮动窗口,移动起来和系统对话框一模一样。通过拖拽测试不等于健康证明;没通过则等于定罪。

一个相关变体:试着调整窗口大小,或者留意窗口尺寸是否与其中内容微妙地不匹配。用 Web 视图搭建的仿冒品,在你更改显示器分辨率或在缩放比例不同的显示器之间移动时,有时会出现奇怪的缩放。

5. 用触控 ID 代替键入

如果你的 Mac 有触控 ID,而你正在为一件确实由你发起的事情进行身份验证,那就用指纹传感器,别用键盘。

这不是因为触控 ID 在视觉上无法被模仿——应用同样可以显示一个触控 ID 样式的弹窗。它有用的原因更直接:指纹验证不会把你的密码交给那个应用。 真正的触控 ID 验证通过安全隔区完成,只向请求方进程返回一个「是」或「否」的答案。没有任何地方键入了你的密码,所以也没有任何地方能捕获它。如果那个窗口是假的,你只是给了它一次它无法转换成凭据的指纹扫描。

这里面还有第二重信号。如果你正在执行一个在你 Mac 上通常会提供触控 ID 选项的操作,而这个特定弹窗却坚持要求键入密码、不给触控 ID 选项,那就问问自己为什么。有些真弹窗确实要求键入密码,所以这只是黄旗而非红旗,但与其他检查项结合起来,分量就够了。

6. 按 Escape,然后看会发生什么

按 Escape,或者点「取消」,然后观察。

真正的授权弹窗会干净利落地取消,而你正在执行的那个操作会以一种说得通的方式失败。你想解锁一个设置面板,那个面板保持锁定。你想安装某个东西,安装程序报告它无法继续。

假弹窗通常会纠缠不休。它会在几秒后重新出现,或者你每次点击桌面它就出现,或者下次登录时它又回来,或者干脆就没真正消失过。在你取消之后仍然坚持出现,是一个强有力的迹象,因为恶意软件的全部价值都取决于最终拿到你的密码。它就是被造出来不停索要的。真正的系统对话框不是。

这项检查是有代价的:你得等一会儿才能知道它会不会回来,而在此期间,你正坐在一台可能正在运行你不想要的东西的 Mac 前面。用它,但不要用它代替断网。

7. 读文字,但权重放低

粗制滥造的仿冒品会出错。在 macOS 会点名具体应用或具体操作的地方用了泛泛的措辞。大小写略有偏差。版本号或产品名与你正在运行的对不上。读起来像机翻的语法。按钮标签的顺序不符合 macOS 惯例。图标是当前系统图标的一个略微过时的版本。

这些都值得留意,但没有一项值得依赖。对于一个有截图和一个下午时间的攻击者来说,系统对话框的排版是个已解决的问题。把文本上的异常当作升级到其他检查项的理由,绝不要当作最后一道防线。

真正的 macOS 授权对话框与应用绘制的假密码弹窗对比

诚实面对视觉检查的天花板

上面每一项检查,都能被一个足够细心的攻击者击败。一个原生的、做工精良的仿冒品,如果出现在一个合理的时机、能自由拖动、措辞正确、并在你取消时消失,它会通过本文中的每一项视觉测试。

这不是跳过这些检查的理由,而是理解它们用途的理由。它们能抓住现实世界中的大多数仿冒品,因为那些东西并不是不计成本做出来的。但它们底下那一层——不依赖攻击者手艺的那一层——是行为层面的。

不依赖攻击者手艺的行为准则

以下这些准则,即便仿冒品完美无缺也依然成立。

准则 1:绝不把密码输入你没有主动召唤出来的弹窗。 如果你说不出是哪个动作导致了它,答案就是「不」。不是「让我再仔细看看」。就是「不」。

准则 2:拿不准就取消,然后自己重新发起一遍。 如果你确实需要授权某件事,关掉弹窗,退出该应用,然后从一个你信任的地方自己发起这个动作。自己打开「系统设置」并点击锁形图标。自己从 Finder 里运行安装程序。如果弹窗随后作为你刚点击的那个动作的直接结果出现,它是真的的可能性就大得多,因为上下文是你创造的,而不是别人递给你的。

准则 3:在你安装完某个东西之后立刻出现的弹窗,是风险最高的弹窗。 CrashStealer 就活在那里。新软件索要管理员密码可以是正当的,但它同时也正是这类攻击的形状。如果这个软件是你刚从一个没用过的网站下载来的,在验证身份之前,先停下来重新想想你在装的到底是什么。

准则 4:只要提供触控 ID,就优先用触控 ID。 它把「我把密码给了他们」变成「我什么都没给」。

准则 5:只要感觉不对劲,先断网,再思考。 关掉 Wi-Fi 什么代价都没有,只需要两秒钟。这是成本最低的动作,也是唯一能阻止数据外流的动作。

如果你已经输了:事后处置手册

本节假设最坏情况:你把登录密码输进了一个现在认为是假的弹窗里。你现在的状态大概介于恼火和真正的恐慌之间。请按顺序执行。这份手册的设计原则是让杠杆率最高的动作排在最前面,并且不需要你在高压状态下做任何判断题。

在进入步骤之前,先说两个前提认知。

第一,假设数据外泄已经发生。信息窃取程序是为速度而生的,它们采集然后发送。不要把最初的十分钟花在判断数据有没有离开上,把这十分钟花在「它已经离开了」这个假设上。

第二,假设登录钥匙串已被攻破。Jamf 报告称,正确的密码能让 CrashStealer 解锁它。这意味着这次事件的范围不是「一个密码」,而是「那个密码所保护的每一份凭据」。

步骤 1:立刻把这台 Mac 从网络上断开

从菜单栏关闭 Wi-Fi。如果你用的是以太网,拔掉网线。如果想彻底一点,把 Wi-Fi 和蓝牙都关掉,进入类似飞行模式的隔离状态。

这做了两件事:阻止恶意软件已采集但尚未发出的数据继续上传,以及切断任何远程指令通道。它无法撤销已经离开的部分,也不能替代下面的凭据轮换,但它免费、瞬时,并且能框定损失范围。

先别关机。你很快会想检查这台机器,而正在运行的系统比需要重新启动进入的系统更容易检查。如果你压根不打算检查、准备直接全盘抹掉,那么关机也无妨。

步骤 2:不要再在那台机器上输入任何凭据

这是接下来几个小时的一条铁律,也是人们最容易在不知不觉中违反的一条。

不要在那台 Mac 上登录邮箱去查看可疑活动。不要在它上面打开密码管理器去改密码。不要在它上面登录银行去看交易记录。你在一台你认为已被攻破的机器上输入的每一份凭据,都是你第二次把它交出去。那种想立刻去查点什么的本能非常强烈,而且恰恰是错的。

在你决定如何处置这台 Mac 之前,把它当作一个只读的犯罪现场。

步骤 3:换到另一台可信设备上

用你的手机、平板、另一台电脑,或者家人的机器。你需要的是一台没有卷入此次事件的设备。

一点提醒:如果你的手机登录着同样那些账户、并且上面装着同步的密码管理器,手机仍然是一台可用的恢复设备,因为这次被攻破的是凭据而不是手机本身。但如果你有任何理由认为同一个恶意安装包接触过不止一台机器,那就换别的设备。

步骤 4:首先更改 Apple Account 密码

在做其他任何事之前先做这件,从可信设备上操作。

你的 Apple Account 是这棵树的根。它把守着 iCloud 钥匙串、查找、iCloud 备份、设备授权、购买记录,以及很多情况下其他账户的找回路径。如果攻击者拿到它,就能用它触及那些你压根没存在这台被攻破的 Mac 上的东西。

在 iPhone 或 iPad 上:「设置」>「你的姓名」>「登录与安全性」>「更改密码」。在网页上:appleid.apple.com。趁着在那里,顺便查看受信任设备列表,移除任何你不认识或不再使用的设备。

选一个你从未在别处用过的密码,也不要沿用某个旧密码的变形模式。

步骤 5:其次更改密码管理器的主密码

如果你使用 1Password、Bitwarden、Dashlane、KeePass 或类似工具,它的主密码是第二个根。Jamf 报告称密码管理器数据在 CrashStealer 的目标之列,所以把你的密码库当作已经泄露。

从可信设备上更改主密码,然后找一找「退出所有设备」或「取消所有会话授权」之类的控制项并使用它。很多密码管理器还有密钥或账户密钥的概念;如果你用的那款支持轮换,也一并轮换掉。

如果事发时你的密码管理器在那台 Mac 上处于解锁状态,或者它的数据在本地有缓存,那就假设密码库的内容已被攻击者掌握。这感觉很糟,但它同时也给了你一份精确的待办清单:库里的一切都需要轮换。按后面的步骤排优先级。

步骤 6:先邮箱,再钱,最后其他一切

这个顺序不是随意排的,它遵循的是杀伤半径。

邮箱优先。 控制你邮箱的人可以重置你大部分其他账户。更改你名下每一个邮箱账户的密码,从接收密码重置邮件的那一个开始。然后,在每个账户的安全设置里,找到活跃会话或已授权设备的列表,撤销一切你不认识的。同时检查有没有你没创建过的转发规则和过滤器;事后攻破的一个常见动作,就是悄悄转发或自动归档安全通知,让你永远看不到警报。

钱其次。 银行、券商、支付应用,以及任何存有银行卡的地方。改密码,然后查看近期活动,如果有任何看起来不对劲的地方就打电话给相应机构。很多银行在你告知后会在你的账户上做标记,并在一段时间内提高审查强度。

然后是其他一切。 工作账户、云存储、社交媒体、购物网站、开发者平台、域名注册商、VPS 提供商,以及任何带 API 密钥的东西。域名注册商和云控制台值得排在比多数人给的位置更靠前,因为掌控一个域名或一个云账户,是一根对下游一切都起作用的长杠杆。

不要试图一口气做完这一切。今晚先把邮箱和钱做完。剩下的长尾用接下来几天时间处理,照着密码管理器的列表逐条推进。

步骤 7:在所有地方撤销会话和设备

更改密码并不总能杀死已存在的会话。除非你明确终止,很多服务会在密码更改后照样让已通过验证的会话继续存活。

对每一个重要账户,找到列出活跃会话、已登录设备或已连接应用的安全页面,把它清空。Google、Microsoft、Apple、GitHub、Slack、Discord 以及多数主流服务都提供这个功能。同时撤销你不认识的第三方应用授权,因为 OAuth 令牌是一种能在密码更改后存活下来的持久化手段。

既然人已经在那里了,顺便检查一下浏览器同步会话。如果你的浏览器配置文件曾同步到一台被攻破的机器上,退出所有同步会话、然后从一台干净设备重新建立同步,值得这点麻烦。

步骤 8:把加密货币助记词当作已泄露

如果你在那台 Mac 上用软件钱包或浏览器钱包扩展持有加密货币,这一部分的截止时间是以分钟计的,不是天。

Jamf 报告称加密货币钱包数据在 CrashStealer 的目标之列,其中包括浏览器钱包扩展。假设那台机器上存在过的任何助记词、私钥或钱包文件现在都已被人掌握。

要做的动作不是「改钱包密码」。钱包密码保护的是一个本地文件;助记词就是账户本身。如果助记词泄露了,无论你在自己的 Mac 上做什么,世界上任何地方都能动这笔钱。

从一台干净设备上,生成一个新钱包和一组新助记词,然后把资金转过去。如果你有硬件钱包,或者能弄到一个,那么在设备上自行生成助记词的硬件钱包就是正确的目的地。不要为了「保护」旧助记词而把它重新输入到任何设备上;没有什么可保护的了。也不要把它输入到任何声称能帮你检查它是否已泄露的工具或网站里,那本身就是一种常见骗局。

如果你曾经把助记词存在那台 Mac 上的备忘录、截图、文本文件或密码管理器里,同样适用以上原则。这也是一个重新考虑今后存储方式的好时机。

步骤 9:给所有支持的服务开启双因素验证

如果你的邮箱和金融账户此前已经启用了 2FA,这次事件的严重程度会显著低于最坏情况,因为仅凭被盗的密码打不开那些门。

如果此前没有,现在就在轮换每个密码的同时打开它。优先选择验证器应用或硬件安全密钥,而不是短信。短信 2FA 明显好过没有,也明显差于其他方案,因为 SIM 卡调包攻击已经是一个成熟产业。

针对这个场景有一条特殊注意事项:如果你的验证器应用备份存放在某个云账户里,而该账户的密码就在被攻破的钥匙串中,那就重新注册你的 2FA,别假设现有配置仍然安全。

一个人在一台已断网的 Mac 旁边,用手机逐步完成账户恢复步骤

步骤 10:现在再来检查这台 Mac 本身

在凭据已经从干净设备上开始轮换之后,回到这台机器。检查期间保持断网。

登录项与后台项目。 打开「系统设置」>「通用」>「登录项与扩展」。有两个列表值得细读:登录时打开的应用,以及被允许运行的后台项目。第二个列表更有意思,因为它会点出每个后台代理背后负责的开发者。任何你无法交代来历的条目都值得查一查。要注意正规软件同样会在这里留下条目,所以别条件反射式地全部删掉;动手之前先搜一下开发者名称。

描述文件。 打开「系统设置」>「通用」>「设备管理」。在一台没有向雇主或学校注册的个人 Mac 上,这个面板通常压根不会出现。如果它出现了,并且列出了一个你没安装过的描述文件,那是一个严重的发现。描述文件可以更改 DNS 设置、安装证书、强制执行策略,而它之所以是最受青睐的持久化手段之一,恰恰是因为多数用户从不看这里。

按日期排序的「应用程序」文件夹。 在 Finder 里打开「应用程序」,切换到列表视图并按「添加日期」或「修改日期」排序。任何在事发时间前后出现的东西都值得仔细审视。如果你有用户级的「应用程序」文件夹,同样处理一遍。

浏览器扩展。 打开每个浏览器的扩展页面,移除任何不是你主动安装的东西。特别留意钱包扩展(与本案直接相关),以及任何拥有「读取所有网站数据」这类宽泛权限的扩展。

近期下载。 翻一翻「下载」文件夹,找出引发这一切的那个磁盘映像或安装程序。不要再打开它。知道那个文件名有助于你在同样的诱饵再次出现时认出它。

如果你找到并移除了某个东西,不要就此断定自己干净了。移除你找到的那一块,并不能告诉你任何关于你没找到的那些块的信息。

步骤 11:决定要不要抹掉重装

这里给出诚实的答案,不打太极:如果你把登录密码输进了一个假的系统弹窗,抹掉重装才是正确的选择。

理由不是「清除做不到」,而是「验证做不到」。在一台运行过未知原生二进制文件、并且对方手里握着你管理员密码的机器上,你无法证明一个否定命题。手动清理能让你到达「我没发现别的东西」,这和「没有别的东西」不是一回事。对于一台承载着你的工作、邮件和金钱的机器来说,这道差距很要紧。

可以合理跳过抹盘的情况:你看到了弹窗,但什么都没输,你退出了该应用并把它删掉了,而且此后没有任何异常表现。绝对应该抹盘的情况:你输了密码;或者你无法还原自己到底装了什么;或者你发现了自己看不懂的持久化项目;或者这台机器能访问任何你需要代他人负责的东西。

在现代 Mac 上正确的做法是:

  1. 先从干净设备上把凭据轮换完。不要在账户尚未控制住之前抹盘,因为抹盘并不能修复你的账户。
  2. 备份你的文档,不要备份应用程序,也不要做整机系统镜像。把你需要的文件复制到外置硬盘:照片、文档、项目、源代码,一切你自己产出的东西。
  3. 在 Apple 芯片和 T2 芯片的 Mac 上使用「抹掉所有内容和设置」(「系统设置」>「通用」>「转移或还原」),或者从 macOS 恢复模式重新安装。
  4. 把这台 Mac 设置为全新设备。不要从感染之后制作的时间机器备份中恢复,也不要用迁移助理把应用程序和系统设置从被攻破的状态搬过来。人们就是这样把自己重新感染一遍,然后得出「这个恶意软件无法被清除」的结论的。
  5. 从 Mac App Store 或每个开发者的官方站点重新安装应用程序,全新安装。
  6. 把你的文档从外置硬盘复制回来。
  7. 重新登录,并重新注册双因素验证。

是的,这会搭进去一个晚上。但这个晚上结束时,你得到的是一台你真的能信任的机器,这比一个晚上值钱。

为什么公证在这件事里没救得了任何人

这个案例最有教育意义的一点在于:一切都按设计正常运转,而用户还是中招了。

公证到底是什么

当开发者在 App Store 之外分发一款 Mac 应用时,他们要把它提交给 Apple 的公证服务。Apple 会运行一次自动化检查:扫描已知恶意内容、验证代码签名、确认应用带有有效的 Developer ID 签名,并确认满足一组加固要求。如果通过,Apple 会签发一张票据,装订到该应用上。

再读一遍这份清单,注意上面没有什么。没有人工审核员。没有针对应用在用户运行时实际行为的分析。没有关于这款应用的目的是否诚实的判断。公证回答的是一个很窄的问题:这个二进制文件里有没有我们已经认得出的恶意内容,以及它是否由一个可识别的开发者正确签名。

一款画出逼真密码框、并把捕获内容发出去的应用,并不包含扫描器所寻找的那种意义上的「已知恶意内容」,尤其当它是一个全新的原生二进制文件时。它一路畅通。

Gatekeeper 承诺了什么、没承诺什么

Gatekeeper 是你 Mac 上的执行层。当你打开一个下载来的应用时,Gatekeeper 会检查它是否已签名并公证,以及公证票据是否有效。如果有效,应用会以最小摩擦打开。如果无效,你会看到 Mac 用户都很熟悉的那些警告和拦截,包括那条「应用已损坏,无法打开」的消息——我们在 Gatekeeper 与隔离属性排障指南中讲过它。

Gatekeeper 承诺的是可追责,不是安全。它是在告诉你:这个软件来自一个在 Apple 注册过、付费购买了 Developer ID、并且二进制文件经过扫描的开发者。这意味着如果它最终被证明是恶意的,Apple 知道该吊销谁的证书。它并不意味着 Apple 已经评估过这款应用是否值得你信任。

这两件事之间的落差,正是这一整类攻击栖息的地方。而且这并不新鲜:2025 年 12 月我们就写过同样的模式,当时 MacSync Stealer 利用有效的 Apple 公证绕过了 Gatekeeper。那次的教训没有被吸取,因为「已公证」在多数人眼里仍然读作「已批准」。

吊销是事后清理,不是防护

Apple 已经吊销了 CrashStealer 涉及的那张证书。这是正确的应对,而且确实起作用:在会检查吊销状态的 Mac 上,该应用将无法再启动,同一张证书也不能再用来签下一个版本。

但吊销发生在分析之后,而分析发生在感染之后。所有在 7 月初部署到证书吊销之间这段窗口期中招的人,都没有从中获得任何好处。证书吊销是免疫系统的记忆,不是它的屏障。与此同时,对一个有动机的操作者来说,弄到一个新的 Developer ID 是个可以解决的问题,这也是为什么同样的模式会带着不同的证书反复出现。

对你而言的实际结论是:使用 Gatekeeper,让它保持开启,绝不要为了运行某个「有人叫你关掉它才能运行」的东西而关掉它。同时,别让它成为你信任某个应用的理由。「它签名了吗」这个问题,远不如「这东西我是从开发者那里拿到的,还是从搜索结果里拿到的」重要。

这类安装包是从哪来的

在实践中,恶意磁盘映像通过少数几个渠道到达用户手里,而所有渠道都在利用同一个时刻:你已经决定要某个软件,正在找从哪下载。

搜索广告。 有人搜索一款知名应用,点了第一个结果,而那是一条指向仿冒站点的付费广告。广告文案没问题,落地页是个像样的克隆,下载按钮也能用。这是流量最大的渠道,遥遥领先,它之所以有效,是因为搜索结果页的顶部让人感觉权威。

仿冒下载站。 域名差一个字符,或者加上一个看似合理的单词,或者换一个顶级域名。还有整个「下载门户」生态,它们把真实软件包在自己的安装器里。就算那些站点没在分发恶意软件,它们分发的也是被改动过的安装包,这个习惯你不会想要。

在聊天和论坛里推送的链接。 一个 Discord 服务器、一个 Telegram 群、一个 Reddit 帖子、支持论坛里的一条评论。有人「热心地」贴出一个镜像。有时候他确实是个热心的真人,有时候不是,而你从消息本身分辨不出来。

付费软件的破解版和「免费」版。 这条不言自明,而且它至今仍是最可靠地把自己搞成窃取程序受害者的方式之一。

四条渠道的防御方式是同一个:在你开始搜索之前就决定好要从哪里下载。去开发者真正的域名,你通常可以通过应用本身、已有的安装、书签、开发者的 App Store 页面或其经过验证的社交账号来核实。然后从那里下载。绝不要让搜索结果页替你选择来源。

真正管用的预防措施

一份简短的清单,大致按影响力排序。

应用在 Mac App Store 里有,就从 Mac App Store 装。 App Store 应用是沙盒化并经过审核的,这与公证是截然不同的标准。它不完美,但攻击面窄得多。

应用不在 App Store 时,去开发者自己的已验证站点。 手动输入域名、使用书签,或者从开发者的 App Store 页面跳转过去。不要点广告。

安装前先读磁盘映像的名字。 如果你搜的是一款产品,挂载的却是一个名字毫不相干的 DMG,就停下。单是这一个习惯,就能把 CrashStealer 挡在门外。

保持 macOS 更新。 XProtect 特征库和吊销数据通过更新机制下发,无论你是否安装完整的系统更新它们都会到达,但保持系统为最新版本能让每一层防护都处于受支持状态。我们的 macOS Tahoe 26.6 更新指南介绍了当前版本包含的内容以及如何干净地安装它。

使用密码管理器,并给它一个在别处不存在的主密码。 与你的 Mac 登录密码不同,与你的 Apple Account 密码不同,也不是二者的变形。这正是在某一份凭据失守时限制杀伤半径的东西。

让登录钥匙串锁在一个真正的密码后面。 不要因为输密码麻烦就削弱账户密码,也不要禁用钥匙串的保护机制。触控 ID 存在的意义,正是让一个强密码不必成为每天的税负。

开启 FileVault,并做好备份。 FileVault 在机器丢失时保护静态数据。备份则决定了「抹掉重装」是两小时的麻烦,还是一场灾难。这两点在我们的 Mac 安全与隐私指南中有更深入的介绍。

在需要之前就打开双因素验证。 它是那个让被盗密码变得可以承受的控制项。

杀毒软件在 Mac 上真的有用吗?

诚实作答,不给你推荐产品。

macOS 上的恶意软件扫描器有一个明确用途:识别那些已经被分析和编目的东西。如果一个已知的窃取程序家族落到你的机器上,一个持续维护的扫描器很可能会抓到它,这并非无足轻重,因为多数感染并不是新东西。扫描器在事件发生后也确实有用,可以在你试图弄清一台机器上有什么的时候提供第二意见。

它们不太擅长的,恰恰是本文中的这种情况。CrashStealer 是一个来自持有有效证书的开发者账户的原生二进制文件,其核心恶意行为是显示一个窗口并读取用户输入的内容。从一个新家族出现到检测能力跟上,中间有一段时间窗口,而在这段窗口里,基于特征的工具没有任何可匹配的东西。行为检测有帮助,但不是魔法。

还有一个诚实的反面观点:macOS 本身已经内置了多层防护——Gatekeeper、XProtect、XProtect Remediator、公证检查、系统完整性保护,以及针对 App Store 软件的应用沙盒。对于一个下载习惯良好的谨慎用户来说,第三方杀毒软件带来的增益比在其他平台上要小。

明确值得用的场合:你与不够谨慎的人共用这台 Mac;你处理他人的数据;你所在的环境有合规要求;或者你已经经历过一次事件、想要多一双眼睛。不太值得的场合:把它当作上一节那些习惯的替代品。没有任何扫描器能保护你免于「决定把密码输进某个窗口」这件事。

如果你想看更长的横向比较,我们的 2026 年 Mac 杀毒软件指南详细梳理了各种取舍。

常见问题排查

问题: 出现了一个密码弹窗,我点了取消,什么都没输。我没事吧? 解决方案: 就密码本身而言,几乎可以肯定没事。点击取消不会泄露任何东西。但画出那个弹窗的应用仍然在你的 Mac 上,而且仍在运行。用「强制退出」把它退掉,然后找到并删除它,再检查「登录项与扩展」和「设备管理」,看它有没有留下什么。留意弹窗是否再次出现,那意味着还有东西在持久化。如果你找不到源头,或者重启后弹窗又出现,就把它当作活跃感染处理,从步骤 10 开始执行处置手册。

问题: 我确实分辨不出弹窗是真是假,而我需要授权一件正当的事。 解决方案: 彻底关掉这个弹窗,然后自己创造上下文。退出该应用。直接打开「系统设置」或 Finder,从那里发起你想做的操作。如果弹窗是作为你在一个信任的地方点击的直接结果出现的,它是真的的可能性就大得多。真要验证身份时,如果提供了触控 ID 就用触控 ID,这样无论如何都不会键入密码。如果你没发起任何操作而弹窗仍不断出现,那份模糊性本身就是答案:它是假的。

问题: 我已经输了密码。头六十秒该做什么? 解决方案: 关掉 Wi-Fi 或拔掉网线。停止在那台 Mac 上做任何涉及凭据的事。拿起手机或另一台电脑,先改 Apple Account 密码,再改密码管理器主密码。然后是邮箱,然后是金融账户。如果你在那台 Mac 上持有加密货币,先于一切从一台干净设备上把资金转走,因为助记词泄露没有撤销键。完整的顺序在上面的处置手册一节里,照着做,别临场发挥。

问题: 我在「强制退出」或「应用程序」文件夹里发现了一个不认识的应用。 解决方案: 不要打开它。动手之前先从另一台设备上搜索这个确切名称,因为很多正规的辅助应用名字都很怪。如果它确实陌生、并且是在事发前后出现的,就退出它,把它移到废纸篓,清倒废纸篓,然后检查「登录项与扩展」里有没有与之对应的后台项目,一并移除。找到一个组件不代表你找到了全部,所以继续执行检查步骤,并考虑抹盘的决定。

问题: 「系统设置」里显示了一个我从未安装过的描述文件。 解决方案: 在一台不受雇主或学校管理的个人 Mac 上,「设备管理」面板通常压根不存在。如果它存在并列出了一个陌生的描述文件,那是攻破的强烈指标,而且描述文件可以重定向 DNS 或安装能让流量被拦截的证书。从「系统设置」>「通用」>「设备管理」中移除它,然后检查你的网络设置里 DNS 服务器有没有被改动。考虑到描述文件能做的事情,这个发现强烈指向彻底抹掉重装。

问题: 我的 Mac 现在不停索要登录钥匙串密码,而且我输什么都不管用。 解决方案: 这完全可能出于无辜的原因,通常是在一次密码重置之后,你的账户密码和钥匙串密码不同步了。它也可能是安全事件的后续。如果你有任何理由怀疑恶意软件,先从干净设备上轮换凭据,然后再排障。如果你确信它与任何事件无关,我们那篇 Mac 反复索要登录钥匙串密码的指南讲了如何安全地重新同步或重置钥匙串。

常见问答

真正的 macOS 崩溃报告器会索要我的密码吗?

不会。当一个应用崩溃时,macOS 会提供重新打开、忽略或向 Apple 发送报告的选项。发送崩溃日志不需要管理员权限,所以不存在任何一种配置能让真正的崩溃报告器要求你验证身份。一个索要登录密码的崩溃报告窗口,无一例外都是假的。

我的 Mac 是最新版本,恶意软件是怎么过 Gatekeeper 的?

Jamf Threat Labs 报告称,分发它的应用带有有效 Apple Developer ID 的签名和公证。公证是一次针对已知恶意内容和签名问题的自动化扫描,不是人工安全审核,所以一个全新的原生二进制文件可以通过。Gatekeeper 认可了一张有效的票据。Apple 此后已吊销该证书。

如果我输了密码,是不是只有那一个密码泄露了?

不是,这正是关键所在。Jamf 报告称 CrashStealer 会在本地校验密码,如果正确,就能解锁登录钥匙串。你的钥匙串里存着 Wi-Fi 密码、应用凭据、证书和已保存的登录信息。把那台 Mac 上存储的每一份凭据都当作已泄露,而不只是你输进去的那一个。

抹掉我的 Mac 就能自动解决问题吗?

不能。抹盘会把恶意软件从机器上清除,但对已经离开这台机器的凭据毫无作用。先从一台干净设备上轮换密码,从 Apple Account 和密码管理器开始,然后再抹盘。同时避免从感染之后的备份中恢复,或者把应用程序迁移过来,因为那可能会把问题重新引入。

我能靠外观分辨出假弹窗吗?

有时能,但不总能。试着拖动它:一个无法离开其他应用窗口范围的弹窗,一定是假的。查看菜单栏和「强制退出」,看看是哪个应用在索要。但一个做工精良的原生仿冒品能通过每一项视觉测试,这就是为什么可靠的准则是看上下文而不是看外观。没有被你召唤出来的弹窗,都是敌对的。

经历这件事之后,我该给 Mac 装杀毒软件吗?

它能有所帮助,主要用于捕获已知恶意软件家族,以及在事件之后提供第二意见。它最弱的地方恰恰是这个场景——一个全新的、已签名的二进制文件,其攻击手段是一个逼真的窗口。良好的下载习惯、一个独一无二的密码管理器主密码,以及双因素验证,对你的保护都强过任何扫描器。

结语

CrashStealer 是一个老套路的精良执行版本。Jamf Threat Labs 报告了一款用原生 C++ 编写的信息窃取程序,藏在名为 Werkbit Setup 的磁盘映像里投递,安装一个自称 CrashReporter.app 的应用,显示一个打扮成系统对话框的密码弹窗,校验你输入的内容,并用正确的密码解锁你的登录钥匙串,进而拿到浏览器凭据、密码管理器数据和加密货币钱包。它带有有效 Apple Developer ID 的签名和公证,所以 Gatekeeper 放行了它,Apple 则在事后吊销了证书。

剥掉所有细节,剩下的是一个单一的决策点:一个窗口索要了你的密码,而你决定要不要给。这个决定不是技术性的,它是一个习惯,而习惯是可以建立的。值得建立的那个习惯足够简短,凌晨一点也记得住:如果你没做过任何需要密码的事,就不要输密码。 取消,查清楚是哪个应用在索要,然后从一个你信任的地方自己重新发起这个操作。提供触控 ID 时就用触控 ID,因为指纹无法像一串键入的字符那样被窃取。

如果你是在已经输完密码之后才读到这篇文章,情况是可以挽回的,而顺序才是关键。断开那台 Mac 的网络。换到另一台设备上。先 Apple Account,再密码管理器,然后邮箱,然后是钱。从干净设备上立刻转移加密货币,并把助记词当作已烧毁。撤销会话,检查登录项和描述文件,然后抹盘并设置为全新设备,而不是恢复那个被攻破的状态。照着清单往下走,别试图一次解决所有问题。

这周抽十五分钟,趁着没着火先把预防那部分做了:确认邮箱和金融账户已开启双因素验证,确保密码管理器的主密码在别处不存在,验证你有一份可用的备份,并检查 macOS 是否为最新版本。然后把这个页面加入书签。下一个假弹窗看起来会不一样,而规则会是同一套。