サイバーヴォルク再登場:VolkLockerの新機能と欠陥
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
この記事は、親ロシア系ハクティビスト集団CyberVolkの再活動と、その新しいランサムウェアファミリーであるVolkLockerについて取り上げています。このGolangベースのランサムウェアは、WindowsとLinuxシステムの両方を標的とし、コマンドおよびコントロールにTelegramを利用しています。また、ハードコードされたAES-256-GCMマスターキーを使用しており、このキーは平文で%TEMP%ディレクトリに書き込まれ、不本意な復号のショートカットを効果的に作成します。VolkLockerはさらにレジストリ設定を改ざんし、セキュリティコントロールを無効にし、内蔵のタイマーが切れるとシステムに対して破壊的な行動を試みます。
調査
研究者たちはVolkLockerのサンプルを調査し、コードの難読化なしで配布されていることを観察し、代わりにUPXを使ったパッキングを推奨しました。ランサムウェアは環境チェックを行い、利用可能なドライブを列挙し、静的なマスターキーを使用してデータを暗号化し、そのキーを隠しバックアップファイルに保存します。永続性は、実行可能ファイルを複数のパスに複製し、レジストリを変更して保たれます。Telegramボットのトークンとビットコインアドレスは、成功するための必須の設定要素です。
緩和策
防御者は文書化されたレジストリ変更、平文のキーのバックアップファイルの作成、および起動場所に出現する同じ実行可能ファイルの複数のコピーを監視する必要があります。Telegram関連のドメインへの外向きトラフィックのブロックや、UPXでパックされたバイナリのフラグ付けはリスクを抑えるのに役立ちます。定期的なオフラインまたは不変のバックアップの維持やボリュームシャドウコピーの自動削除の防止も推奨されます。
応答
検出後、すぐに妥協したエンドポイントを隔離し、%TEMP%から平文のキーのバックアップファイルを取得し、ファイルの復号化に既知のマスターキーを活用します。VolkLockerの実行可能ファイルのすべてのインスタンスを根絶し、変更されたレジストリの値を復元し、無効にされたセキュリティソリューションを再起動します。TelegramベースのC2トラフィックの法医学レビューを実施し、露出したボットトークンのその後の誤用を継続的に監視します。
攻撃フロー
検出
CyberVolkランサムウェアのアーティファクトの検出 [Windows ファイルイベント]
表示
CyberVolkランサムウェアによる特権エスカレーションとプロセス終了 [Windows プロセス作成]
表示
IOC(HashSha1)で検出:CyberVolkが再登場 | 不完全なVolkLockerが新機能を伴う困難をもたらす
表示
可能なレジストリ修正によるシステムツールのロックダウン(コマンドライン経由)
表示
Windows Defenderの保護を無効化する(registry_event経由)
表示
シミュレーション実行
前提条件:Telemetry & Baseline Pre-flight Checkを成功させる必要があります。
理由:このセクションでは、検出ルールをトリガーするために設計された攻撃者手法 (TTP) の正確な実行を詳細に説明します。コマンドとナラティブは、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。抽象的または関係のない例は誤診につながります。
-
攻撃ナラティブとコマンド:
- 目的: 通常のユーザーワークステーションでシステム権限を取得し、セキュリティツールを回避します。
- ステップ1 – UACバイパス: 攻撃者が起動する ms-settings.exe コマンドラインでプロセスを
NtRaiseHardError、これは特定のミスコンフィグレーションで自動的に承認される可能性があるUAC昇格プロンプトをトリガーできる既知の非公開APIです。 - ステップ2 – 防御を妨害: 昇格後すぐに、同じコマンドラインが taskkill.exe を呼び出して、特権プロセスを監視している可能性のある
procmon.exe,processhacker.exeなどの、既知の分析ツールを終了させます。 - 結果としてのテレメトリ: 単一のプロセス作成イベントで Image = ms-settings.exe と CommandLine の両方が含まれており、Sigmaルールの
taskkill.exeとNtRaiseHardErrorを満たしています。を満たしています。.
# 組み合わせた悪意のあるコマンド - ms-settings.exeの引数として見せかけるように作成 $maliciousCmd = '"C:WindowsSystem32ms-settings.exe" "taskkill.exe /F /IM procmon.exe" "NtRaiseHardError"' Start-Process -FilePath "$env:SystemRootsystem32ms-settings.exe" -ArgumentList $maliciousCmd -
リグレッションテストスクリプト: 以下のPowerShellスクリプトは、攻撃を正確に再現し、自動化されたリグレッションテストのために再利用できます。
<# .SYNOPSIS CyberVolkのms-settings UACバイパス+分析ツール終了手法をシミュレートします。 .DESCRIPTION ms-settings.exeを、taskkill.exeおよびNtRaiseHardErrorを含む編集された引数リストで起動します。 Sigma検出ルールを発火するために必要な特定のプロセス作成テレメトリを生成します。 .NOTES 通常のユーザーアカウントで実行してください。ターゲット環境にプロセス作成ログ記録が有効であることを確認してください。 #> # パラメータ(必要に応じて調整) $msSettings = "$env:SystemRootsystem32ms-settings.exe" $analysisTools = @("procmon.exe","processhacker.exe","ida64.exe") $killCmd = "taskkill.exe /F /IM " + ($analysisTools -join " /IM ") $hardError = "NtRaiseHardError" # 悪意のある引数文字列を構築 $argList = @($killCmd, $hardError) -join " " Write-Host "ms-settings.exeを悪意のある引数で起動中..." Start-Process -FilePath $msSettings -ArgumentList $argList Write-Host "実行したコマンド:" Write-Host "`"$msSettings`" $argList" -
クリーンアップコマンド: 検証後に残っている ms-settings.exe プロセスを終了し、通常のシステム状態を復元します。
# 実行中のms-settingsプロセスがある場合は終了 Get-Process -Name "ms-settings" -ErrorAction SilentlyContinue | Stop-Process -Force # オプション:分析ツールが意図せず終了されていないか確認 foreach ($tool in @("procmon","processhacker","ida64")) { if (Get-Process -Name $tool -ErrorAction SilentlyContinue) { Write-Host "$toolはまだ実行中です。" } else { Write-Host "$toolは終了されました(テストのために期待される結果です)。" } }