トレンドマイクロは、2016年9月13日、iOS向けサードパーティのアプリストア「Haima」について報告しました。同記事では、Haima が正規アプリに広告のモジュールを挿入しリパックアプリを作成して、収益を得る手口について説明しています。
Haima が人気である理由の1つに、「Haima iOS Helper(Helper)」というソフトウェアが、このアプリストアを利用しやすくしていることが挙げられます。この Helper は、Haima で取り扱うアプリのインストールや、ユーザ機器の管理を容易にする補完機能を備えています。このような機能は、iTunes が iOSユーザに対して果たす役割と類似したものと考えることができます。
しかし、この Helper は、使用方法によっては AppleID の流出に繋がる可能性があります。弊社は、これを「TSPY_LANDMIN.A」として検出対応します。
■まずは正規の iTunes をダウンロード
Helper は、Haima からダウンロードされます。そしてダウンロード後、特定のバージョンの iTunes 12.3.2.25 を同アプリストアから直接ダウンロードするよう指示します。ダウンロードされる iTunes のファイルは Apple が提供している正規のものと同一ですが、最新のバージョンではありません。
図1:iTunes をダウンロードするよう促される(赤文字は赤枠部分の日本語訳)
図2:Haima のサーバから iTunes がダウンロードされる
Helper は iTunes を直接利用することはありません。この目的は、このバージョンの iTunes だけに付属してくる iPhone のドライバをインストールさせることにあります。
■更新プログラムのパッケージを追加する
iTunes がインストールされると、次に、更新プログラムのパッケージが Haima のサーバからダウンロードされます。
図3:更新プログラムのパッケージがダウンロードされる
図4:更新プログラムのパッケージの内容
更新プログラムのパッケージのファイルは、Haima のディレクトリへ解凍されます。
図5:Haima ディレクトリ内の更新プログラムのパッケージ
この更新プログラムに含まれているファイルは、実際、Apple による正規のファイルです。Haima は、バージョン 12.3.2.25 を使って iTunes のプロトコルを解析したため、Helper はこの特定のバージョンの DLL を利用します。iTunes がその後アップデートされた場合でも、iOS端末にアプリをインストールしたり、データを同期させたりすることが可能となります。
図6:DLL のバージョン
■アプリのインストール方法
Haima は、アプリをインストールするために 2通りの方法を提供しています。iOS端末上では、インストールされるアプリはすべて署名されている必要があります。Haima は、署名に関して 2つの方法を利用しています。1つは、企業内配布用アプリの証明書を利用する方法、もう1つは正規の App Store から入手した Apple の提供するアプリを利用する方法です。図7は、Helper が、ほぼアプリストアのように機能する様子を示しています。
図7:Haima の Helper ソフト
Helper はアプリストアに求められる機能をすべて揃えており、カテゴリ別、必須、おすすめなどのリストがあります。その中には正規の iOS向け App Store で公開されているアプリと同じものもありました。図7 で赤く囲んだものが、該当するアプリです。
Helper は、企業内配布用アプリの証明書で署名されたアプリを直接インストールすることも Apple Store から Apple のアプリをインストールすることもできます。企業内配布用アプリの証明書の利用については後述します。Apple Store からアプリのインストールは、再び Haima に接続し Apple ID を入手することによって実行されます。
図8:Apple ID をリクエストする(赤文字は赤枠部分の日本語訳)
図8は、アプリのダウンロードにはApple ID が必要であり、確認をクリックして Apple ID を取得しようという内容が書かれています。
図9:Apple ID を取得する(赤文字は赤枠部分の日本語訳)
図9は、セキュリティ環境のチェックも含めた認証プロセスが進行する様子を示しています。
図10:Apple ID 取得成功(赤文字は赤枠部分の日本語訳)
Apple ID の取得が完了すると、図10が表示されます。ユーザは取得した Apple IDアカウントのパスワードさえ知りませんが、ヘルパーアプリケーションは、この Apple ID を利用し、ユーザの iPhone へどんなアプリもインストールすることが可能です。
図11:Apple ID を利用してアプリをインストールする(赤文字は赤枠部分の日本語訳)
ユーザが以前 App Store から該当アプリをインストールしていた場合、Helper は、ユーザにそのアプリをアンインストールするように要求します。ヘルパーアプリケーションは、まず端末上の企業内配布用アプリの証明書を更新し、その後、アプリを端末にインストールします。
図12:アプリをアンインストールするように要求する(赤文字は赤枠部分の日本語訳)
図13:企業内配布用アプリの証明書を更新する(赤文字は赤枠部分の日本語訳)
■アプリの署名を書き換えて Apple の証明書取り消し措置を回避
上述の通り、Helper は、アプリのインストールに企業内配布用アプリの証明書を利用します。Apple は、企業内配布用アプリの証明書が悪用される恐れを十分理解しているため、悪用されていた場合証明書をを無効にします。Haima は、利用する企業内配布用アプリの証明書を数日ごとに取り換えます。加えて、Haima は証明書が露呈するのを回避するため、アプリへの署名の書き換えを実行します。
Helper は、アプリを端末にインストールする前に、有効な、新しい企業内配布用アプリの証明書を利用して再署名します。こうすることにより、古い方の企業内配布用アプリの証明書が Apple によって無効とされることを回避できます。
図14:ダウンロードされた古い企業内配布用アプリの証明書と新しい Provisioning Profile
図15:新旧の証明書の Mach-O ファイル
図16:旧証明書から新しい証明書へ
■ユーザの Apple ID が漏えいする恐れ
実はアプリをインストールする、3つめの方法があります。Haima の提供する Apple ID の利用を希望しない場合、ユーザは自身の Apple ID を使用することができます。それには、ユーザの Apple ID とパスワードを入力するだけです。
図17:Apple ID の入力を要求するログイン画面
しかし、これは良い手ではありません。なぜなら、Helper によってユーザ名とパスワードが保持されるからです。これにより、利用者の Apple ID が流出する可能性が生じます。
図18:Apple ID が漏えいするコード
■PC に同期される画像
初期設定で、iPhone に保存されている画像は PC に同期するよう設定されていません。しかし、Helper は、自動的にユーザの画像をユーザの PC に同期させます。
図19:同期された画像
■Helper に含まれる不正なコード
Helper は、また、情報を窃取する関数を呼び出すコードを複数含んでいます。しかし、これらは機能していないか、あるいは呼びだされないことが確認されています。
図20:不正なコード
■まとめ
Haima の Helper は、このサードパーティアプリストアを利用しやすくする重要な要素です。企業内配布用アプリの証明書と App Store へのログインを管理することによって、ユーザ側の使用感を面倒を感じさせないものにしています。
しかし同時に、深刻なセキュリティ上のリスクを招きます。ユーザの Apple ID 認証情報の保持は、それ自体が深刻なリスクです。コードの中に含まれる不正な関数の存在も、確かに懸念されます。サードパーティのアプリストアの利用は、一般的にセキュリティ上の問題を生じやすいため、避けてください。今回の事例は、弊社がそのように推奨する根拠を具体的に示しています。
弊社は、以下のファイルを「TSPY_LANDMIN.A」として検出対応します。
SHA1ハッシュ値 | ファイル名 |
1fd7073ffd23e6b57be7418be24b78cd3694fe2f | IPhoneHelperDll.dll |
8d13df388e1dae9d0100967190d4d4b32bd25b8f | 00_4.3.7.exe |
ec58ec2ecc019d5c927acfa7520550c35d1b480c | Haima.exe |
参考記事:
翻訳:室賀 美和(Core Technology Marketing, TrendLabs)