iOS向け「リパックアプリ」の手口、サードパーティアプリストアで頒布、アドウェアに誘導

偽アプリで利益を上げるためには、まず、ユーザに偽アプリをインストールさせなければなりません。偽アプリの作成者は、人気のある正規アプリに、不必要なコンテンツや、あるいは不正なプログラムさえ埋め込み、正規のアプリを偽装します。そうしたリパックアプリは通常、サードパーティのアプリストアで、無防備なユーザに配布されています。

トレンドマイクロは、そのようなアプリストアを確認しました。中国を拠点とする、iOS向けサードパーティのアプリストア「Haima」は、YouTube、Facebook、Google+Twitterなどのソーシャル・ネットワーキング・サイトで、リパックアプリを積極的に宣伝していました。彼らは Minecraft、Terraria、また Instagram のようなゲームやアプリの人気に便乗することによってユーザをおびき寄せ、リパックアプリをダウンロードさせます。

Haima のようなサードパーティのアプリストアでは、リパックアプリを拡散させるため、正規アプリを偽装してユーザに信用させます。そして、iOS端末向け正規アプリストアである「App Store」での配布には対応していない、「Apple Developer Enterprise Program」のような企業内向けのアプリ開発プログラムを悪用します。さらに、サードパーティのアプリストアは、あまり厳しく規制されていないため、偽アプリの作成者にとって好都合でもあります。Haima は、リパックアプリに混入した広告による広告料で収益を上げています。

■ Haima と Apple の攻防

Apple は、iOS を厳格に管理し、正規マーケットである AppStore 以外からのアプリインストールを防いでいます。このため、サードパーティのアプリストアを利用するためには端末を「Jailbreak(脱獄化)」することが条件となっていました。しかし Haima は、Apple Developer Enterprise Program を悪用することによって、Apple による長期に及ぶ審査のプロセスを通過せずに、アプリを開発し配布することを可能にしています。

一方で、iOS 9 については、信頼できるサードパーティのアプリのみがインストールの対象となるように、認証方法が更新されました。それには具体的な対応を開発者に要求する、段階的承認プロセスが含まれています。加えて、企業向けの証明書が不正に入手されていた場合、Apple によって取り消されるため、リパックアプリの拡散が抑止されます。

すると、Haima その他のリパックアプリ作成者側では、偽アプリの機能継続のため、頻繁に企業向けの証明書を変更する必要が生じました。Haima の場合、15日という短期間にすでに5回以上も証明書を変更しています。それでも、そのような手間は彼らの商売に影響してはいないようです。Haima のアドウェア混入リパックアプリから得られる利益に比べれば、Apple Developer Enterprise Program の年間費用の 37,800円は、些細な金額かもしれません。

図1
図1:リパックアプリを拡散させるため 2週間のうちに 5つの証明書を利用する Haima

■ リパックアプリがどのようにアドウェアへ誘導するか

Haimaが改造した「Pokémon GO」のリパックアプリ2種は、すでに 100万回以上ダウンロードされています。初版のリパックアプリには当初、「Pokémon GO」の地域的制約を回避するために、偽の GPS位置情報を追加する不正なプログラムが含まれていました。

その後間もなく、「ダイナミックライブラリ」のファイル ”ad.dylib” が搭載されたリパックアプリ第2版が公開されました。このアプリが携帯電話ネットワークに接続されると、ユーザの携帯端末のデータが収集され、アドウェアを経由して個人情報が漏えいします。その後更新された初版も、現在はアドウェアを含むダイナミックライブラリを搭載しています。

Haimaのアプリストアで公開されている他のアプリも、同じダイナミックライブラリが含まれていることが確認されています。

アプリ名 リパックアプリのバージョン ダウンロード回数(単位:百万) 公式 App Storeバージョン
Minecraft PE 0.15.0.3 > 68.87 0.15.0.0
Terraria 1.2.11971 > 6.07 1.2.12715
Instagram 28404075 > 0.33 8.3
LINE 5 > 0.33 6.4.0
AVPlayer Pro 1.3.3 > 0.20 2.81
Facebook 23973043 > 0.15 58.0
Twitter 6.48 > 0.05 6.58
Uber 2.133.2 > 0.16 2.140.1
QQ 6.3.5.437 > 45.94 6.3.5
Wifi Password for iOS 7 1 > 0.97 1.1

弊社は、上述のアプリと似た「Pokémon GO」のリパックアプリが、「HiStore」というベトナムに所在するサードパーティのアプリストアでも公開されているのを確認しました。英語のユーザインタフェースを持つこのアプリは、現在までに 1,000万回以上ダウンロードされています。HiStore では他に Minecraft、Facebook、Twitter など人気のあるアプリのリパックアプリも公開しています。

図2
図2:アプリが広告を表示するため、ダイナミックライブラリに埋め込まれたモジュールが利用される

Haima のアプリストアで公開されているリパックアプリには、「InMobi」「 Mobvista」「Adsailer」「Chance」「Dianru」「Baidu」などの広告提供企業のモジュールを取り込むダイナミックライブラリが埋め込まれています。このような広告提供企業は、Webサイト hxxp://spa[.]hadobi[.]com/app から取得した JSON形式のファイルのデータによって管理されています。

Haima の「Pokémon GO」リパックアプリに埋め込まれたダイナミックライブラリのファイルは、複数のモジュールで構成されています。それらはコマンド&コントロール(C&C)通信を利用し、広告提供者や広告の種類、どのサーバから広告をダウンロードし、どこへ表示するか、等を決定します。また広告提供者を特定する識別子が付与されていて、報酬の支払いに利用されます。

図3
図3: JSONファイルが C&Cサーバへデータを要求するコード

図4
図4:データが受信されたことを示すコード

図5
図5:ユーザへ表示する広告を選定するコード

ダイナミックライブラリによって表示する広告が決定すると、対応する広告モジュールが、API の URL(例:hxxp//mobads[.]baidu[.]com/api)と、ダイナミックライブラリのモジュールの一つである「Advlist」のパラメータを要求します。そして IPアドレス(例:61[.]155[.]4[.]66)から対象の広告が読み込まれます。

図6
図6:「Pokémon GO」のリパックアプリの、「Baidu」の広告を表示させるコード

図7
図7:「iTunes」のリパックアプリによってサーバからダウンロードされた Protocol Buffers 形式の広告

■ 広告を効率的に表示するためにユーザ情報分析を利用

このようなリパックアプリを解析すると、作成者は、ユーザに合った広告を表示するために、ユーザの使用端末、ネットワーク情報国際携帯機器加入者識別情報(IMSI)、端末識別番号(IMEI)、さらに脱獄化しているかどうか、などを考慮しているのがわかります。そのような端末名と IPアドレスなどの情報は、C&Cサーバへ送信されます。

図8
図8:C&Cサーバへ情報をアップロードするコード

図9
図9:ハートビートのパケット送信のように、ダイナミックライブラリは一定時間ごとに継続して端末の情報と IPアドレスを C&Cサーバへアップロードする

■ アプリのダウンロード時の注意

ユーザは、サードパーティのアプリストアからのアプリのダウンロードは避け、公式の App Store からのみインストールするようにしてください。リパックアプリには不正なコンテンツも混入している恐れがありますから、企業や組織ではこのようなアプリが拡散することのないよう、正規のアプリストア以外をブロックする、また、職場で利用される個人用端末も保護の対象とするなど、セキュリティ上の指針を導入してください。

アプリの不正コピーおよびリパックを防止するため、iOS アプリの開発者は、例えば、複数カ所で check関数を用いることにより不正コピーしにくくする「Multi-pass check」、リバースエンジニアリングツールを使用できないようにする「Malformed Mach-O Binaries」、また、コードを難読化する、などの技術を採用できます。また、コードサイニング証明書を検証することによって、機密情報の漏えいを防ぐことが可能です。

弊社は、これらの不正アプリや偽アプリを「IOS_Landmine.A」として検出します。弊社が解析の結果 Apple に開示した SHA1ハッシュ値とパッケージ名は、こちらを参照してください。

参考記事:

翻訳:室賀 美和(Core Technology Marketing, TrendLabs)