PyPI に reverse-shell という悪意のパッケージ:あからさまな名前を用いる理由は?

‘Blatantly Obvious’: Spyware Offered to Cyberattackers via PyPI Python Repository

2023/04/12 DarkReading — 研究者たちは、プログラミング言語 Python のパブリック・リポジトリである PyPI (Python Package Index) で、大胆な方法で情報スティラーを公開しているマルウェア販売者を発見した。このプログラムは、“reverse-shell” という安直な名前が付けられており、Sonatype の研究者たちは、スペインを拠点とする Malware-as-a-Service (MaaS) グループの SylexSquad と関連づけている。リバースシェルとは、ハッカーが遠隔操作でコマンドを実行する際や、標的となるコンピュータからデータを受信するときに用いるプログラムを指す。

Sonatype の Developer Advocate である Dan Conn は、「この件に関して非常に興味深いのは、あまりにも露骨な点だ。おそらく SylexSquad は自分自身を宣伝し、捕まることを気にかけていないのだろう」と述べている。

しかし、彼らの大胆さは、これだけにとどまらない。

データ強盗型マルウェア “reverse-shell” の内部

Sonatype の研究者たちは、パブリック・フォーラムにアップロードされた “reverse-shell “というパッケージを発見したとき、目を疑ったという。彼らは Malware Monthly のブログ記事で、「なぜこんなあからさまな名前で、悪意のパッケージを作るのだろう」と述べている。

研究者たちが WindowsDefender.py と呼ばれるファイルの1つを調査したところ、このプログラムは、実はリバースシェル以上のものがあると判明した。

WindowsDefender.py には、get_login_data()/get_web_history()/get_downloads()/get_cookies()/get_credit_cards()/ImageGrab.grab() などの、あからさまな名前のついた関数がいくつかある。つまり、ハッカーたちは、その意図を隠そうとせず、情報を盗むために設計されたマルウェアであることを明らかにしている。

難読化を解除すると、感染したマシン上でコマンド/アクションを実行する、Discord ボットだと分析された。このマルウェアは、Cookie を取得し、スクリーンショットを撮り、シェルコマンドを実行し、閲覧履歴を盗み出し、すべてのデータを攻撃者の Discord チャネルに送信するものだった。

さらなる答えは、別のファイル “setup.py” にある。そこには、いくつかのスペイン語のコメントがあり、「GitHub リポジトリのクローンを作成してファイルを実行する」、「GitHub リポジトリの URL に置き換える」、「リポジトリのクローンを作成するパス」などと記されている。それにより、リバースシェルが MaaS 製品であることが判明したという。

さらに掘り下げると、コード内に複数の “Made by SylexSquad” タグが散らばっていることが明らかになり、そのうちのいくつかは軽く難読化されていた。 研究者たちによると、SylexSquad は既に閉鎖されたハッキング・マーケットプレイスであり、2022 年の時点では Sellix eコマース・プラットフォーム上で運営されていたという。

パブリック・リポジトリで公開することは、グループが意図的に製品に注目を集めるための方法だったのかもしれない。Dan Conn は、 「Anonymous/LulzSec/Killnet などのグループについて、どうやって知ることができるだろう? それは、彼らが評判を得ているからだ」と述べている。

しかし、PyPI は、それよりもはるかに価値がある。

ハッカーがパブリック・リポジトリを使う理由

Sonatype によると、PyPI や GitHub のようなフォーラムを利用する脅威アクターは、SylexSquad の攻撃者だけではなく、また、このような大胆さには多くの理由があるという。

研究者たちはブログで、「脅威アクターは、悪意のファイルを公開リポジトリでホストすることで、ファイル削除/アップグレード/ペイロードのバージョン管理などの機能を用いて、ファイルをコントロールしやすくなる」と説明している。

Conn は、「他の利点として、マルウェアが広く共有されるようになる。現実として、一般的なバイト列などのシグネチャを使って、悪意の有無を判断する多くのアンチウイルス・ソフトウェアは、これらの悪意のファイルを見逃すだろう」と述べている。

つまり脅威アクターは、アンチウイルス・スキャナーがすぐに検知できるようなマルウェアを提供するのではなく、悪意のコードを別の場所にリンクさせるだけで良いのだ。Conn は、「GitHub へのリンクを提供することで、そのチェックを回避している可能性がある」と指摘している。

パブリック・リポジトリには、脅威アクターの拠点とならないような保護措置が施されている。しかし、どんなに優れたスキャナーやモデレーターでも完璧ではないし、一度に全てを監視できるわけでもない。

Sonatype のセキュリティ研究者である Juan Aguirre は、「脅威アクターたちは、自動化されたエンジンによる検出を回避するために、ホストするコードを暗号化/難読化するなどの対策を取っている。今回のケースで SylexSquad は、悪意のスクリプトを数字で符号化し、各文字に対応する可逆性の高い ASCII コードを使っていた」と指摘している。

このケースでは、Sonatype が PyPI のメンテナに報告して、問題のパッケージは削除された。しかし Aguirre は、「これは、いたちごっこに過ぎず、誰かが捕まえても、次の場所に逃げるだけだ」と述べている。

Aguirre は、この話をオープンソース・ソフトウェアに関する、より広範な懸念に照らして見ている。つまり、マルウェアの開発者がオープンソース・リポジトリに用途を見出す限り、彼らが拾い上げる可能性のあるパッケージの種類に対して、ユーザー組織は注意する必要があるということだ。

彼は、「マルウェアの開発者がパブリック・リポジトリを利用する限り、そのパッケージの種類を認識する必要がある。今回の件は、そのための良い事例だ。自分が何をしているのか、どのような依存関係を使用しているのかを、把握する必要がある。ただやみくもにインストールしたり、目についたコードを取り込んだりしていると、このようなものが簡単にシステムに入り込んでしまうのだ」と指摘している。

SylexSquad の名前を用いる脅威アクターが存在するのか、その元メンバーが新たな展開を考えているのか、そのあたりが分かりませんが、いずれにせよ PyPI を悪用していることに、間違いはありません。OSS リポジトリは、便利で有用ですが、慎重に利用する必要がありますね。この2年くらいの間に、さまざまな汚染の実態が明らかになりましたが、その形態が常に変化している点に注目したいです。よろしければ、PyPI ページや、DevSecOps ページを、ご参照ください。

%d bloggers like this: