实时检测Windows系统上的ClickFix剪贴板注入攻击。
ClipGuard监控剪贴板活动,并在可疑的粘贴操作执行之前拦截它们——专门针对ClickFix技术,该技术利用虚假验证页面诱骗用户粘贴恶意命令。
ClickFix攻击的工作原理如下:
关键点:当JavaScript通过navigator.clipboard.writeText()写入剪贴板时,剪贴板中仅包含CF_UNICODETEXT——当用户手动从网页中选择并复制文本时,浏览器会将CF_UNICODETEXT和CF_HTML同时放入剪贴板。ClipGuard利用这种格式差异作为其主要检测信号之一。
ClipGuard在系统托盘中运行,并采用多层检测机制:
剪贴板来源追踪 — 监听WM_CLIPBOARDUPDATE消息,记录每次剪贴板更改的源进程、剪贴板格式(CF_HTML vs CF_UNICODETEXT)、内容长度以及内容预览。
执行表面检测 — 确定前台窗口是否为命令执行表面:运行对话框(Win+R)、cmd.exe、powershell.exe、pwsh.exe或Windows Terminal。
键盘钩子(Ctrl+V拦截) — 低级键盘钩子(WH_KEYBOARD_LL)拦截Ctrl+V按键操作。当试图在执行表面上粘贴来自浏览器的剪贴板内容时,ClipGuard会评估威胁。
基于格式的判断 — 如果剪贴板内容来自浏览器且仅包含文本(无CF_HTML),则标记为可疑——表明可能是JavaScript剪贴板写入而非用户发起的复制(无HTML指示器)。粘贴被阻止,用户会看到一个包含剪贴板内容的警报,然后决定允许还是阻止。
剪贴板被浏览器更新?
-- 是:用户在执行表面粘贴(Ctrl+V)?
-- 是:剪贴板仅包含CF_UNICODETEXT(无CF_HTML)?
-- 是:阻止 — 疑似ClickFix(JS剪贴板写入)
-- 否:严格模式开启?
-- 是:警告 — 用户复制,但进入执行表面
-- 否:允许
Edge、Chrome、Firefox、Brave、Opera、Vivaldi、Chromium、Arc
前提条件:
从源码构建:
git clone https://github.com/CertainlyP/ClipGuard.git
cd ClipGuard
dotnet build -c Release
或从Releases页面下载编译好的二进制文件。
当检测到可疑粘贴时,ClipGuard 会显示一个包含剪贴板内容预览、源进程及 PID、剪贴板格式分析以及阻止或允许粘贴选项的警报。
日志写入 %APPDATA%\ClipGuard\shield.log
本工具基于对 ClickFix 攻击机制的原创新研究:
MIT