一个伪装成剪贴板管理工具Maccy的磁盘镜像,双击打开后提示你按下Command-R——这个组合键的真实作用,是绕过macOS给下载文件加的隔离警告,直接执行藏在AppleScript里的恶意代码。走完一整条链路,它会弹出一个和系统原生授权框几乎一样的密码输入窗。你输入密码之后,它不会立刻打包送走,而是先调用macOS自带的PAM(Pluggable Authentication Modules)接口,在本地核实这串密码是不是真的对得上你的账户。密码错了,它会让你重输,直到验证通过为止。
这就是安全公司Jamf Threat Labs最新发现的macOS窃密软件,起名PamStealer,名字直接来自它滥用的这个身份验证接口。Ars Technica用"不寻常"来形容它,不寻常的地方不在传播规模,而在这个"先验货再发货"的细节。
感染链:从仿冒官网到伪装成Finder
完整链路分四步走:先是仿冒Maccy的镜像文件,里面藏着一个恶意的.scpt脚本;双击后用Command-R绕过Gatekeeper,在系统自带的Script Editor里悄悄执行;脚本内部不用容易被拦截的curl或zsh命令,而是跑一段自包含的JXA(JavaScript for Automation)下载器,直接调用原生Objective-C接口去取第二阶段;第二阶段是一个专为Apple芯片编译的Rust二进制文件,这在macOS窃密软件里比较少见,同类家族更常用Swift、Go或Objective-C。
拿到密码之后,恶意程序会伪装成Finder.app或Software Update.app常驻后台,内部标签用com.apple.finder.core、com.apple.security.daemon这类名字混淆视听,图标也直接盗用系统原生的Finder图标。为了不让敏感权限的弹窗和刚安装的时间点撞在一起,它会把"完全磁盘访问权限"这类请求延迟最多四十分钟才弹出。骗过密码之后,它还会显示一句"文件已损坏,无法安装",让用户以为只是安装失败,而不是已经中招。
为什么"验密码"是个狠招
普通的Mac窃密软件拿到密码之后,通常要调用dscl、security或者干脆拉起一个osascript子进程去验证密码是否有效——这些都是系统日志里能留下痕迹的动作,也是安全软件重点盯防的行为特征。PamStealer绕开了这一整套,直接用PAM的接口在进程内部完成校验,不产生新的子进程,也不调用这些容易被识别的命令。
Jamf的原话是,这样"只保留经过验证的密码,给防御方少留一条可以检测的进程链"。换句话说,它不是多此一举地"验货",而是主动减少自己在系统里留下的动静。窃取无效密码没有意义,反而增加暴露风险,PamStealer的做法更像是把"质检"环节内嵌进了攻击流程本身。
它在窃密软件家族里排第几
macOS窃密软件不是新鲜事。2023年之后,以AMOS(Atomic Stealer)为代表的窃密软件即服务模式已经成熟,加上Banshee、Cuckoo等同类家族,主要靠仿冒安装包和破解软件分发,目标同样是浏览器凭证、Cookie和钱包数据。PamStealer要偷的东西和它们高度重合——浏览器数据、SQLite数据库、剪贴板内容,还专门写了读取以太坊账户的代码。
手法更精细,不等于影响面更大
在传播规模和商业化程度上,PamStealer目前看不出超过AMOS的迹象。AMOS已经跑通了完整的即服务链条,PamStealer更像是战术层面的一次升级示范:同样的目标,换了一套更安静的实现方式。这恰恰是这次报道标题里"不寻常"的真实所指——不是规模惊人,而是工程水平抬高了一截。
情报缺口比技术细节更值得留意
目前公开的报道里,还没有出现具体的C2域名、样本哈希,或者能直接导入EDR系统的LaunchAgent名单。这意味着企业安全团队现阶段没法靠传统的黑名单或哈希匹配去拦截它,只能盯行为特征:有没有人用Script Editor打开来路不明的.scpt文件,系统密码框弹出的时机和场景是否正常,"完全磁盘访问权限"的请求是不是来得莫名其妙。
- 提醒.普通用户下载第三方效率工具时,认准官网和开发者签名,遇到"按Command-R才能打开"这种反常提示,基本可以判定有问题。
黑产的"宁缺毋滥"听起来有点讽刺,但逻辑很实际:验证成本低,浪费掉的密码却会拖慢下游变现,还多留一次暴露机会。macOS曾经靠着市场份额小、恶意软件生态不成熟躲过一轮又一轮攻击,这两年这层保护正在被商业化的攻击工具一点点磨掉。PamStealer不是终点,更像是这条曲线上又往上走了一格的坐标点。
