Blank Grabber

ほぼこもセキュリティニュース By Terilogy Worx

Blank Grabberは、リポジトリを悪用して広がるインフォスティーラー型マルウェアです。
その手口を見てみましょう。

  • 配布場所にはPyPIを選択
    PyPIは、Python向けのパッケージ共有プラットフォームです。
    いろいろなひとが有用なパッケージを公開していますので、やりたいと思う たいていのことは、ここで入手できるものを使うことで簡単に実現できます。
  • パッケージ名の様子
    パッケージ名に既存のパッケージに似たものを使用するという作戦を選択しました。
    選ばれてしまった正規のパッケージの名前は「sellpass」でした。
    そして、似たものとして用意された悪意あるパッケージの名前は「sellpass-sdk」でした。
    いかにも、です。
  • 最終更新日の様子
    正規のパッケージの最終更新日は、2022/12/8でした。
    悪意あるパッケージの最終更新日は、2023/12/27でした。
    パッケージを入手したい人の心理として、より新しいものがあるなら、それを入手したいと思うのが自然です。
    バグが修正されているかもしれませんし、仕様変更などで古いものは動作しないかもしれないと感じるからです。
  • 作成者名の様子
    作成者名も似ています。
    正規のパッケージの作成者名は、「xyss」です。
    悪意あるパッケージの作成者名は、「xyss2」です。
    落ち着いて考えると、パッケージを公開する人が似た別の名前を用意して利用するメリットはよくわからないのですが、ダウンロードしようとする人が似た名前で勘違いすることを狙ってのことなのでしょうか。
  • 公開済みバージョン数の様子
    今回の例としてみているパッケージでは、2つのバージョンのパッケージファイルが公開されていました。
    1.0という文字列を含むファイルと、1.1という文字列を含むファイルとなっていました。
    実際のファイルの中身は同じでどこも変わりはないのですが、公開されているパッケージファイルとしてのファイル名が変更されたものでした。
    1つだけ公開されているものよりも、複数のバージョンが公開されているもののほうが、メンテされているような感じがすることから信頼されやすい、という狙いなのでしょうか。

この悪意あるパッケージは、すでに公開されていません。
公開されていたのは、ほんの13日間でした。
その短い期間に、約500件のダウンロードを獲得しました。

PyPIのパッケージをダウンロードした人は、インストールを行うことでしょう。
PyPIパッケージがインストールされる際には、そのパッケージに含まれるsetup.pyが実行されます。
この悪意あるパッケージのsetup.pyには、悪意あるコードが含まれていました。

依存関係のあるファイルをインストールする、というセクションでファイルを入手します。
入手するファイルの名前は、python.exeとなっています。
本当にそれが存在しなくて必要なら、どうしてこのsetup.pyは動作できているのでしょう。
でも、ファイルを入手して実行している人は、setup.pyの内容を細かくは確認しないことが多いということなのでしょうか。
こうして、被害者環境はBlank Grabberに感染した状態となるのでした。

Blank Grabberに感染すると、資格情報やセッションcookieの取得、暗号資産ウォレットの利用、デバイスの画面の取得、ウェブカメラの不正利用、ネットワーク接続の悪用、被害環境での永続化などの行為が行われます。

Blank Grabberの選択した作戦の様子を考えると、名前や更新の様子などから正規のパッケージであるかを判断するということは簡単ではないと感じます。
巧妙化がどんどん進んでいきます。
こういった事態にどう対処していくのが良いのか難しいところですが、少なくとも、このような状況にあるということだけでも認識しておこうと思います。

参考記事(外部リンク):Python’s Poisoned Package: Another ‘Blank Grabber’ Malware
in PyPI

www.imperva.com/blog/blank-grabber-malware-in-pypi-package/