はじめに:正規ツールが悪用される脅威
マルウェア開発者たちは、悪意のあるコードをセキュリティ研究者から隠蔽するために、正当なソフトウェア保護ツールを採用し続けています。その顕著な例が、Pythonベースのマルウェア「VVS Stealer」です。このマルウェアはDiscordユーザーを標的としており、Pythonスクリプト保護ツールである「PyArmor」を悪用することで、複雑な難読化を施し、静的解析やシグネチャベースの検出を回避し、リバースエンジニアリングを著しく困難にしています。
2025年4月にTelegramで宣伝が始まったVVS Stealerは、Discordトークン、ブラウザ認証情報、セッションクッキーなどの機密データを窃取するように設計されています。しかし、その最も注目すべき特徴は、窃取能力だけでなく、それらを隠すために使用される高度な暗号化レイヤーにあります。
PyArmorによる難読化の仕組み
Unit 42が解析したVVS Stealerのサンプルは、PyInstallerでパッケージングされ、PyArmorバージョン9.1.4によって保護されていました。PyArmorは通常、開発者が知的財産を保護するために使用されますが、この文脈ではセキュリティツールの目を欺くために利用されています。
- BCCモード(ByteCode-to-Compilation):難読化はBCCモードに依存しており、Python関数をDLL(ダイナミックリンクライブラリ)内にC関数として格納します。これにより、コアロジックが標準のPythonバイトコードでは視認できなくなります。
- AES-128-CTR暗号化:さらに、マルウェアはAES-128-CTR暗号化を利用して、バイトコードと文字列をロックしています。
- 解析の障壁:このペイロードを復号するには、PyArmorランタイムDLL内に隠された特定のキーとノンスを抽出する必要があり、多くの自動解析サンドボックスを無効化します。
しかし、研究者たちはPythonバイトコードヘッダーを復元し、Pycdcのようなツールを使用することで、マルウェアの難読化を解除し、ソースコードを回復することに成功しています。このプロセスにより、マルウェアの真の動作範囲が明らかになりました。
VVS Stealerの機能と持続性
PyArmorの「装甲」を剥がされたVVS Stealerは、一連の侵入的な機能を露呈します。
- Discordへのインジェクション:マルウェアは実行中のDiscordプロセスを強制終了させ、アプリケーションのコアファイルに悪意のあるJavaScriptを注入します。これにより、ログイン情報、パスワード変更を傍受し、さらには多要素認証(MFA)をバイパスすることも可能になります。
- データ窃取:Chrome、Edge、Operaなどの幅広いブラウザを標的とし、クッキー、履歴、自動入力データを窃取します。窃取された情報はZIPアーカイブに圧縮され、Discord Webhookを介して外部に送信されます。
- 持続性:マルウェアは永続性を確保するため、自身のコピーをWindowsのスタートアップフォルダに配置します。また、「致命的なエラー」といった偽のメッセージボックスを表示し、被害者にPCの再起動を促すソーシャルエンジニアリングの手法を用いて、感染プロセスを隠蔽します。
対策と結論
VVS Stealerの事例は、ソフトウェア保護ツールの二重の性質を浮き彫りにしています。PyArmorは開発者にとって正当なセキュリティを提供しますが、脅威アクターによるその悪用は、防御側により高度な難読化解除ワークフローを必要とします。
Palo Alto Networksの顧客は、Cortex XDRおよびXSIAMを通じてVVS Stealerから保護されています。これらの製品は、マルウェア防止エンジンを利用して脅威をブロックします。さらに、Advanced WildFireとAdvanced URL Filteringは、このキャンペーンに関連する悪意のあるドメインとペイロードを特定し、ブロックします。
