
Windows 上での ClickFix クリップボードインジェクション攻撃のリアルタイム検出。
ClipGuard はクリップボードのアクティビティを監視し、不審なペースト操作が実行される前にインターセプトします。特に ClickFix 手法(偽の確認ページでユーザーを騙し、悪意あるコマンドを貼り付けさせる攻撃)を標的としています。
ClickFix 攻撃は次のように動作します。
重要なポイント: JavaScript が navigator.clipboard.writeText() 経由でクリップボードに書き込む場合、クリップボードには CF_UNICODETEXT のみが含まれます。一方、ユーザーが手動でテキストを選択・コピーすると、ブラウザは CF_UNICODETEXT と CF_HTML の両方をクリップボードに置きます。ClipGuard はこの形式の違いを主要な検出シグナルの一つとして利用します。
ClipGuard はシステムトレイで動作し、複数の検出メカニズムを重ね合わせます。
クリップボードの発信元追跡 — WM_CLIPBOARDUPDATE メッセージをリッスンし、すべてのクリップボード変更について、発信元プロセス、クリップボード形式(CF_HTML の有無)、コンテンツ長、内容のプレビューを記録します。
実行サーフェスの検出 — フォアグラウンドウィンドウが実行サーフェス(Run ダイアログ、cmd.exe、powershell.exe、pwsh.exe、Windows Terminal)であるかどうかを識別します。
キーボードフック(Ctrl+V インターセプト) — 低レベルキーボードフック(WH_KEYBOARD_LL)で Ctrl+V キーストロークをインターセプトします。実行サーフェスにペーストが試みられ、クリップボードの内容がブラウザ由来の場合、ClipGuard が脅威を評価します。
形式に基づく判定 — クリップボードの内容がブラウザ由来でテキストのみ(CF_HTML がない)場合、不審とフラグを立てます。これは JavaScript によるクリップボード書き込み(ユーザーによるコピーではない)を示唆します。ペーストはブロックされ、ユーザーはクリップボード内容を確認した上で許可またはブロックを選択するアラートを表示します。
クリップボードがブラウザによって更新されたか?
─ YES: ユーザーが実行サーフェスに Ctrl+V で貼り付け?
─ YES: クリップボードに CF_HTML なし(CF_UNICODETEXT のみ)?
─ YES: BLOCK — ClickFix の疑いあり(JS クリップボード書き込み)
─ NO: 厳格モードオン?
─ YES: WARN — ユーザーコピーだが、実行サーフェスに貼り付けられようとしている
─ NO: ALLOW
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 攻撃のメカニズムに関する独自研究に基づいています。
navigator.clipboard.writeText() 呼び出しを区別pushd \\attacker\share + type payload.bat | cmd バリアントMIT