「App Store」と「Google Play」上で偽ギャンブルアプリが多数拡散

iOSの 「App Store」とAndroidの「Google Play」、この二つの正規プラットフォーム上にアドウェアやマルウェアの混入した偽アプリが潜り込んでいることはさほど珍しくなくなっているようです。今回、トレンドマイクロは、正規アプリストアであるApp StoreおよびGoogle Play上で、アプリ概要欄の説明と内容が違うコンテンツを含む数百の偽アプリを確認しました。偽アプリは、表面上は一般的な正規アプリのように見えますが、ギャンブルアプリの側面を隠し持っていました。また、日本のアプリストア上でもダウンロード可能で、一部のアプリ概要欄では日本語が使用されているものもありました。

図1:偽アプリの一例。一見普通のアプリ(左)がまったく別の見た目に変身(右)
図1:偽アプリの一例。一見普通のアプリ(左)がまったく別の見た目に変身(右)
注:iOSアプリ(上)、Androidアプリ(下)

以前からトレンドマイクロではスマートフォン向け正規アプリマーケット上での不正アプリ頒布を確認しており、2018年にはGoogle Play上で配布されているボイスメッセンジャーアプリに偽装したAndroid端末向け不正アプリについて報告しました。そして最近、App StoreおよびGoogle Playで、正規コンテンツに紛れて配信されている偽アプリをまた確認しました。攻撃者は、正規のアプリになりすますギャンブルアプリの側面を隠し持った偽アプリを、ユーザが気づかないうちにダウンロードするように仕向けているものと言えます。
今回確認した偽アプリでは、アプリ概要欄の説明と内容が違うコンテンツを含んでいました。その特徴はさまざまですが、すべての偽アプリに共通して不審な挙動が見られました。この共通した不審な挙動というのは、これらの偽アプリが、地方自治体の規制やアプリストアの規約に違反するギャンブルアプリに変身すると見られることです。
確認した偽アプリの一部は、App Storeのアプリランキング100位圏内に入っており、すでに多くのユーザがこの偽アプリをダウンロードしてしまったと考えられます。この偽アプリの中には、評価が10万件以上に上ったものも確認されました。弊社はAppleとGoogleにこの調査結果を提供し、両社ともすでにApp StoreとGoogle Playから偽アプリを削除しています。

■アプリの拡散手法:Webページからアプリストアへ

今回確認した偽アプリは正規アプリストア上からダウンロード可能ですが、もうひとつ、ギャンブルサイトなどからの誘導も確認しています。たとえば、対象のギャンブルサイトにアクセスすると、以下の図2のような画面が表示されます。

図2:元の画面(左)と英語版(右)
図2:元の画面(左)と英語版(右)

注視すべき点として、iPhoneユーザが上の画面の「ダウンロード」をクリックすると、App Storeにリダイレクトされます。これは、これらのギャンブルアプリの側面を隠し持つ偽アプリが App Storeの審査を通過したということを意味します。弊社の調査では、このギャンブルアプリ以外にも、App Storeの管理下ではないエンタープライズ(企業)配布用アプリをインストールするようユーザを促す偽アプリも確認されました。

図3:App Storeを装う偽のアプリ詳細ページ(左)と企業配布用アプリのインストール手順(右)
図3:App Storeを装う偽のアプリ詳細ページ(左)と企業配布用アプリのインストール手順(右)

Androidユーザの場合、図2の画面上の「ダウンロード」をクリックすると、APK(Androidアプリケーションパッケージ)ファイル「com.bxvip.app.jiuzhouzy」をホストするページにリダイレクトされます。 このAPKには、Webページを開くと表示されるギャンブルアプリのものと同じユーザインタフェース(UI)が含まれています。この表示画面は、アプリ内にWebページを表示する機能「WebView」を利用して読み込まれます。

図4:APKファイル「com.bxvip.app.jiuzhouzy」に含まれるUI
図4:APKファイル「com.bxvip.app.jiuzhouzy」に含まれるUI

図5:App Store上のアプリ概要欄の説明では、世界の休日情報を提供するアプリ(左)とされているが、実際のアプリの表示画面では宝くじのアプリ画面が表示される(右)
図5:App Store上のアプリ概要欄の説明では、世界の休日情報を提供するアプリ(左)とされているが、実際のアプリの表示画面では宝くじのアプリ画面が表示される(右)

App Store上のアプリ説明欄では、日本語が使用されている偽アプリも確認されており、上述の概要欄では「世界の休日情報」を提供するアプリと記載されています。 しかし、ダウンロード後にアプリを開くと、表示されたのは概要欄の説明とはまったく別のコンテンツでした。今回確認した事例では、ユーザがモバイルアプリを開くと、元のアプリ説明とはまったく違ったアプリの内容が表示されました。

App Storeで確認された図5と同様の偽アプリはGoogle Playでも展開されていました。以下の図6は、Google Playのアプリ概要欄と、ユーザが実際に起動した際にデバイス上に表示されるアプリ画面です。

図6. Google Playのアプリと英語版の説明(上)、および起動時の実際のアプリ画面(下)
図6. Google Playのアプリと英語版の説明(上)、および起動時の実際のアプリ画面(下)

■偽アプリの審査を突破した手法は?

実際のお金を賭けるギャンブルおよびカジノなどのリアルマネーゲームアプリは、App StoreおよびGoogle Play上で禁止されていませんが、厳しい規制が設けられています。例えば、2019年6月3日にAppleが公開したアップデートでは、アプリとして配布される「HTML5ゲーム」については、リアルマネーゲーム、宝くじや寄付などの機能へのアクセスが不可とされる可能性に言及しています。Google Playの場合、特定の国で要件を満たすギャンブルアプリのみに許可を出しています。本記事で紹介する偽アプリは、App StoreおよびGoogle Playが定めるガイドラインを満たしていませんでした。

今回確認された偽アプリを起動すると、天気情報や娯楽目的などのさまざまな機能を備える、一見通常のアプリ画面がデバイス上に表示されます。一見無害に見えるこれらの偽アプリは、コマンド&コントロール(C&C)サーバを介して構成データを要求し、以下の図9および10で示されているように構成データガイドとしての動作を行います。 この構成データはギャンブルアプリ画面を表示するためのURLを偽アプリに届けるために利用され、このURLを伴った偽アプリはギャンブルアプリ画面を表示するために「WebView」を起動します。以下の図7で、ギャンブルアプリがアプリストアに入り込む全体の流れを説明します。

図7:ギャンブルアプリがアプリストア内で公開されるに至る全体の流れ
図7:ギャンブルアプリがアプリストア内で公開されるに至る全体の流れ

偽のアプリにはいくつか興味深い動作があります。その1つは偽アプリが持つ「スイッチ」機能で、この機能を利用して、攻撃者は実際にアプリが隠し持っている内容(ギャンブルアプリ画面)の表示および非表示設定を変更することが可能です。 今回の場合、ギャンブルアプリ画面の表示切り替えに利用されるAPIは、アプリの審査中オフに設定されていました。

図8:iOS(上)およびAndroid(下)に読み込まれたURL
図8:iOS(上)およびAndroid(下)に読み込まれたURL

弊社はこの偽アプリとC&Cサーバの間で行われた通信の簡単な再現を試みました。 以下の図9に示されている中国語の単語「kaiguan」は、「オン/オフの切り替え」を意味します。この応答例では1700回という切り替え回数が指定されていますが、今回確認したギャンブルアプリの中でも例外的な内容でした。

図9:偽アプリとC&Cサーバの間で行われた通信の再現で見られた応答
図9:偽アプリとC&Cサーバの間で行われた通信の再現で見られた応答

偽アプリは、アプリIDを使用して指定されたアドレスを照会します。 対象のアドレスに対応する応答はBase64で入力されます。 このアプリIDが無効な場合、応答は空で返されます。

図10:デコードされた応答
図10:デコードされた応答

データが空ではなく正常にデコード可能であった場合、図9の応答をデコードした結果明らかになったURLは、WebViewの読み込みに使用されます。

図11:iOS(上)およびAndroid(下)に読み込まれたWebView
図11:iOS(上)およびAndroid(下)に読み込まれたWebView

応答が空の場合、iOS端末用アプリでは、「普通」を装ったアプリの動作が続行できるように、WebViewを非表示に切り替えます。Android端末用アプリの場合は、ローカルアクティビティにジャンプするだけで、偽アプリはストアが承認した「普通」のアプリ機能を継続して実行します。

図12:iOS(上)およびAndroid(下)で失敗した要求
図12:iOS(上)およびAndroid(下)で失敗した要求

したがって、偽アプリは、この「スイッチ」機能を利用して審査を突破することが可能です。たとえば、アプリを審査する前に、開発者は「オフ」に切り替えるだけで図1(左)のような「通常」のアプリの動作が起動します。このような手法を介して偽アプリの審査を行ったため、アプリストア側は偽アプリが持つギャンブルアプリの側面に気づかないまま審査を通してしまったと考えられます。

アプリストアの審査を通過した偽アプリは、アプリストアから一般にダウンロード可能となります。次に、攻撃者は「オン」に切り替えて、偽アプリが隠し持つギャンブルアプリ画面を表示します。

図13:アプリに埋め込まれたページ
図13:アプリに埋め込まれたページ

■模倣した正規アプリのダウンロード数を上回った偽アプリ

トレンドマイクロの調査の時点では、これらの偽アプリはWebViewを利用してギャンブルアプリ画面を読み込むだけで、ユーザに不利益を与えるような不正な活動は確認されていません。しかしながら、実質的な被害が確認されていないからと言って、必ずしも安全であるという訳ではないので注意しましょう。本記事執筆時点で、今回確認した偽ギャンブルアプリは、なりすますのに利用した正規のアプリよりも上位にランクされていました。

Google Playでは、これらの偽アプリは2019年8月にのみ公開されており、記録されたダウンロード数も少数でした。一方、App Storeでは、ストア内のキーワード検索で同じカテゴリを共有する偽アプリと正規のアプリ両方が存在することが判明しました。以下の図14の偽ワインアプリは、類似のカテゴリに存在する他の正規のアプリよりも高い順位に表示されています。

図14:正規のアプリよりもストア内の順位が高い偽アプリ
図14:正規のアプリよりもストア内の順位が高い偽アプリ

正規アプリは2年間に何度もアップデートが行われた形跡がある一方、偽アプリは過去半年間で2つのマイナーアップデートしか確認されませんでした。本記事で紹介した偽アプリは、正規アプリの名前と機能を真似るだけではなく、ユーザを騙して効率的にアプリを拡散するために、2回目のアップデートの際にWebViewを利用してギャンブルアプリ画面を埋め込んだと考えられます。また、攻撃者は検索エンジンがアプリとキーワードの関連性をより算出するようにSEOテクニックを組み込んで、対象のアプリがユーザの目に触れるようにしていると見られています。

たとえば、中国のApp Storeでは、上述のような偽アプリが多く確認され、ダウンロード数で上位100位内にランクインしていました。これらの偽アプリは非常に多くのユーザにダウンロードされ、そのうちの1つは44万件ものユーザ評価を得ています。

図15:上位にランクインした「普通」のアプリになりすますギャンブルアプリ
図15:上位にランクインした「普通」のアプリになりすますギャンブルアプリ

また、App Storeで公開されていた偽アプリに関連する可能性のある一般的なキーワードを、対象の地域に限定して検索してみたところ、以下のキーワードとの一致数が判明しました。

検索キーワード 中国市場 日本市場 米国市場
重庆时时彩 (重慶宝くじ) 214 40 61
分分彩 (毎分宝くじ) 55 26 52
北京赛车 (北京レース) 314 9 104

表1:国別アプリキーワードの検索表示回数

弊社の調査で、今回確認された偽アプリは、GooglePlayとiOS AppStoreを通して日本からもダウンロード可能であったことが判明しました。

図16:日本版Google検索で表示された結果
図16:日本版Google検索で表示された結果

■偽アプリのコマンド&コントロール(C&C)通信の相関性

また、今回の調査を通して、上記の3つの偽アプリをコントロールするために使用されたC&Cサーバ「app[.]kaiguan1700[.]com」も確認されました。注視すべき点として、IPアドレスはこのURLのみをホストしています。このC&Cサーバは、アプリIDに応じて、WebViewが読み込む別々なURLを利用して応答します。 弊社がアクセスを試みた後、このC&Cサーバが停止されたことが判明しました。 興味深いことに、サーバの停止と同時に、これらの偽アプリは「普通」のアプリのように動作し始めました。これは、偶然「スイッチ」が「オフ」になったためだと見られています。このことは、これらの偽アプリが同じC&Cサーバを共有していることを示しており、偽アプリを判別する優れた痕跡(IoC)となる可能性があります。

図17:異なるドメインとアプリの関連性を示すC&C構造
図17:異なるドメインとアプリの関連性を示すC&C構造

アプリストアにアップロードされた数百の偽アプリは、異なる開発者用アカウントを使用するため、異なったカテゴリに表示されます。 図17の構造が示すように、構造の中央に位置するC&Cサーバを調査することは、これらの偽アプリをまとめて確認し、偽アプリの拡散からユーザを守る良い手段です。

■被害に遭わないためには

今回の事例では、偽アプリはギャンブルアプリの側面を隠し、実用的なアプリを装ってアプリストアの審査を突破しました。ギャンブルアプリは、多くの国で違法と見なされているため、App StoreとGoogle Playの判断によっては審査を通過できなかったり、アクセス不可になる場合もあります。この調査結果についてAppleとGoogleに通知したところ、本記事で紹介した偽アプリはアプリストアから削除されました。
さらに、これらの偽アプリが高評価を得て上位に確認されていたため、APIを利用して本来のアプリの姿を隠す手法は、正規アプリの開発者とモバイルエコシステムに懸念をもたらします。 したがって、ユーザは、モバイル機器を安全に保護するためのベストプラクティスを講じる必要があります。 また、偽アプリかどうか判断するために、インストール前にアプリの概要欄やレビューを確認して不審な機能や動作がないか確認しましょう。

■トレンドマイクロの対策

トレンドマイクロでは、モバイル環境での総合セキュリティ対策として、個人利用者向けには「ウイルスバスターモバイル」、法人利用者向けには「Trend Micro Mobile Security」を提供しています。これらの製品ではトレンドマイクロのクラウド型セキュリティ基盤「Trend Micro Smart Protection Network(SPN)」の機能である「Mobile App Reputation(MAR)」技術や「Web レピュテーション(WRS)」技術により、不正/迷惑アプリの検出や、関連する不正 Webサイトのブロックに対応しています。

Trend Micro Mobile Security」は、モバイルデバイス、アプリケーション、データの可視化と制御を標準装備の単一コンソールで実現するとともに、脆弱性攻撃や不正アクセスから端末を保護し、マルウェアや不正なWebサイトをブロックします。

■侵入の痕跡(Indicators of Compromise、IoCs)

侵入の痕跡(Indicators of Compromise、IoCs)はこちらを参照してください。

参考記事:

翻訳: 下舘 紗耶加(Core Technology Marketing, Trend Micro™ Research)