難読化のようで難読化でない

ほぼこもセキュリティニュース By Terilogy Worx

Pythonなどのコンピュータ言語では、公開された便利なライブラリのような機構が利用できます。
Node.jsでのnpm、RubyでのRubyGemsのポジションのパッケージ管理システムとして、PythonにはPyPIがあります。
こういったリポジトリには多くの有用なソフトウェアが含まれていて、これらを効果的に利用することで、効率よく目的のソフトウェアを作成することができます。
大いに利用すべきです。
しかし、リポジトリに含まれているすべてのものが良性のものであるのかということは、別の問題です。
これまでも多くの悪意あるパッケージが発見されて削除されてきましたが、またその手のソフトウェアが確認されています。

Pyobftoexe、Pyobfusfile、Pyobfexecute、Pyobfpremium、Pyobflite、Pyobfadvance、Pyobfuse、pyobfgoodという名前の合計8つのパッケージが公開されていました。
これらはすべて「Pyobf」で始まる名前のパッケージです。

「Pyobf」で始まる名前は何を狙ったものなのでしょうか。
pyobf2、とか、pyobfuscatorというツールがあります。
これらはいずれもGitHubで開発が進められているPythonで利用できる難読化ツールです。
そして、PyPIでも公開されていて、簡単に入手できるようになっています。

Pythonなどのスクリプト言語は、内部機構がそのまま見える形で配布され、そのまま動作させることができます。
これは利用者の立場で考えるとよい特徴といえます。
内部の機構を確認することができますし、必要に応じて動作内容を調整することも容易ですので、安全性や利便性があるといえそうです。
しかし、開発者の立場では少し異なる場合があります。
作成した独自の機構の構造を公にしたくないなどの理由で、開発したものを公開したいのだけれども、内容は把握されにくくしたいという場合があります。
こういった場合に利用が検討される機構の一つに、難読化ツールがあります。

いろいろな難読化の方式がありますが、いずれも難読化ツールでの難読化を施した後のものは、一見してもその内部の構造がわからないようになります。
これで開発者は安心して公開できる、というわけです。

脅威アクターはここに狙いを定めました。
難読化した後のコードは、一見して内部の機構がわからなくできるのです。
わからないなら、悪意あるロジックを混ぜ込んだものを難読化してしまえ、ということを思いついたのです。

正規の難読化ツールの名前を模した悪意あるパッケージを入手した人の環境はどうなってしまうのでしょうか。
BlazeStealerという名前のマルウェアが環境に取り込まれ、実行されます。
BlazeStealerは、Discordボットを実行し、Webブラウザーに保存されたパスワードやスクリーンショットを含む幅広い情報を収集し、任意のコマンドを実行し、ファイルを暗号化し、Microsoft Defenderウイルス対策機能を無効化します。
難読化したいものを持っている人は価値ある情報を持っているに違いない、ということなのでしょうか。

それ本当に難読化?というお話でした。

参考記事(外部リンク):Python obfuscation traps
checkmarx.com/blog/python-obfuscation-traps/