マルウェア作者は、セキュリティ研究者から悪意のあるコードを守るために、正規のソフトウェア保護ツールを採用し続けています。代表例が、Discordユーザーを積極的に標的とするPythonベースのマルウェアファミリー「VVS Stealer」です。
Pythonスクリプトを保護するために設計されたツールである Pyarmor を活用することで、VVS Stealerは静的解析とシグネチャベースの検知を回避する複雑な難読化を用い、リバースエンジニアリングを著しく困難にしています。
2025年4月にTelegram上で宣伝されて以来、VVS StealerはDiscordトークン、ブラウザの認証情報、セッションクッキーなどの機微データを流出させるよう設計されています。
しかし、最も注目すべき点は単なる窃取機能ではなく、それらを隠すために用いられる高度な暗号レイヤーです。
Pyarmorの課題
Unit 42が分析したVVS Stealerのサンプルは、PyInstallerでパッケージ化され、Pyarmorバージョン9.1.4で保護されていました。
Pyarmorは通常、開発者が知的財産を保護するために使用しますが、この文脈ではセキュリティツールの目をくらます役割を果たします。
この難読化は BCCモード (ByteCode-to-Compilation)に依存しており、Python関数をC関数へ変換し、別のダイナミックリンクライブラリ(DLL)内に格納します。

これは、コアロジックが標準的なPythonバイトコードでは可視化されないことを意味します。さらにマルウェアは、バイトコードと文字列をロックするために AES-128-CTR暗号化 を利用します。
ペイロードを復号するには、PyarmorランタイムDLL内に隠された特定のキーとノンスを抽出する必要があり、このプロセスは多くの自動解析サンドボックスを無力化します。

研究者は、Pythonバイトコードヘッダーを復元し、 Pycdc のようなツールを用いてソースコードを復元することで、マルウェアの難読化解除に成功しました。このプロセスにより、マルウェアの真の動作範囲が明らかになりました。
機能と永続化
Pyarmorの装甲を剥がすと、VVS Stealerは侵襲的な機能一式を露わにします。
- Discordインジェクション: マルウェアは稼働中のDiscordプロセスを終了させ、アプリケーションの中核ファイルに悪意のあるJavaScriptを注入します。これにより、ログインやパスワード変更を傍受し、さらには多要素認証(MFA)を回避することさえ可能になります。
- データ流出: Chrome、Edge、Operaなど幅広いブラウザを標的にし、クッキー、閲覧履歴、自動入力データを窃取します。盗まれた情報はZIPアーカイブに圧縮され、Discordウェブフックを介して流出させられます。
- 永続化: 長期的な活動を確実にするため、マルウェアは自身をWindowsのスタートアップフォルダーにコピーします。また、感染プロセスを隠すために、被害者にコンピューターの再起動を指示する偽の「致命的なエラー」メッセージボックスを表示するなど、ソーシャルエンジニアリング手法も用います。
VVS Stealerの事例は、ソフトウェア保護ツールが持つデュアルユース性を浮き彫りにしています。Pyarmorは開発者に正当なセキュリティを提供する一方で、脅威アクターによる採用は、防御側により高度な難読化解除ワークフローを必要とさせます。
Palo Alto Networksの顧客は、マルウェア防止エンジンを用いてこの種の脅威をブロックする Cortex XDR および XSIAM により、VVS Stealerから保護されています。
さらに、 Advanced WildFire と Advanced URL Filtering が、このキャンペーンに関連する悪性ドメインおよびペイロードを特定し、ブロックします。
翻訳元: https://gbhackers.com/pyarmor-obfuscation/