新型VVS Stealerマルウェアが難読化されたPythonコードを介してDiscordアカウントを標的に
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
VVS Stealerは、Telegramで販売されている新しく観測されたPythonベースの情報スティーラーです。Pyarmorで難読化され、PyInstallerでパッケージ化され、Windowsのスタートアップフォルダ経由で持続化します。このマルウェアはDiscordトークン、ブラウザの資格情報、クッキー、履歴、パスワード、スクリーンショットを収集します。また、アクティブなDiscordセッションをハイジャックするために悪意のあるJavaScriptペイロードを注入することも可能です。
調査
Palo Alto Networks Unit 42は、このマルウェアを開示し、2025年4月から販売されていると指摘しました。研究者たちは、その難読化技術、配布モデル、資格情報の窃取やDiscord注入を含む機能を説明しました。このレポートは、スティーラーに焦点を当てたTelegramグループで活動するフランス語を話す脅威アクターにツールを関連付けています。
緩和策
組織は、未知のPyInstaller実行ファイルとスタートアップフォルダ内の予期しないショートカットを監視するべきです。難読化されたPythonスクリプトや疑わしいJavaScriptペイロードのエンドポイント検出ルールを展開します。Discordやブラウザアカウントに多要素認証を強制し、資格情報収集が悪用される可能性のある管理権限を制限します。
対応
VVS Stealerが検出された場合、影響を受けたエンドポイントを隔離し、メモリおよびファイルアーティファクトを収集し、IOCを抽出します。悪意のあるスタートアップエントリを削除し、注入されたDiscordプロセスを終了し、侵害されたアカウントのパスワードを強制的にリセットします。追加の盗まれた資格情報を見つけるために完全なフォレンジック調査を実施し、リモートC2インフラストラクチャがブロックされていることを確認します。
攻撃フロー
検出
異常なディレクトリ内のPythonファイル作成(ファイルイベント経由)
表示
DiscordのC2チャンネルとしての可能性のある悪用(DNSクエリ経由)
表示
DiscordのC2チャンネルとしての可能性のある悪用(プロキシ経由)
表示
自動起動位置における疑わしいバイナリ/スクリプト(ファイルイベント経由)
表示
PyInstallerの利用の可能性(ファイルイベント経由)
表示
VVS Stealer PyInstallerパッケージおよびDiscord終了 [Windowsプロセス生成]
表示
シミュレーション実行
前提条件: テレメトリおよびベースラインのプレフライトチェックに合格していること。
根拠: このセクションは、攻撃者の手法(TTP)の正確な実行を説明し、検出ルールを発動するように設計されています。コマンドと説明は、識別されたTTPを直接反映し、検出ロジックによって期待された正確なテレメトリを生成することを目的とします。抽象的または無関係な例は、誤診につながります。
-
攻撃の説明およびコマンド:
攻撃者は、Windowsワークステーションで低権限ユーザーアカウントを侵害しました。PowerShellドロッパーを使用して、PyInstallerでパッケージ化された悪意のある実行ファイル(VVS_Stealer.exe)を起動し、まずコマンドラインに“PyInstaller”を含むプロセスを生成します。このペイロードは、その後トークンスティーリングの注入ステージに備えて実行中のDiscordクライアントを強制終了します。すべてのアクションは現在のユーザーコンテキストの下で行われ、一つの プロセス生成 イベントがルールの基準に一致する形で生成されます。ステップバイステップ:
- 悪意のあるPyInstallerバンドルを
%TEMP%. - にコピーします。
- “PyInstaller”という言葉を明示的に含むコマンドラインでそれを実行します。
その悪意のあるバイナリは内部的にその悪意のあるバイナリは内部的に - を呼び出してDiscordを終了します。 プロセス生成 終了は、
イメージフィールドがDiscordの実行ファイルパス(C:Users<user>AppDataLocalDiscordapp-... Discord.exe)に解決され、元の生成コマンドラインが“PyInstaller”を依然として含んでいる
- 悪意のあるPyInstallerバンドルを
-
イベントを生成します。 回帰テストスクリプト:
notepad.exeプロセスを起動しますが、 PyInstallerでパッケージ化された実行ファイルである かのように振る舞い、コマンドラインにキーワードを埋め込みます。また、Discordプロセスを終了して“Image endswith Discord.exe”という条件を模倣します。# ------------------------------------------------- # シミュレーションスクリプト – Sigmaルール #f63685c4-feea-431b-a749-55cf8661e6ac をトリガー # ------------------------------------------------- # 1. Discordが実行中であることを確認します(オプション、停止を保証するために)。 $discordPath = "$env:LOCALAPPDATADiscordapp-1.0.9005Discord.exe" if (-Not (Get-Process -Name "Discord" -ErrorAction SilentlyContinue)) { Start-Process -FilePath $discordPath -WindowStyle Hidden Start-Sleep -Seconds 5 } # 2. コマンドラインに「PyInstaller」を含むダミープロセスを起動します。 # 無害なプレースホルダとして、notepad.exeを使用。 $dummyCmd = "C:WindowsSystem32notepad.exe" $cmdLine = "PyInstaller_dummy_execution -run $dummyCmd" Start-Process -FilePath $dummyCmd -ArgumentList $cmdLine -WindowStyle Hidden Write-Host "[+] PyInstallerキーワードを含むダミープロセスを起動しました。" # 3. Discordをすぐに終了してDiscord.exeイメージイベントを生成します。 if (Get-Process -Name "Discord" -ErrorAction SilentlyContinue) { Stop-Process -Name "Discord" -Force Write-Host "[+] Discord.exeを終了しました。" } # 4. オプション: 短時間後にダミーのノートパッドウィンドウをクリーンアップします。 Start-Sleep -Seconds 8 Get-Process -Name "notepad" -ErrorAction SilentlyContinue | Stop-Process -Force Write-Host "[+] クリーンアップ完了。" -
クリーンアップコマンド: 以下のPowerShellスクリプトは、検出ルールを発動するために必要な正確なテレメトリを再現します。これは意図的に本物の悪意のあるペイロードを避け、代わりに無害な
残存プロセスが残っていないことを確認します。