Android アドウェアの新しい傾向: Android のプラグインフレームワークの悪用

This post is also available in: English (英語)

概要

正当なモバイルアプリが広告用 SDK やほかのアプリのプロモーションを組み込むのはよくあることです。広告を表示し、ほかのアプリのプロモーションすることで、正当なアプリの開発者は収入を得ているからです。しかしながら、最近モバイルアプリコミュニティにおいて警戒すべき傾向が観測されるようになってきました。すなわち、Google Play ストアのアドウェア プログラムが Android 上でサードパーティの DroidPlugin フレームワーク を悪用し、より攻撃的になってきているという傾向です。

本記事では脅威インテリジェンスチーム Unit 42 がどのようにして Android 上でサードパーティのDroidPlugin フレームワーク を悪用する攻撃的アドウェアを発見するにいたったかについての概略を説明します。Unit 42 のリサーチャーは Google と協業して発見内容を共有しており、Google のサービス規約に違反するすべてのアプリは Google Play ストアから削除済みです。

Android プラグイン技術の長所と短所

もともとプラグイン技術はサードパーティによって Android を拡張し、機能を追加するために導入されたものでした。たとえば Parallel Space により、ユーザは Twitter アプリを 2 つ以上同じ端末上で稼働させることができます。プラグイン技術は緊急パッチ適用の時間短縮にも貢献しています。

しかしながらプラグイン技術によって提供される拡張と機能は、攻撃者が悪用することもできます。マルウェア作成者は正当なプラグイン技術を、たとえばデバイス上のアンチマルウェア技術、とくに静的スキャナを回避する目的で悪用してきました。この件についてはすでに PluginPhantomについての調査で論じてきました。またこの技術がフィッシング攻撃に悪用しうることを論じてきたリサーチャーもいます。

これまでの調査では、最も人気のあるオープン ソース プラグイン フレームワーク「DroidPlugin」と「VirtualApp」をマルウェアが悪用してきたことが判明しています。両フレームワークとも、任意の Android アプリを起動できますし、その際、理論上はそうしたアプリを端末にインストールする必要もありません。技術的には、こうした Android プラグイン技術はアプリケーションレベルでの仮想環境です。

Unit 42 リサーチャーは最近、この Android プラグイン機能がいかにアドウェアを通じたアプリのプロモーションの画期的方法となってきたかを発見しました。プラグインを有効にしたアプリは、インストールすることなく別のアプリを自動的に起動できるのです。プロモーションされたアプリをユーザーからの入力なしで起動できるためアドウェアは広告ネットワークから収入を得やすくなります。

こうしたアプリのプロモーションはセキュリティ リスクとなりえます。現在のプラグインフレームワークでは、比較的弱いセキュリティ機構が利用されているからです。こうしたプラグイン フレームワークには、べつのプラグイン インスタンスとの間でパーミッションを分離し、データを隔離する機能がありません。このため、プロモーション対象のアプリがプラグイン フレームワーク経由で実行されると、ホスト側のアプリと同じパーミッション (典型的な例ではすべての Android のパーミッション) で動作することになり、ホスト アプリのデータやほかのプラグイン アプリのデータにもアクセスできるようになります。このことは Android Application Sandbox の重要な側面への違反となります。

「Android Application Sandbox とはアプリのデータおよびコード実行をほかのアプリから隔離するものである」

正当なアプリが常に自身のアプリケーションサンドボックス内で実行されることを前提としている場合、そうしたアプリにはリスクが生じます。というのは、そのアプリには、自身がプラグイン環境内で起動されるかどうかがわからないためです。

たとえば Google Play ストアでは 32 個のアプリが DroidPlugin フレームワークを使用しており、21 個のアプリは VirtualApp フレームワークを使用していることを確認しました。ほとんどのアプリが PUP (潜在的な迷惑プログラム) かアドウェアで Google Play ストアから削除されました (後述する付録に一覧を掲載します)。

以下の例では、こうした新しいアプリのプロモーション形態を使って 2 つのアドウェア ファミリがプラグイン技術を悪用している方法を例示します。

例 1: 自動化された攻撃的なアプリ プロモーション

2016 年 9 月、「Clean Doctor」 (パッケージ名「com.nianclub.cleandoctor」) というアプリの開発者がバージョン 1.2.0 をより攻撃的なものにしました。このアドウェアは VirtualApp フレームワークを悪用します。Google Play ストアにおける進化を時系列に並べたものが図 1 です。

図 1 「Clean Doctor」の進化時系列
図 1 「Clean Doctor」の進化時系列

Clean Doctor 対ほかのアドウェア:

アプリのプロモーションのため、アドウェアはよくアプリをダウンロードし、頻繁にアプリのインストール画面をユーザーに表示します。ユーザーがアプリをインストールするとアドウェア作成者はそうした新しいアプリの「プロモーション」対価を受け取ることになります。同様の目的を達成するために Clean Doctor (以下 CD) では異なる戦略を取っていました。

CD は自身の C2 サーバー「familysdk[.]com」からタスク情報を取得してひそかに数多くのプロモーション対象アプリをクラウド ストレージ サービスからダウンロードします。 ダウンロードしたアプリをインストールするようユーザにうながすかわりに、以下のいずれかの異なる方法でこれらのアプリを実行します:

1. ショートカットをクリックさせて起動する:

CD はデバイスのホーム画面上にダウンロードしたアプリごとにショートカットを作成します(図 2)。ユーザーがこのショートカットをクリックすると対応するアプリが「Clean Doctor」サンドボックス内のプラグイン アプリとして起動します。ほとんどの Android ユーザーにとって、ショートカットをクリックした際に、こうした方法でのアプリ起動と通常の方法での起動を見分けることは非常に難しくなります。たとえばあるユーザーが「Evony: Battle On」というゲームのショートカットをクリックするとこのゲームが直接即座に表示されますが、このゲームは実際にはプラグインアプリとして起動しており、プラグインの仮想環境内で稼働しています。

図 2 プロモーション対象アプリのショートカットが生成されている
図 2 プロモーション対象アプリのショートカットが生成されている

2. 自動起動:

すべてのプラグイン アプリがホスト アプリの完全な制御下にあるので、ホスト アプリは各プラグライン アプリのライフサイクルをコントロールできます。CD はシステムイベントを受け取るとプロモーション対象のアプリをプラグラインアプリとして自動的に起動します。

図 3 プロモーション対象のゲーム アプリがプラグインとして起動されている
図 3 プロモーション対象のゲーム アプリがプラグインとして起動されている

例 2: 複数のアプリのプロモーション

2017 年 1 月の終わりには、Google Play ストアで「bloodpressure」(パッケージ名 「com.blood.pressure.bost」) と呼ばれるアドウェア アプリの開発者がさらに攻撃的な手法で Android プラグイン技術を悪用し、アプリのプロモーションを行っている様子を観測しました。このアドウェアは自動的に別のアプリを起動して広告を表示し、1画面内で複数のアプリを勧めてきます。

このアドウェアは組み込みの VirtualApp フレームワーク Version 2.5 を使用していました。また同アドウェアは Google Play ストアから 2017 年 1 月のはじめに削除されています。Google Play ストアから削除されるまでのインストール数は 10,000 から 50,000 の間でした。このアドウェアの Google Play ストアにおけるライフサイクルは図 4 に示しています。

図 4 「bloodpressure」アプリ用プラグイン アドウェアの進化時系列
図 4 「bloodpressure」アプリ用プラグイン アドウェアの進化時系列

ほかのアドウェアとの比較

ほとんどの広告用 SDK は WebView コンポーネントを使用してバナー広告や全画面広告などを表示します。こうした SDK を使用して作られたアプリは、一度にひとつの広告しか表示できません。ただし bloodpressure アドウェアはこれとは異なり、ユーザーに対して多数のアプリ広告を一画面内に表示できます。この目的のためにアドウェアは自動的にプラグイン アプリを実行し、プラグインの中で多数の広告をまとめて表示しています (図 5)。このテクニックはプロモーション対象のアプリをユーザからの入力もなしにむやみに起動することほど有害ではありませんが、アドウェア作成者にプロモーション対象アプリをより多くインストールさせる機会を与えることになります。

図 5 プラグインアプリが複数の広告を表示している
図 5 プラグインアプリが複数の広告を表示している

技術的分析

このアドウェアのワークフローについて図 6 で示して説明します。

1. 遠隔サーバーから設定を取得する:

ホスト アプリは起動するとURL http[:]//qwe.ortpale[.]com/conf/bloodinfo.txt の遠隔サーバーに接続して設定ファイルを取得します。HTTP リクエスト ヘッダの User-Agent プロパティが「Ray-Downer」に設定されているのが興味深い点です。

2. プラグインアプリをデコードして保存する

ホスト アプリには「protect.data」という名前の生のリソースが含まれています。このリソース ファイルは実際にはエンコードされたプラグイン APK ファイルです。ホスト アプリがこのファイルをデコードし、保存します。

3. プラグイン アプリをインストールする

ホスト アプリは VirtualApp フレームワークを利用してプラグイン アプリをホスト アプリ自身のサンドボックス内にインストールします。

4. プラグイン アプリを起動

プラグイン アプリのインストールに成功すると、ホスト アプリはプラグインを VirtualApp API 経由で起動することができるようになります。プラグイン アプリが起動すると、ユーザーに広告を表示し始めます。

図 6 プラグイン アドウェアのオペレーション
図 6 プラグイン アドウェアのオペレーション

まとめ

Android のプラグイン技術によりアドウェア作成者が新しい方法で収入を得られるようになっています。こうした悪用は広告ネットワークと Android ユーザーの双方にとって有害です。私たちはモバイル開発コミュニティとセキュリティ コミュニティが協力しあい、Android プラグイン技術におけるセキュリティ上の問題を解決していくことを願っています。Android ユーザーは、Android のプラグイン環境内で実行された場合、プラグイン アプリのプライベートなデータとデバイスが高いリスクにさらされていることを認識すべきでしょう。

パロアルトネットワークスのお客様は、WildFire および URL フィルタリングサービスによりこれらの脅威から保護されています。脅威インテリジェンスクラウド WildFire は Android プラグイン技術を悪用しているアドウェアのサンプルを検出します。また上記 2 つのアドウェア ファミリと関連づけられた C2 サーバーの URL は悪意があるものとしてマークされています。

謝辞

Palo Alto Networks の Ryan Olson と Kirill Zemnucha から元となったアドウェアのサンプル発見と本稿の発表にあたり助力を受けました。

このほかの Google Play ストアから削除されたプラグイン アプリ

アプリ名 パッケージ名 開発者名
Whale Camera com.bird.sky.whale.camera yu tongshi
Deep Cleaner com.blue.deep.cleaner yang songxi
Ice Camera com.cool.ice.camera mo tengbao
Sweet Camera com.filter.sweet.camera hou hanying
Orange Camera com.fishing.when.orangecamera chen shunya
穿越VPN com.fvcorp.ffclient.cs 林曦
Funny Camera com.g360.funny.camera qiu shixiu
Hot Camera com.group.hotcamera group
Insta Save for Instagram com.inslab.instasaver Li Game Studio Ltd.
Top Instagram Followers com.itop.top100insfollowers Dongli Level Studio
礼物说-礼物和全球好货指南 com.liwushuo.gifttalk TieTie Technology
Dual whazaap-alike ogwhastapp com.mob.dualwha qumobile
Wallpaper -recomended by 9apps com.mobile.ninewallpaper1 JiangHeng0255ss
Blinking Camera com.op.blinking.camera

com.op.blinkingcamera

yan huixin
File master-pro com.tec.file.master yan linqin
file explorer global.fm.filesexplorer tian xiexin
X Camera com.g360.zcamera steve zhao
Dual whats'app: Multi Account com.multi.account.parallel.dual Dev Tools Studio
Multi Messenger for WhatsWeb com.multi.whatweb What Multi APP
Clean Doctor: Safe & Clean com.nianclub.cleandoctor li lusong
AppLock com.security.multiple.account.applock ScreenLock Apps, Password to Secure Privacy
2Lines for WhatsApp com.tenappsmultiwhat KTeam
Downtuber : video downloader com.yiyue.wuhao li qinkui
Multi Space | Dual App dotapps.multispace Dot Apps Studio
2 Whazzap NoRoot dotapps.multiwhats Dot application
Game Talent – Booster & Tuner opt.game.talent Game Talent

SHA256 ハッシュのサンプル:

5e5bea52b1f9fcbd78c990cd09057780ebda669a5b632a8dd46ecfcfbfaf6369
24d308a8f2bcabd97b0e7acba8e22821914e464cdb7d0ed61a26400456870edd
6c2a23c0ca361fabc95e2eac3a13641cafe53803c8a4fc32b8a182374ac32ee1
dec71f2464bdfcc7a8fae02e2c103a31b746aa798aeebe1721ccd037156106f4
748dae1604fb0b747bcdeb476aea7d1f6bbec7d7a260613241a9fc3ef1243c66
ee7b82ef97928e0e4d100eb82c37bac6d87ee275cc89ec67c3f8a64fd13561be
5467ebe255bd59912c61aa1b801ea93972672885bfa29c3ee9756342ceb65228
49a9767d1775dd45545ea8fff1250e89fa6fd0c1a694b6583f4e79cd1b14c162
95d12555b71adf13eb40cb78c2f8cfa17aeaaf6f063bcd209a6037463e8fca66
d1916eb07c0a8494df21f8453511df6655fe1bc07efb37b526eae8724665ab91
4e25245dc9c0c8b6cf98e9fcdd6f94dd8e0dad7ad526248999f913682df28531