モバイル
ステルス型AndroidマルウェアMMRatによるオンラインバンキングを狙った金融犯罪
トレンドマイクロは、2023年6月下旬から東南アジアのモバイルユーザを標的としているAndroidを狙う新しいバンキング型トロイの木馬「MMRat」を発見しました。MMRatは偽アプリストア経由でダウンロードされ、感染した端末はオンラインバンキングを対象とした金融犯罪の標的となります。
トレンドマイクロのMARS(Mobile Application Reputation Service)チームは、2023年6月下旬から東南アジアのモバイルユーザを標的としている新しいAndroidバンキング型トロイの木馬「MMRat」(AndroidOS_MMRat.HRXとして検出)を発見しました。「com.mm.user」という特徴的なパッケージ名から命名された本マルウェアは、ユーザによる入力とスクリーンをキャプチャする機能やデバイスを遠隔操作する機能を有しています。これらの機能を活用することで、攻撃者は、被害者のデバイス上でオンラインバンキングを対象とした金融犯罪を実行することが可能となります。
さらに、MMRatは、プロトコルバッファ(別称:Protobuf)をベースとして特別にカスタマイズされたC&C(コマンド&コントロール)プロトコルを使用しています。プロトコルバッファとは、構造化データのシリアル化を目的としたオープンソースのデータフォーマットです。Androidバンキング型トロイの木馬としては極めて稀なこの構造は、大量のデータを送信する際にパフォーマンスを発揮します。
拡散方法
解析の結果、MMRat検体のほとんどは、公式アプリストアを装った一連の類似したフィッシングサイトからダウンロードされていることが判明しました。これらのウェブサイトは、標的とする被害者に応じて異なる言語が設定されています。なお、フィッシングリンクから被害者のデバイスにアクセスする手段については、依然として不明です。
本マルウェアは、水面下で活動可能な技術力を有しているため、2023年8月時点においてVirusTotalによる検出は確認されていません。なお、マルウェア「GigabudRat」や「Vultur」も、キーロギングやスクリーンのキャプチャなど本マルウェアと類似した手口を用いて検出を回避しています。
MMRatの攻撃順序
- 被害者によるMMRatのダウンロードとインストール
- 被害者がMMRatに対し、必要なパーミッションを付与
- MMRatは、リモートサーバとの通信を開始し、大量のデータ(デバイス状態、個人データ、キーロギングデータ等)を送信
- 標的となるデバイスが使用されていない場合、攻撃者は遠隔操作でデバイスを起動し、スクリーンロックを解除することで金融犯罪を実行。また、デバイスのスクリーンをサーバサイドで可視化するために、画面キャプチャを行うことも可能
- 最終ステップとして、MMRatが自らをアンインストールし、システムからマルウェアの痕跡をすべて取り除く
MMRatの解析
MMRatは、ユーザによる入力とスクリーンコンテンツをキャプチャすることやデバイスを遠隔操作することが可能です。また、MMRatの機能は、AndroidのアクセシビリティサービスおよびMediaProjection APIに大きく依存しています。
なりすまし攻撃とパーシステンス
MMRatは、検出を回避するために、公式の政府機関やデートアプリを装い、起動すると被害者をフィッシングサイトに誘導します。その後、システムのイベント(On/Offや再起動等)を検知、受信するレシーバを組み込みます。これらのイベントを受信すると、マルウェアは、1x1サイズのピクセルアクティビティを実行することで、その永続性を確保します。
リモートサーバとのネットワーク通信
MMRatは、アクセシビリティサービスを有効にすることで、攻撃者が制御するサーバとの接続を確立します。また、MMRatは、一つのサーバで機能に応じて複数のポートを使用します。
C&Cプロトコルの特徴として、Netty(Network Application Framework)およびProtobufをベースにカスタマイズされている点や巧妙に設計されたメッセージ構造を持つ点を挙げることができます。
C&C通信において、攻撃者は、すべてのメッセージタイプを表すために包括的構造を用いています。そして、異なるデータタイプを表すためにキーワード「oneof」を使用しています。
図4では、C&C通信で使用される主なProtobufスキーマを精密に再現しています。
列挙型構造の「PackType」は、C&Cコマンドを表すために使用されています。そして、「pack」フィールドには、各C&Cコマンドに付随する詳細なデータが含まれます。
表2は、マルウェアが使用する「定義されたC&Cコマンド」と、その解説を示しています。双方向通信が実施されているため、この表ではC&Cコマンドをサーバコマンドとクライアントコマンドに別けて表示しています。なお、サーバコマンドはクライアントに送信され、クライアントコマンドはサーバに送信されます。
デバイス状態や個人データの収集
MMRatは、ネットワークデータ、スクリーンデータ、バッテリーデータ、インストール済みのアプリ、連絡先リストなど、デバイス状態や個人データを幅広く収集します。
- Network dataは、信号強度やネットワークタイプ等の情報を含む
- Screen dataは、スクリーンのロック状態、使用中のアプリ、スクリーンに表示されているアクティビティ等の情報を含む
- Battery dataは、デバイスのバッテリー状態に関する情報を含む
- Contactsは、ユーザの連絡先リストを含む
- Installed appsは、デバイスにインストールされたアプリに関する情報を含む
上記データを収集するために、MMRatは、1秒ごとに実行されるタイマータスクをスケジュールします。また、同時に60秒ごとにリセットされるカウンタを使用することで、他のタスクが実行されるタイミングを決定します。
MMRatは、特に被害者の連絡先やインストールされているアプリのリストを情報収集の対象としています。攻撃者による情報収集の目的は、被害者が特定のプロファイルに適合しているか否かを確認するためと考えられます。具体的には、被害者の地理的条件への適合性や特定アプリのインストール状況を確認することを指します。また、収集された情報は、将来の不正活動の際に利用される恐れがあります。
パーミッションの自動承認
アクセシビリティのパーミッションが一旦付与されると、MMRatは、自身に別のパーミッションを付与することや設定を変更することが可能となります。一例として、READ_CONTACTSパーミッションを自動で自身に付与することにより、連絡先リストを含むデータを収集することができるようになります。
図7のコードスニペットは、MMRatがパーミッションを自動で取得する方法を示しています。これは、システムダイアログを起動し、パーミッションリクエストを自動で承認することによって達成されます。自動承認機能は、スクリーン上で「ok」または関連するキーワードを検索し、アクセシビリティサービスを悪用することでクリックをシミュレートします。その結果、ユーザによる介入を回避することが可能となったMMRatは、不正活動を実行するために必要なパーミッションを自身に付与することができます。
インプットのキャプチャ
MMRatは、アクセシビリティサービスを悪用し、キーロギングにより、ユーザの入力や操作をキャプチャします。そして、これらのデータは、認証情報の取得や操作の記録を目的として、後にデバイス上で再生されます。
被害者が銀行アプリを使用している場合のみキーを記録するなど、特定の場面に焦点を当てている「他のキーロギングマルウェア」とは異なり、MMRatはユーザのすべての操作を記録します。そして、C&Cチャネルを介して収集した情報をサーバにアップロードします。攻撃者は、次の攻撃段階への移行を判断するために、被害者から大量のアクションログを収集していると推測されます。
各ログはLogInfo構造を持ち、Protobufによりシリアル化されます。
message LogInfo {
string packageName = 1;
string className = 2;
string content = 3;
}
本マルウェアは、従来型のキーロギング手法に加え、特にロックスクリーンのパターンに関心を示しています。ユーザがデバイスのロックを解除していることを検知すると、マルウェアはパターン値を収集し、C&Cチャネルを介してサーバにアップロードします。その結果、攻撃者は、デバイスがロックされている状態でもアクセスできるようになります。
スクリーンコンテンツのキャプチャ
MMRatは、デバイスのスクリーンコンテンツをリアルタイムでキャプチャし、リモートサーバにストリーミングすることが可能です。また、本マルウェアは、MediaProjection APIを使用して被害者のスクリーンを記録します。
さらに、MMRatがスクリーンコンテンツを取得し、FLAG_SECUREによるユーザの保護をバイパスするために、異なるアプローチ「User Terminal State」を用いていることも確認されました。
スクリーンコンテンツのキャプチャ機能は、攻撃者が金融犯罪の実行中にデバイスのステータスを確認できるように、リモートコントロール機能と組み合わせて使用されていることがトレンドマイクロの観測により明らかになりました。また、本マルウェアは、認証情報をキャプチャするのではなく、常にコマンドをチェックし、30秒以内にコマンドが受信されない場合には、スクリーンコンテンツのストリーミングを停止していることが判明しました。
Android MediaProjection API
MediaProjection APIを使用し、リモートサーバに動画データをストリーミングするために、MMRatはオープンソースのフレームワークrtmp-rtsp-stream-client-javaを悪用します。これにより、記録したスクリーンをRTSP(Real Time Streaming Protocol)を介して、リアルタイムの動画データとしてリモートサーバにストリーミング配信することが可能となります。MEDIA_STREAMコマンドを受信すると、MMRatは、二種類(スクリーンとカメラ)のデータを設定情報に従い記録します。
MMRatは、スクリーンデータを記録する際、DisplayActivityという名称のアクティビティを起動します。このアクティビティは、createScreenCaptureIntentを呼び出すことでレコーディングパーミッションを要求します。その後、パーミッションを付与するために、システムダイアログの小画面を起動します。そして、システムダイアログは、自動クリックにより承認されます。
レコーディングリクエストが承認されると、MMRatは、スクリーンの記録を開始します。そして、オープンソースのフレームワークリポジトリが提供するAPI startStreamを呼び出すことで、データをC&Cサーバにストリーミング配信します。
User Terminal State
スクリーンコンテンツのキャプチャ時に用いられる「User Terminal State」アプローチは、MediaProjection APIを使用する場合と大きく異なります。ここでは、スクリーンを動画として記録しない代わりに、アクセシビリティサービスを悪用し、1秒ごとにウィンドウ内のすべての子ノードを再帰的にダンプします。そして、ダンプされたデータをC&Cチャネルを介してアップロードします。結果として、Graphical User Interfaceのないテキスト情報のみが表示されるため、プログラム「Terminal」に類似しています。
このアプローチは、不完全であるため、データを再構築するためにサーバ側で攻撃者が追加作業を行う必要があります。その一方で、遠隔操作によるインスペクションや制御のために必要な情報(クリックや入力に関するノード情報等)を効果的に収集することができる側面も有しています。また、当アプローチは MediaProjection API に依存しないため、FLAG_SECURE による保護をバイパスすることが可能です。FLAG_SECUREとは、スクリーンショットの撮影やスクリーンの記録を防ぐために、ウィンドウパラメータに追加することができるフラグです
さらに、ProtobufとNettyをベースにカスタマイズされたプロトコルの使用により、パフォーマンスが向上しています。これは、特に大量のスクリーンデータをタイムリーに転送する際に有効であり、動画ストリーミングに類似した効果をもたらします。
リモートコントロール
MMRatは、アクセシビリティサービスを悪用することで、被害者のデバイスを遠隔操作し、ジェスチャ、スクリーンロックの解除、テキスト入力などを実行します。これらは、窃取した認証情報と併せて金融犯罪を実行するために、攻撃者によって利用される可能性があります。
MMRatは、リモートアクセスルーチンを実行する前段階において、すでにユーザによる検出を回避するための事前ステップを実施しています(「MMRatの攻撃順序」のアウトライン参照)。
- Wakeup:アクセシビリティサービスを悪用することで、スクリーン上でダブルクリックをシミュレートし、デバイスのスリープを解除
- Unlock screen:過去に窃取した解除パターンを使用することで、スクリーンのロックを解除
さらに、MMRatは、被害者がスマートフォンを使用していない間でも遠隔操作を実行することができます。
痕跡の隠蔽
MMRatは、C&Cコマンド「UNINSTALL_APP」を受信すると自身を削除します。通常、この動作は、金融犯罪の実行後に行われるため、マルウェアの活動を追跡することが難しくなります。
まとめ
日々勢いを増しているAndroidを狙うバンキング型トロイの木馬「MMRat」は、特に、東南アジアのモバイルユーザに対する大きな脅威となっています。キーロギング、スクリーンの記録、リモートコントロールアクセスを含んだ、このマルウェアの機能は、金融犯罪を効果的かつ効率的に実行することを容易にします。
MMRatからデバイスを保護するために、以下のベストプラクティスの実施をお勧めします。
- アプリは、公式ソースからダウンロードしてください。MMRatは、多くの場合、公式のアプリストアを装ったフィッシングサイトからダウンロードされています。Google Play storeやApple App storeなど、信頼できるプラットフォームを常に使用してください。
- デバイスのソフトウェアを定期的にアップデートしてください。定期的なアップデートは、新しい脅威(MMRatを含む)からデバイスを保護するためのセキュリティ強化に繋がります。
- アクセシビリティサービスへのアクセスを許可する際には十分注意してください。MMRatは、Androidのアクセシビリティサービスを悪用して不正活動を行います。アプリが要求するアクセス許可は慎重に判断してください。
- 信頼できるセキュリティソリューションをデバイスにインストールしてください。セキュリティソリューションは、マルウェアが被害を及ぼす前に脅威を検出し、除去することが可能です。
- 個人や銀行に関連する情報の取り扱いには十分注意してください。MMRatの目的は、金融犯罪を実行することです。オンライン上で共有する情報や個人アプリに対して提供するデータの重要性を十分に認識することが大切です。
トレンドマイクロは、GoogleのApp Defense Alliance (ADA)に参加しています。ADAでは、当社のモバイルアプリケーション評価技術「Trend Micro Mobile App Reputation」を活用し、Google Play 公開前のアプリの分析・評価を実施しています。トレンドマイクロは、Googleとのパートナーシップのもと、脅威アクターからユーザを保護し、デジタル情報の交換をよりセキュアにしていきます。
参考記事
Stealthy Android Malware MMRat Carries Out Bank Fraud Via Fake App Stores
By: Trend Micro Research
翻訳:新井 智士(Core Technology Marketing, Trend Micro™ Research)