PyPI に悪意のパッケージが登場:CloudFlare Tunnel を悪用するトロイの木馬

Malicious PyPi packages create CloudFlare Tunnels to bypass firewalls

2023/01/07 BleepingComputer — PyPI (Python Package Index) 上の6つの悪意のパッケージが Cloudflare Tunnel を悪用し、リモート・アクセスに対するファイアウォール制限をバイパスしている間に、InfoStealer/RAT (Remote Access Trojan) 機能を備えたマルウェアをインストールしていることが発見された。これらの悪意のパッケージは、ブラウザーに保存されている機密情報の窃取/キーロガーを用いた入力情報の窃取に加えて、シェルコマンドの実行などを試みる。この6つのパッケージを発見したのは、新しいキャンペーンについて PyPI を注視している Phylum Research Team である。

研究者たちの報告によると、これらの悪意のパッケージは、12月22日にパッケージ・リポジトリに初めて登場したようだ。そして、年末の最終日まで、この脅威アクターは他のパッケージのアップロードを続けていたという。

Phylum が検出した6つの悪意のパッケージと、そのダウンロード数は、以下の通りだ。

  • pyrologin – 165 ダウンロード
  • easytimestamp – 141 ダウンロード
  • discorder – 83 ダウンロード
  • discord-dev – 228 ダウンロード
  • style.py – 193 ダウンロード
  • pythonstyles – 130 ダウンロード

現時点において、すべてのパッケージが、PyPI から削除されている。しかし、すでにダウンロードしてしまったユーザーは、感染の残骸を、特に永続化する機能を、手動でアンインストールする必要がある。

情報スティーラー機能

これらのファイルのインストーラー (setup.py) には、base64 でエンコードされた文字列が含まれており、これをデコードすると PowerShell スクリプトが作成される。このスクリプトは、開発者たちに発見されないようにするために、 ‘-ErrorAction SilentlyContinue’ フラグが設定されているが、エラーが発生しても密かに継続する。

この PowerShell スクリプトは、リモート・リソースから ZIP ファイルをダウンロードし、ローカルの一時ディレクトリで解凍する。そして、リモート・コントロール/スクリーンショットのキャプチャを可能にする依存関係のリストと、追加の Python パッケージをインストールする。

この段階で、flask/flask_cloudflared という、2つの追加パッケージが密かにインストールされる。

ZIP 内のファイルの1つである server.pyw は、4つのスレッドを起動する。各スレッドの目的は、システム・リブート間の持続性の確立/プロキシされた Onion サイトへの ping 送信/キーストローク・ロガーの起動/侵害したマシンからのデータ窃取などである。

盗まれたデータに含まれるものとしては、暗号通貨ウォレット/ブラウザーの Cookie と Password/Telegram のデータ/Discord のトークンなどがある。これらのデータは zip 圧縮され、transfer[.]sh を通じて攻撃者に送信される。Onion サイトへの ping は、情報窃取ステップの完了を確認する。

Fourth thread undertaking the information stealing action
データ窃取を実行する4番目のスレッド (Phylum)

RAT (Remote Access Trojan) 機能も ZIP アーカイブに含まれるスクリプトも、cftunnel.py を実行する。それにより、被害者のマシンに Cloudflare Tunnel クライアントがインストールされる。

Cloudflare Tunnel は無料アカウントからも利用できるものであり、ユーザーのサーバからダイレクトに、Cloudflare インフラに双方向トンネルを作成するためのサービスだ。この接続により、ファイアウォールの設定/ポートの開放/ルーティングなどに煩わされることなく、Cloudflare を介して Web サーバを迅速に一般公開できる。

脅威アクターは、このトンネルを利用して、感染させたデバイスがファイアウォールで保護されていても、Flask スクリプトとして実行されている RAT に、リモート・アクセスできるようになる。

攻撃者が使用する Flask アプリは xrat とも呼ばれるものであり、被害者のユーザー名と IP アドレスの窃取に加えて、シェルコマンド実行/ファイルとディレクトリの流出/Python コードの実行/追加のペイロードのダウンロードと起動などを可能にする。

この RAT は、1フレーム/秒の速度で、ライブ・リモート・デスクトップ・フィードもサポートしており、被害者による入力やマウス操作に応じて直ちに起動する。

Live remote access
ライブ・リモート・フィード (Phylum)

PyPI にアップロードされた、これらの悪意のアプリ群は、プラットフォーム上の脅威が進化し、より革新的なものになっていることを証明している。残念なことに、それらの悪意のパッケージを削除し、PyPI にアップロードしたアカウントを停止しても、脅威アクターたちは新たな名前を使って活動を再開するだろう。したがって、停止させることはできない。

さらに、PyPI から悪意のアプリが削除されても、感染したデバイスには残ってしまうため、開発者は手動でアプリを削除する必要がある。これらの悪意のパッケージに感染した場合には、ウイルス対策スキャンを実行し、頻繁にアクセスする Web サイトのパスワードを、すべて変更することを強く推奨する。

文中では、Cloudflare Tunnel の役割について、Web サーバを迅速に一般公開するためと説明していますが、2022年4月の「ロシアの人々に情報を届ける:Cloudflare が説明するブロック回避の状況」に記されているように、通信の遮断への対抗策という側面もあるはずです。したがって、このような悪用のケースも生じてしまいます。ここもイタチごっこですが、そのイタチごっこの領域が、拡大しているように思えます。