新しいAndroidマルウェアキャンペーンが「Banking KYC」検証アプリに偽装し、WhatsAppメッセージを通じてインドの銀行ユーザーをターゲットにしながら拡散しています。
このマルウェアはWhatsAppで共有されるAPKとして配信され、緊急の銀行KYCまたはアカウント検証更新として装っており、過去に報告されたインドの銀行詐欺キャンペーンに類似しています。
被害者は、添付ファイルの「Banking KYC」アプリをインストールして検証を完了しないと銀行口座がブロックされる可能性があると言われており、偽のKYCアラートがメッセージングプラットフォーム経由で送信される実際の詐欺パターンを反映しています。
インストール後、アプリは「更新が必要です」というプロンプトを含む全画面表示で開き、「更新をインストール」ボタンが表示され、新しいマルウェアインストールではなく、義務的なアプリ内更新の幻想を作り出しています。
レポートによると、この作戦は偽のKYC緊急性、マルチステージドロッパー、ネイティブコード難読化を悪用して、SMSを傍受したり、通話を制御したり、USSDコードを実行したり、極めて機密性の高い財務データを収集できるセカンダリペイロードを静かに展開しています。
「更新をインストール」をクリックすると、一連のプロンプトがトリガーされます。まずアプリがVPN接続を作成するようにリクエストし、次に不明なアプリをインストールする権限を要求して、隠されたセカンダリAPKを静かに展開できるようにします。
セカンダリペイロードはランチャーに表示されないため、ユーザーには新しいアイコンが見えませんが、マルウェアはバックグラウンドで拡張機能を持ちながら実行され続けています。
マルチステージドロッパーとネイティブ難読化
com.***appad.andrとしてパッケージ化されたプライマリアプリは、メインの情報盗聴プログラムではなく、ローダーとして機能しています。
PACKAGE_ADDEDやカスタムインストールステータスアクション等のインストールイベントをリッスンする、エクスポートされていないレシーバー、InstallReceiver。

暗号化されたAPKアセットを埋め込み、独自のパッケージ名から32バイトのXORキーを導出し、ランタイムでペイロードを復号化してから、プライベートストレージ内の一時的で難読化されたファイル名に書き込みます。
セッションベースのPackageInstallerフローはその後、復号化されたペイロード(com.am5maw3.android)を静かにインストールし、制御されたセッションと保留中のインテントを使用してユーザーインタラクションを最小化し、新しいAndroidバージョンでの標準的なインストール摩擦をバイパスしています。
静的解析により、重要な設定値はJava/Kotlinレイヤーから移され、ネイティブライブラリlibnative-lib.soに格納されていることが示されています。
ネイティブコードはC2 URL、暗号化キー、エージェント識別子をランタイムで返す関数を公開し、プライマリバックエンドエンドポイントをhttps[:]//jsonapi[.]bizとしてアセンブルし、ハードコードされたエージェントID XGEKKWB3を文字ごとに組み立てています。
このデザインは静的解析を大幅に複雑にしており、文字列は逆コンパイルされたJavaでは見えず、主要ロジックはネイティブ.soモジュールへのJNI呼び出しの背後に隠されています。
マルウェアはローカルアドレス(10.0.0.2)とGoogle DNS(8.8.8.8)を使用してフルトンネルVPNを構成するカスタムSecureVpnServiceを登録し、すべてのデバイストラフィックをアプリケーション制御インターフェース経由で強制的に通します。

継続的なパケット処理ループはこのトンネルをライブ監視および操作レイヤーに変え、マルウェアが発信接続を検査、フィルタリング、または中断できるようにします。セキュリティサービスとクラウドベースの保護へのテレメトリを含みます。
このネットワークハイジャックはGoogle Play Protectを低下させ、他の評判サービスも低下させることができ、マルウェアとそのC2トラフィックが検出を回避するのに役立ちます。
受信したFCMメッセージはAgentCore.ProcessCommandにルーティングされ、SET_SMS_FORWARD、GET_SMS_LOGS、MAKE_CALL、RUN_USSD、SEND_SMS、SYNC_STATUSなどの操作をサポートしており、感染したデバイスを実質的にリモートで制御される詐欺プラットフォームに変えています。

コマンド&コントロールのため、セカンダリペイロードはFirebaseクラウドメッセージングを統合し、AgentServiceをcom.google.firebase.MESSAGING_EVENTのハンドラーとして登録しています。
マルウェアはまたWAKE_LOCKと電池最適化の除外をリクエストして、長期的なバックグラウンド実行を維持し、ドロッパーがクローズまたは削除されてもC2との通信を続けることができます。
SMS、電話の悪用、およびデータ流出
権限が付与されると、セカンダリペイロードは電話およびSMS APIを悪用して、通信を深く制御しています。
ファイル名はUnicodeベースの難読化(ṩỹṧ꙱ṫḗṃ.tmp)を使用しており、静的検査または手動分析中の可視性を低減することを目的としていると考えられます。
高優先度のSMSレシーバーは受信メッセージを傍受し、PDUを再構築し、送信者と本文を抽出し、コンテンツをリアルタイムでリモート番号とバックエンド経由で転送して暗号化ログで転送し、OTP傍受とアカウント乗っ取りを可能にします。
マルウェアはまたcontent://sms/inboxを介してSMSインボックスをバルク ダンプし、TelecomManager.placeCall()を通じて発信通話を開始し、USSDコードを送信して呼び出し転送をオン/オフにしたり、ネットワークステータスをクエリできます。
すべてのランタイムイベントと盗まれたデータはJSON構造にラップされ、device_id、log_type、content、およびタイムスタンプを含んでから、ローカルで暗号化されてHTTP POSTでjsonapi[.]bizに送信されます。
ベースURLと暗号化キーはネイティブ関数によってのみ公開され、キー自体は単純な反復16進数パターンに従っており、強力な暗号化ではなく軽量な難読化を示しています。
このバックエンドはデバイス登録、ログ取り込み、詐欺タスク用に設計されたより広範なモジュール式インフラストラクチャの一部であると思われます。
ユーザー側では、マルウェアは静的にバンドルされたNext.jsフロントエンドをCapacitor WebView内にロードして、高度にポーランド化されたフィッシングフローを提示します。インターフェースは銀行KYCジャーニーを模倣し、体系的に次のものを収集します:
- 「アカウント検証」の下での携帯電話番号とATM PIN。
- 身分確認としてのAadhaar番号と生年月日。
- 「カード検証」の下での完全なカード詳細(番号、有効期限、CVV、PIN)。

最終的な「検証が進行中です」画面は被害者を安心させ、24時間待つようにユーザーに指示し、攻撃者が詐欺的な取引を実行する時間を買ってします。
埋め込まれたフロントエンドの文字列とUIアーティファクトには「eChallan」参照が含まれており、このキャンペーンは初期の「RTO e-Challan」Androidフラウド操作と密接に関連しており、2段階ドロッパー、VPNベースのトラフィックハイジャック、およびjsonserv[.]xyzやjsonserv[.]bizなどのJSONテーマのC2ドメインを使用していました。
一貫したインフラストラクチャパターン(jsonserv → jsonserv[.]biz → jsonapi[.]biz)、同様のWhatsApp配信方法、および実質的に同一の詐欺ワークフローは、このBanking KYCマルウェアがインドユーザーを大規模にターゲットにしている同じ経済的動機のあるAndroid脅威アクターの進化であることを強く示唆しています。
IOCs
| インジケーター | タイプ | 備考 |
| 34479b18597f1a0deb5d55b8450bc21af1d1f638c4ceca1ee19e6f5ac89d6be2 | Sha256 | ドロッパー |
| 1d261b45e73b5b712becb12ed182ec89d3dd0d73143a2dd8ff5512da489a50eb | Sha256 | ドロップAPK |
| Jsonapi[.]biz | ドメイン | C2 |
| jsonserv[.]biz | ドメイン | C2 |
| jsonserv[.]xyz | ドメイン | C2 |