NPMパッケージマルウェア、WindowsのChromeパスワードを盗むことが可能

news

新しいnpmマルウェアが、Windows上で正規のパスワード回復ツールを使用して、Google Chromeウェブブラウザから認証情報を盗むことを行っていると公表されました。

このマルウェアは、攻撃者のC2サーバーからの着信接続を監視し、画面やカメラへのアクセス、ディレクトリの一覧表示、ファイルの検索、ファイルのアップロード、シェルコマンドの実行などの高度な機能が装備されているようです。

特定されたパッケージは2018年からnpmのレジストリ内に配置されており、総ダウンロード数が2,000以上となっています

ChromePassユーティリティを使用してChromeのパスワードを「復旧」する

ReversingLabsは、Chromeウェブブラウザからパスワードを盗む2つの悪意のあるnpmパッケージに関する調査結果を公開しました。

これらのパッケージは以下の通り。

nodejs_net_server – 総ダウンロード数1,300件以上
temptesttempfile – 総ダウンロード数800件以上

これらのパッケージは、機械学習アルゴリズムを採用したReversingLabs社の静的解析エンジン「Titanium Platform」によって発見され、レポートの主眼はマルウェアのコア機能を含むnodejs_net_serverに焦点を当てています

このマルウェアは、Windowsマシンを標的とし、ユーザーの認証情報を盗み出すとともに、攻撃者が監視活動を行うための永久的なリモートバックドアを設定します。

特に「nodejs_net_server」は認証情報の窃取を行う際、Windows用のChromePassフリーウェアソフトを利用します。

ChromePass - Chrome Browser Password Recovery for Windows
Allows you to recover Chrome Web browser passwords from current system and external drive of Windows operating system

ChromePassは、ユーザーのChromeウェブブラウザからパスワードを抽出することを目的とした、Windowsシステム用のパスワード復旧ツールです。

このユーティリティは、a.exeなどの名前でnpmパッケージの中に配置されており、「nodejs_net_server」は、これまでに12のバージョンが公開されており、最新の1.1.2は、非圧縮時のサイズが約40MBとなっています。

最新の1.1.2は、圧縮されていない状態で約40MBのサイズですが、それ以降のバージョンでは、フラグを出さないようにしてTeamViewer.exeを起動しています。

npmの設定オプションを悪用して持続性を獲得

これまでに発見された悪質な npm パッケージは、タイポスクワッティングや依存関係の混乱を利用して開発者を感染させますが、このパッケージはそうではなく、どのようにして多くのダウンロードされたのかはまだわかっていません。

タイポスクワッティング(Typosquatting)とは?

「我々はこのパッケージを削除するよう NPM に連絡しました。」ReversingLabs社のチーフ・ソフトウェア・アーキテクト兼共同設立者であるTomislav Pericin氏はメールインタビューに答えています。

このパッケージは、開発者によってインストールされるとすぐによく知られているnpmの設定オプションである「bin」を悪用して、Windowsマシン上での永続性を獲得しようとします。

パッケージのマニフェストファイルpackage.jsonに記述されている “bin “オプションは、開発者のマシンにプレインストールされている人気パッケージ “jstest “を乗っ取ることを目的としています。

「jstest “は、クロスプラットフォームのJavaScriptテストフレームワークで、これまでに36,000回以上ダウンロードされています。つまり、NodeJS開発者が持っている可能性が高いということです。」

しかし、「jstest」がプレインストールされていることは、決して悪意のあるパッケージが実行されるための前提条件ではなく、”jstest “の存在は、マルウェアが感染したマシン上での持続性を獲得するためのヒントに過ぎません。

「この攻撃を実行するためには、JSTestをインストールする必要はなく、パッケージはコマンド「jstest」を乗っ取ります。」

「そのコマンドを実行することで、マルウェアは確実に永続的アクセスを獲得し、バックドア機能を実行することになります。」

マルウェアが読み込んだ “jstest “ファイルは、既存の “jstest “シンボリックリンクの内容を上書きしようとし、さらに別のJSファイル(”test.js”)をWindowsのサービスとして追加し、持続的に実行するようになります。

マルウェアは、lib/test.jsスクリプトをWindowsサービスとして追加することで、持続性を確保しようとします

この新しく追加されたWindowsサービスは、攻撃者が接続できるポート7353を開き、以下のような様々な監視活動を行います。

  • ホストとポートの逆設定
  • ディレクトリのコンテンツ一覧表示
  • ファイルのアップロードと検索
  • シェルコマンドの実行
  • 同梱されているffmpeg実行ファイルを使った画面やカメラへのアクセスと録画
  • 同梱されているChromePass回復ユーティリティを使用したChromeブラウザからのパスワードの盗み出し
  • Windowsサービススクリプト
  • マルウェアがポート7353でソケット接続を開く(BleepingComputer)

temptesttempfileについては、2つのファイルだけの最小限のパッケージで、nodejs_net_serverのリモートシェル機能を実装しているだけなので、その名の通りテストパッケージのようです。

最近では、依存関係をハイジャックする攻撃がオープンソースリポジトリに集中していることが報告されており、この問題はすぐには解決する気配はないようです。

ReversingLabs社は、

「パッケージリポジトリは、迅速なアプリケーション開発を可能にしますが、同時にリスクも伴います」

「パッケージの依存関係ツリー、すなわちソフトウェア部品表を理解することは、ソフトウェア・サプライチェーン攻撃に対する防御の重要な部分となっています。」

「インストールする前に、すべてのコンポーネントを注意深く確認する必要があります。そうしないと、悪意のあるコードが気づかれずにすり抜けてしまう可能性があります。」

「悪意のあるリポジトリパッケージが最終的なリリースイメージに埋め込まれるのはまだ見たことがありませんが、現状では時間の問題のように思えます」と述べています。

Comments

タイトルとURLをコピーしました