「賢い忍者は、自分が完全に理解していない敵を探しません。」 - ティーンエイジ ミュータント ニンジャ タートルズのスプリンター
サイエンス フィクションに情熱を傾けるテクニカル ライターとして、Sonatype での仕事で最もエキサイティングな部分の 1 つは、セキュリティ リサーチ チームと協力する機会があるときです。
見つけて以来
これは珍しいことではありません。彼らは、オープンソース レジストリから何百もの疑わしいパッケージを常に評価して、本当に悪意があるかどうかを判断しています。この手順の中で、彼らはパッケージ間のおなじみのパターンを特定し、場合によっては、強い類似性を認識すると、その背後にある攻撃者/キャンペーンを追跡するためにさらに調査を行います.
2022 年の最後の週から 2023 年の初めまでの間に、当社の AI システムは、 easytimestamp
、 pyrologin
、 style.py
、 discord-dev
、 discorder
、およびpythonstyles
を含む、PyPI レジストリにアップロードされた疑わしいパッケージにフラグを立てました。当社のセキュリティ研究者がそれらを調べたところ、それらが実際に悪意のあるものであることを確認しました。さらに分析した結果、これらのパッケージには、Python マルウェアではあまり見られない一連の機能が追加されていることがわかりました。
悪意のある攻撃者はsetup[.]py
ファイルにペイロードを隠しているため、開発者は単純な pip インストールを使用するだけで感染します。この場合、攻撃者は ZIP ファイルをダウンロードしてライブラリをインストールする PowerShell スクリプトをうっかり起動してしまい、攻撃者は被害者のマウスやキーボードを制御したり、スクリーンショットを撮ったり、隠しリモート接続を作成したりできるようになります。さらに、これらのパッケージは、パスワード、Cookie、暗号通貨ウォレット データなどの機密情報を盗み出し、さらにはリモート アクセス用のツールをインストールしようとします。私たちの調査結果は、
それにもかかわらず、セキュリティ研究者のカルロス フェルナンデスは、忘れられない既視感を抱いていました。パッケージを公開してから 1 週間、このマルウェアの以前のバージョンを見た記憶が彼の脳裏をよぎりました。脅威アクターは時間の経過とともにマルウェアを進化させてきた可能性がありますが、それを確認する必要があったため、私は OSINT 帽子をかぶり、彼の直感に真実があるかどうかを確認できるようにしました。
データベースを振り返ると、2022 年 9 月 25 日にpygradient
というパッケージが PyPI リポジトリにアップロードされました。私たちの AI は疑わしいとフラグを立て、セキュリティ リサーチャーは、これにマルウェアが含まれていること、およびpystyle
と呼ばれる別のパッケージのソースがバンドルされていることを確認しました。両方のライブラリはによって作成されました
W4SP スティーラーは、永続性 (ユーザーが PC を再起動するたびに再アクティブ化されます)、難読化 (完全に検出できないことを作成者は約束しています)、および画像ファイル内のポリモーフィックで高度に難読化されたペイロードを隠すステガノグラフィー技術を誇っています。マルウェアは、ハードコーディングされた Discord Webhook アドレスを介して、被害者のすべての Discord アカウント、クレジット カード、パスワード、および暗号ウォレットを攻撃者に送り返します。このマルウェアに興味を持った悪意のある人物は、約 20 米ドルを暗号通貨で支払って購入しました。
元々、 pystyle
には悪意のある性質はありませんでした。つまり、可読性とユーザー エクスペリエンスを向上させるために、コンソール出力のスタイルと色を変更する無害なパッケージです。しかし、Phylum の調査によると、このマルウェアが人気を博すと (このパッケージは PyPI でまだアクティブであり、毎月 40,000 を超えるダウンロードが蓄積されています)、2 回のリリースで W4SP マルウェアを追加することを決定しました。
pystyle
のようなオープンソース パッケージは、数か月間スリーパー エージェントとして機能し、その後、悪意のある目的で独自の作成者によってアクティブ化されます。彼らの人気のあるパッケージは、私たちのようなセキュリティ研究者によって発見され、悪意のあるものとして報告され、永久に削除される可能性があるため、危険な動きです.そのため、無害なライブラリのソース コードを含める代わりに、新しいパッケージを作成し、ある種の悪意のあるペイロードを追加して、新しい名前 (一般的で無害に聞こえ、無害に見えるもの) でアップロードすることがよくあります。 pygradient
などの名前。
Carlos の詳細を調べたところ、このプロト RAT ミュータント マルウェアには 12 月バージョンの機能の一部が欠けていることがわかりました。PowerShell スクリプトを起動し、機密データを盗み出しましたが、base64 でエンコードされたペイロードやホワイトリストを使用していませんでした。 txt ファイルを作成して自己感染を防ぎます。ある意味では、より穏やかで洗練されていない亜種でした。
しかしその後、11 月初旬にアップロードされたpaintpy
、 devicespoof
、 devicespoofer
などのパッケージを調査し、深く掘り下げた結果、マルウェアが本当に進化していることを確認しました。
11 月以降、BillyTheGoat は GitHub で活動していませんが、彼の作品に基づいた、またはそれらから直接盗んだマルウェアをまだ発見しています。
このユーザーは、PyPI で最近削除されたpystilez
というパッケージをアップロードしました。
チェックマルクスapicolor
と呼ばれるパッケージ (同様の名前のバリエーションと共に) で W4SP 攻撃を発見した後.検証済みの Steam アカウントにリンクされた管理者プロファイルと、攻撃者の Steam エイリアスの 1 つとして「zeeckt」という名前が表示されました。
セキュリティ研究者は、教育目的で zeeckt のペイロードの 1 つを投稿し、W4SP スティーラーの共著者から興味深い返信を受け取りました。
スティーラーが盗まれるなんて皮肉なことです。
明らかに 17 歳の Python 開発者である同じ著者は、GitHub プロファイルの README ファイルで不満を繰り返しています。
zeeckt が他の悪意のある攻撃者からどのような悪意のあるコードを盗んだかは正確にはわかりませんが、1 つ確かなことは、その名前が、オープンソース レジストリ全体のマルウェア キャンペーンに現れ続けているということです。
Carlos は最近、さらに 4 つのパッケージを見つけました。forenitq
、 forenith
、 forenity
およびforenitz
。さらなる調査の後、彼はそれらを悪意のあるものとしてタグ付けし、削除するよう PyPI に報告しました。公開から削除までにかかった時間は最速で約20分。
carlos はforenitq
のsetup[.]py
を調べて、次の第 1 段階のペイロードを見つけました。
攻撃者は、「開始」コマンドを使用して、特定の URL から Windows バイナリをダウンロードして実行する 3 つの一時ファイルを作成します。ナメクジ/rat
および/clip
は悪意を示唆していますが、内部を調べずにその仮定を確認することはできませんでした。
この記事の執筆時点では、 hxxp://20[.]226[.]18[.]203
でホストされているページはまだアクティブであり、既に期限切れまたは非公開になっている Discord 招待へのリンクのみが表示されます。
カルロスは、パッケージが人気者を装っていることに気づきました。
RAT ファイルの難読化を解除した後、彼はクリップボード ハイジャッカーの可能性をロードする行を見つけましたが、その詳細は base64 でエンコードされていました。
デコードすると、被害者のクリップボードをハイジャックして、意図した暗号通貨ウォレット アドレスを攻撃者のアドレスに置き換えるように設計された Python コードを取得します。
ビットコイン(bc1)、イーサリアム(0x)、モネロ (4)、ライトコイン(L または M または 3) などの指定されたパターンを探し、パターンが見つかると、意図したアドレスを攻撃者の暗号通貨ウォレット アドレスに置き換えます。 .
コードは、
さらに、この RAT 変異体が検出を回避するために使用するその他の手法も明らかにしました。第 1 段階のペイロードがファイルforenitq/ansi[.]py
にsetup[.]py
]py の代わりに追加され、第 2 段階のポリモーフィック ペイロードが実行されるたびに変更されます。バイナリ。
攻撃者は、非常に完全なヘルプ メニューを備えた新しいコマンド アンド コントロールも追加しました。
ご覧のように、悪意のある攻撃者は暗号資産とシステム認証情報を盗み、インフラストラクチャにさらに侵入しようとしています。彼らの RAT マルウェアは、より回避しやすく、開発者に損害を与えるように変化し続けています。そのため、現在ソフトウェア サプライ チェーンを保護していない場合は、できるだけ早く対策を講じることを検討してください。
hxxp://20[.]226[.]18[.]203/inject/tCxFLYLT6ViY9ZnP
hxxp://20[.]226[.]18[.]203/clip
hxxp://20[.]226[.]18[.]203/rat