PyPI に悪意のパッケージ:Discord を改ざんしてパスワードなどを盗み出す

Malicious PyPi packages turn Discord into password-stealing malware

2022/08/17 BleepingComputer — Discord (VoIP and Instant Messaging) クライアントを、情報に隠し持つバックドアに改変し、Web ブラウザや Roblox からデータを盗むマルウェアをインストールしていく、12個の悪意の PyPI パッケージが発見された。これらの 12個のパッケージは、2022年8月1日に scaredcoder というユーザーが Python Package Index (PyPI) にアップロードしたものであり、Snyk の研究者たちにより発見された。

一般的なタイポスクワッティングの手法ではなく、これらのパッケージは独自の名前を使用し、興味を持った開発者に対して、自らをアピールする多用な機能を約束している。

これらの Python パッケージは、Roblox ツールやスレッド管理といった、基本的なモジュールを装っているが、約束された機能を備えるものはない。その代わりに、一連のパッケージは開発者のデバイスに、パスワードを盗むマルウェアをインストールする。

Malicious repository on PyPI
Malicious repository on PyPI

残念ながら、この記事を執筆している時点で、これらの悪意の PyPI Python パッケージはリポジトリから削除されていないため、依然としてソフトウェア開発者たちは危険にさらされている。

12個の悪意のパッケージ

Snyk の最新レポートには、「研究者たちは、これらの悪意の Python パッケージの1つである “cyphers” を分析し、”setup.py ” に隠された悪意のコードが、Discord CDN サーバから2つのマルウェア実行ファイル(”ZYXMN “と “ZYRBX”)をインストールするために使用されている。一連の悪意のパッケーのうち、”Hackerfilelol” と “Hackerfileloll” を除き、その他のパッケージは “Main.exe” という悪意の実行ファイルを共用している」と記されている。

最初のバイナリである ZYXMN.exe は、Google Chrome/Chromium/Microsoft Edge/Firefox/Opera などから、パスワード/ブラウザ履歴/Cookie/検索履歴などの情報を盗み出すために用いられる。

このマルウェアは、Web ブラウザのローカル・データベースのマスターキーを解読し、被害者の検索履歴/閲覧履歴/クッキー/ブックマーク/保存パスワード/保存クレジットカードの平文データを取得する。そして、それらの情報は、Discord の Web フックを介して、脅威アクターの環境にアップロードされる。

さらに興味深いことに、これらのマルウェアは、Discord クライアントで使用される実際の JavaScript ファイルを変更して、Discord アカウントからダイレクトに情報を盗むことができるバックドアを注入する。

Discord からデータを盗むために、このマルウェアは、”discord_desktop_core” フォルダ下の “index.js” ファイルを修正し、悪意の Discord インジェクション・スクリプトを追加する。このインジェクションの対象となるクライアントは、Discord/Discord Development/Discord Canary/Discord PTB (Public Test Build) である。

Discord injection to run within the app
Discord injection to run within the app’s context (Snyk)

スクリプトが注入された状態で、Discord が再起動されると、認証トークン/Nitro ステータス/課金情報/クレジットカードなどを盗む、さまざまなネガティブな動作が実行される。

Discord-Injection project features
Discord-Injection project features
Source: BleepingComputer


2つ目のマルウェア ZYRBX.exe は、Roblox のみに焦点を当てたものであり、オンラインゲーム・プラットフォームのアカウントから、Cookie/ユーザーID/Robux 残高/ アカウント Premium ステータスなどを盗み、Discord Web フックに流出させようとする。

ZYRBX’s Discord data-stealing code
ZYRBX’s Discord data-stealing code (Snyk)

PyPI 上のマルウェアがさらに増加

昨日には Kaspersky も、情報を盗み出すマルウェアを含む、別の PyPI パッケージを紹介し、また、Discord クライアントの変更に関するレポートを公開した。

これらのパッケージを用いる窃盗犯は、暗号通貨ウォレット/Steam/Minecraft などのアカウント情報収集に重点を置いており、注入されたスクリプトは、メールアドレス/パスワード/課金情報などの入力を監視している。

このステップの後、窃盗犯はホストのダウンロード/ドキュメント/デスクトップなどのフォルダをスキャンし、2FA リカバリリスト/パスワードテキストファイル/Discord トークン/Paypal アカウントなどの情報などを探し出す。

Scanned items on local forlders
Scanned items on local folders (Kaspersky)

Kaspersky が発見した悪質な組み合わせは、pyquest と ultrarequests で構成され、数百万ダウンロードのプロジェクトを模倣し、そのコードのクローンまで作成している。

Code comparison reveals obfuscated malware-fetching script
Code comparison reveals obfuscated malware-fetching script on cloned project (Kaspersky)

悪意のパッケージの報告に対する PyPI の対応は遅く、依然として悪意のパッケージが何日間もオンラインに残っている。おそらく、限られた予算の小さなボランティア・チームが、絶え間ないマルウェアのアップロードに圧倒された結果だと思われる。

残念ながら、こうした対応により、悪意のパッケージには多くの稼働時間が与えられ、マルウェアの犠牲になるソフトウェア開発者を増加させる。

またも、悪意の PyPI パッケージが発見されたという話です。このところの PyPI は散々で、5月21日の「PyPI リポジトリに悪意のパッケージ:Windows/Linux/macOS にバックドアを仕込む」から始まり、6月22日の「悪意の PyPI パッケージが開発マシンを暗号マイニングマシンに変身させる」、8月9日の「PyPI に仕込まれた悪意の Python ライブラリ 10件:認証情報や個人情報などを窃取」、8月15日の「PyPI で発見された悪意のパッケージ:ファイルレス・マルウェアを Linux に配布」へといたる、とても厄介なインシデントが続いています。悪意のパッケージのアップロードは、開発者に自由を約束しながら、利用者には安全性も提供するという、オープンソース・リポジトリの泣き所ですね。

%d bloggers like this: