lotusbailnpmパッケージは、正規の@whiskeysockets/baileysパッケージをフォークしたWhatsApp Web APIライブラリとして自らを装っています。56,000件を超えるダウンロード数と、広告通りに実際に動作する機能的なコードを備えており、開発者が二の足を踏まずにインストールするたぐいの依存関係です。このパッケージはnpmで6ヶ月間利用可能であり、執筆時点でも稼働しています。
その動作機能の背後には、WhatsAppの認証情報を盗み、すべてのメッセージを傍受し、連絡先を収集し、永続的なバックドアをインストールし、すべてを暗号化してから脅威アクターのサーバーに送信する高度なマルウェアが隠されています。

キャプチャされるもの:
- 認証トークンとセッションキー
- 完全なメッセージ履歴(過去および現在)
- 電話番号付きの完全な連絡先リスト
- メディアファイルと文書
- WhatsAppアカウントへの永続的なバックドアアクセス
動作方法
表紙は本物
ほとんどの悪意のあるnpmパッケージは急速に自らを明かします。タイポスクワット、動作しない、または明らかに疑わしいものです。このパッケージは実際にはWhatsApp APIとして機能します。正規のBaileyslibaryをベースにし、WhatsAppメッセージを送受信するための実際に動作する機能を提供しています。
明らかなマルウェアはスポットするのは簡単です。機能的なマルウェア?それはインストール、テスト、承認、本番環境にデプロイされます。
ここでのソーシャルエンジニアリングは見事です。開発者は動作するコードの中のマルウェアを探しません。彼らは機能しないコードを探しています。
盗難と流出
このパッケージは、WhatsAppと通信する正規のWebSocketクライアントをラップします。アプリケーションを流れるすべてのメッセージは、最初にマルウェアのソケットラッパーを通過します。
認証時、ラッパーは認証情報をキャプチャします。メッセージが到着すると、それを傍受します。メッセージを送信すると、それを記録します。正規の機能は通常通り動作し続けます。マルウェアはすべてに2番目の受信者を追加するだけです。

WhatsAppのすべての認証トークン、送受信されたすべてのメッセージ、完全な連絡先リスト、メディアファイル – APIを通過するすべてが複製され、流出の準備が整えられます。
しかし、盗まれたデータは平文では送信されません。マルウェアには、送信前にデータを暗号化するための完全なカスタムRSA実装が含まれています。

なぜカスタムRSAを実装するのか?正規のWhatsAppライブラリはカスタム暗号化が必要ないからです。WhatsAppはすでにエンドツーエンド暗号化を処理しています。カスタム暗号は一つの理由のために存在します。流出前に盗まれたデータを暗号化するため、ネットワークモニタリングでキャッチされないようにするためです。
流出サーバーのURLは、暗号化された設定文字列に埋め込まれ、圧縮されたペイロードの内部に隠されています。マルウェアは4層の難読化を使用しています。Unicode変数操作、LZString圧縮、Base-91エンコーディング、AES暗号化です。サーバーの位置は目に見えるところにはハードコードされていません。
バックドア
ここでは特に厄介なことになります。WhatsAppはペアリングコードを使用して、新しいデバイスをアカウントにリンクします。コードをリクエストすると、WhatsAppがランダムな8文字の文字列を生成し、新しいデバイスに入力すると、デバイスがリンクします。
マルウェアはハードコードされたペアリングコードでこのプロセスをハイジャックします。コードはAESで暗号化され、パッケージに隠されています。

これは、脅威アクターがWhatsAppアカウントへのキーを持っていることを意味します。このライブラリを使用して認証する場合、アプリケーションをリンクするだけではなく、脅威アクターのデバイスもリンクしています。彼らはあなたのWhatsAppアカウントへの完全で永続的なアクセスを持っており、あなたは彼らがそこにいることを知りません。
脅威アクターはあなたのすべてのメッセージを読み、あなたとしてメッセージを送信し、メディアをダウンロードし、連絡先にアクセスできます。フルアカウント制御です。重要な部分はここです。npmパッケージをアンインストールするとマルウェアコードは削除されますが、脅威アクターのデバイスはWhatsAppアカウントにリンクされたままです。ペアリングはWhatsAppの設定からすべてのデバイスを手動でアンリンクするまで、WhatsAppのシステムに残ります。パッケージが削除された後でも、彼らは依然としてアクセス権を持っています。
彼らは本当にあなたが見ることを望みませんでした
このパッケージには、デバッグツールが検出された場合、実行を凍結する27個の無限ループトラップが含まれています。

これらのトラップはデバッガーをチェックし、プロセス引数を検査し、サンドボックス環境を検出し、一般的に動的分析を困難にします。また、マルウェアのセクションをマークするコード内に有用なコメントを残しました。サプライチェーン攻撃に適用される専門的な開発慣行です。おそらく誰かがこれのためのJiraボードを持っています。
最終的な考え
サプライチェーン攻撃は遅くなっていません。むしろ、より悪くなっています。マーケットプレイスのレビューに耐える高度なアンチデバッギング、カスタム暗号化、多層難読化を備えた動作するコードが見られます。lotusbailのケースは外れ値ではありません。それはプレビューです。
従来のセキュリティはこれをキャッチしません。静的分析は動作するWhatsAppコードを見て承認します。評判システムは56,000ダウンロードを見て信頼します。マルウェアは「このコードは動作する」と「このコードは主張していることだけをする」の間のギャップに隠れています。
高度なサプライチェーン攻撃をキャッチするには、行動分析が必要です。パッケージが実際にランタイム時に何をしているのか観察することです。WhatsAppライブラリがカスタムRSA暗号化を実装し、27個のアンチデバッギングトラップを含む場合、それらはシグナルです。しかし、それらを監視するシステムが必要です。
このレポートはKoi Securityの研究チームによって作成されました。従来のチェックに合格しているが、ランタイム時に悪意のある動作を示す脅威を検出するようにKoiを構築しました。
デモを予約する行動分析が静的レビューで見逃されたものをどのようにキャッチするかを見るために。
そこで安全にいてください。
翻訳元: https://www.koi.ai/blog/npm-package-with-56k-downloads-malware-stealing-whatsapp-messages