あらゆる制限をかいくぐり広告を表示させるトロイの木馬Android.MagicAd
Hot news | ウイルスレビュー(モバイル) | 全てのニュース | ウイルスデータベース
Android.MagicAd.1は50を超えるゲームやアプリに潜んでXiaomiデバイスの公式アプリストアGetAppsから拡散されていました。これらのアプリは短期間(通常は長くて1カ月)でアプリストアから消え、その後また別の新しいアプリが代わりに登場するというサイクルを繰り返していました。こうすることで脅威アクターはトロイの木馬アプリが早期に検出されるのを防ぐと同時に、Android.MagicAd.1が活動を続けられるようにしていたものと見られます。すでにユーザーのデバイス上に侵入しているトロイの木馬アプリはストアから削除された後もそのままデバイスに残り、悪意のある動作を実行し続けるためです。現在ではAndroid.MagicAd.1を含んだアプリはいずれもGetAppsから削除されており、新しいものも追加されていません。
Doctor Webのマルウェアアナリストによる調査の結果、Android.MagicAd.1の最初のバージョンは2025年に登場し、 GetAppsのみでなくSamsung Galaxy Storeからも拡散されていたことが明らかになりました。
Android.MagicAd.1が隠されていたGetApps上のゲームやアプリの例:本記事掲載時点ではこれらは削除されている
Android.MagicAd.1の悪意のある機能の一部はdexファイルにあり、このファイルはトロイの木馬のファイルリソースディレクトリに格納されている暗号化されたネイティブライブラリ内に隠されています。トロイの木馬は動作中にこれらのライブラリを復号化し、そこからコンポーネントを抽出して実行します。
広告を表示させる段階に進む前に、Android.MagicAd.1は自身が安全な環境で実行されているかどうかを確かめるため一連のチェックを行います。すなわち、仮想マシン上で実行されている兆候を探る、オーガニックインストールであったかどうか、感染させたデバイスのIPアドレスがマルウェアのブラックリストに含まれていないかどうか確認するなどです。
チェックの結果不審なアクティビティが検出されなければ、Android.MagicAd.1はホーム画面のアプリ一覧から自身のアイコンを非表示にした後、通知チャンネルを作成します。この通知チャンネルを介して、トロイの木馬アプリのウィンドウが閉じられた後もバックグラウンドで動作し続けるために必要な、悪意のある永続化サービスを複数起動します。その後、タスクスケジューラを使用して、通知チャンネルの動作状況をチェックし必要に応じて再起動させるサービスを定期的に実行するタスクを作成します。また、比較的古いバージョンのAndroid OSを搭載したデバイスでは、トロイの木馬コンポーネントの1つがシステムによってその動作を中断されることのないよう、仮想画面を起動させます。
ウィンドウが閉じられた後にバックグラウンドで公告を表示させるために、Android.MagicAd.1は複数の手法を使用し、どれを用いるかは感染させたデバイスのメーカーに応じて選択されます。これらの手法では、「他のアプリの上に重ねて表示」を許可するシステム権限SYSTEM_ALERT_WINDOWを明示的に要求することはありません。
いずれの手法でも、広告バナーはすべてTranslucent Activity(半透明アクティビティ)として開かれるため、トロイの木馬は既存のウィンドウ上に重ねて広告を表示することが可能です。
Android.MagicAd.1によって表示される広告の例
手法の1つは、他のアプリ向けのインテント(Intent)を使用するというものです。これにより、アプリの自動起動を禁止するという最新のAndroid OSに搭載されている制限を回避することが可能になります。感染させたデバイスのモデルに応じて、Android.MagicAd.1はこの手法を用いて自ら広告を表示するか、またはターゲットアプリに「強制的に」広告バナーを表示させます。
この手法のバリエーションの1つでは、以下のアプリがターゲットとされています。
- Xiaomiデバイス上のMi Browser
- Xiaomiデバイス上のMIUI SystemUIグラフィカルシェル
- Amazon TVデバイス上のAmazon Fire TVホーム画面ランチャー
これらはすべてそれぞれのデバイス上のシステムアプリであるため、ユーザーによって直接起動されていなくてもインテントを処理することができます。これらのシステムアプリがアクティブでインテントを受信できる状態にある限り、Android.MagicAd.1はそれらを悪用して広告を表示できます。
ここで注意したいのが、Mi Browserがシステムアプリとしてではなく通常のアプリとしてXiaomiデバイスにインストールされている場合であっても、ブラウザウィンドウが閉じられるまで、トロイの木馬はMi Browserを利用して広告を表示させることができるという点です。
デバイス上でMi Browserを検出すると、Android.MagicAd.1は広告を表示するためのペンディングインテントを自身のdexコンポーネント(Dr.WebによりAndroid.MagicAd.1.originとして検出)に送信します。このdexがそのインテントから独自のインテントを作成してブラウザに送信し、ブラウザは元のインテントを抽出してそれに従って広告を表示させます。
MIUI SystemUIグラフィカルシェルとAmazon Fire TVホーム画面のケースは若干異なり、これらはトロイの木馬をバックグラウンドから呼び出すために利用されます。まず、Android.MagicAd.1は広告を表示するためのペンディングインテントを自身のdexコンポーネント(Android.MagicAd.origin)に送信し、このdexが独自のインテントをターゲットアプリに送信してアプリにそれを起動させます。ターゲットアプリがMiui SystemUIの場合、このアプリが応答として自身のインテントを送信してAndroid.MagicAd.originを起動させます。ターゲットアプリがAmazon Fire TVホーム画面の場合は、コンポーネントのプログラムパケット名を使用してこのアプリが直接Android.MagicAd.originを起動させます。Android.MagicAd.originがひとたびコントロールを掌握すると、トロイの木馬Android.MagicAd.1からペンディングインテントとして送信された広告を表示させます。
広告の表示に失敗した場合、Android.MagicAd.1はこの方法をさらに2回試し、それでも失敗した場合はペンディングインテントや悪意のあるdexコンポーネントを使用せずに直接広告を表示しようとします。
この手法のまた別のバリエーションではVivoデバイス固有のアプリが悪用されています。1つ目の手法と似ていますが、異なるのは、プロセス間通信を実現するためのシステムコンポーネントAndroid Binderを利用して広告を表示させるという点です。ターゲットとされているのは以下のシステムアプリです。
- iManager
- Phonebook
- Vivo Browser
- Baidu IME Customized
Android.MagicAd.1はデータコンテナであるParcelを介して通常のインテントを送信することで、Android Binder経由でこれらのアプリを起動します。続けて、これらのアプリがバックグラウンドからトロイの木馬コンポーネントAndroid.MagicAd.originを起動させ、このコンポーネントが広告を表示します。
Android.MagicAd.1はバックグラウンドで実行中に広告を表示させるための手法を他にも複数備えており、そのうちの1つがメディアプレーヤーの使用です。特定のデバイスを標的とした手法とは異なり、この手法はあらゆるメーカーのほとんどのAndroidデバイスモデルに対して用いることができます。まず、Android.MagicAd.1はその本体からオーディオファイルを復号化して作業ディレクトリに保存します。次に、システムメディアプレーヤーのインスタンスを起動し、音量を最小に設定して、プレーヤーをAndroidのグローバルメディアコントロールにリンクします。続けて、そのプレーヤー上でのボタンクリックを監視するブロードキャストレシーバーを有効にした後、特別なadbコマンドを使用することでユーザー操作を模倣してプレーヤーの録画ボタンをクリックし、その後直ちにプレーヤーのウィンドウを閉じます。ボタンがクリックされることによってシステムメディアレシーバーがトリガーされ、Android.MagicAd.1がコントロールを奪い広告を表示させることが可能になります。
Dr.Web Security Space for mobile devicesはAndroid.MagicAd.1の既知の亜種をすべて確実に検出し削除します。そのため、Dr.Webユーザーはこの脅威からしっかりと保護されています。
Indicators of compromise(セキュリティ侵害インジケーター)
Android.MagicAd.1の詳細 ※英語
Android.MagicAd.1.originの詳細 ※英語