バックドア化されたPokémon GOのAndroidアプリを検証 遠隔操作ツールが正規ストアを介さないアプリダウンロードを悪用
概要
Pokémon GOは、任天堂が公認したiOS及びAndroid向けの初めてのポケモンゲームです。拡張現実 (AR) を使ったゲームで、7月4日に世界で初めてオーストラリアとニュージーランドでリリースされました。しかし、他の地域のユーザーからは即座に不満の声が上がりました。アメリカでは7月6日にリリースされましたが、残りの国々はまだリリースされておらず、アプリを入手するためには正規の方法以外に頼らざるを得ません。その結果、Androidで「サイドローディング(正規のアプリケーションストアを利用せずにアプリケーションをダウンロードすること)」を使うための方法(英語記事へのリンク)があちこちで公開されたのです。しかし、正規のアプリストア以外からインストールされたアプリは、ユーザーにとって大きなリスク(米プルーフポイント英語記事へのリンク)となります。
今回のケースでは、Proofpointの研究者は、ウイルスに感染したPokémon GO (注1) のAndroid版を発見しました。このAPKファイルは、悪意ある遠隔操作型ツール (RAT) である「DroidJack」 (SandroRATとしても知られる) を含んでおり、これにより攻撃者は被害者のスマートフォンをほぼ完全に操作することができます。DroidJack RATについてはSymantec(注2)とKaspersky(注3) が過去にレポートしています。私達はこのAPKが一般に出回っていることは観測していませんが、このファイルは悪意あるファイルを集めた場所に2016年7月7日の09:19:27 UTC(協定世界時間、日本時間で同日18:19:27)にアップロードされており、これはオーストラリアとニュージーランドで正規のアプリがリリースされてから72時間以内に起こったことです。
この状況は、ゲームが全世界同時にリリースされなかったことが一つの背景となっています。多くのゲーマーが、サードパーティからAPKをダウンロードし、自分の国でゲームがリリースされる前にゲームにアクセスしたいと考えたのです。さらに、多くのメディアがサードパーティからゲームをダウンロードする方法を紹介しました。(注4,5,6) そのうちのいくつかは、サードパーティからダウンロードしたAPKファイルをどのようにしてインストールするかまで解説していました。(注7)
「APKファイルを直接インストールするためには、あなたのAndroidデバイスがアプリケーションのサイドローディングを許可するよう設定する必要があります。これは通常「設定」から行う事ができ、セキュリティエリアに入って「unknown sources (提供元不明のアプリ)」のチェックボックスを有効にするのです。」
これはしかし、非常にリスクの高い操作であり、ユーザーはこれによって悪意あるアプリを自らのデバイスにインストールしてしまいます。今回発見されたように、バックドアに感染したAPKファイルをサードパーティからダウンロードすることにより、そのデバイスは侵害されてしまうのです。
悪意あるAPKファイルをダウンロードしてしまったかどうか不安に思っているユーザーには、自分のデバイスが感染しているかどうかを調べる方法がいくつかあります。まず、ダウンロードしたAPKファイルのSHA256ハッシュの値を調べることです。すでに出ている記事などからリンクされている正規のアプリケーションのハッシュ値は8bf2b0865bef06906cd854492dece202482c04ce9c5e881e02d2b6235661ab67です(ただし、既にアップデートが出ているかも知れません)。 私達が解析した悪意あるAPKファイルのSHA256ハッシュ値は15db22fd7d961f4d4bd96052024d353b3ff4bd135835d2644d94d74c925af3c4です。
デバイスが感染しているかどうかを調べるその他のシンプルな方法は、インストールされたアプリケーションのアクセス権限を調べることです。通常は「設定」「アプリ」「Pokémon GO」に移動し、PERMISSIONS (許可) までスクロールダウンします。図1が正規のアプリケーションに許可されたアクセス権限の一覧です。これらの権限は、デバイスの構成によって変化します。例えば、「Google Play billing service (Google Play請求サービス)」と「receive data from Internet (インターネットからデータを受信する)」は図に出てきませんが、Google Play StoreからPokémon GOをダウンロードした他のデバイスでは、これらが許可されています。図2、図3中、赤枠で囲ってあるのが、DroidJackによる許可されたアクセス権限 です。Pokemon GOでこれらのアクセス権限が許可されている場合、デバイスが感染している可能性があります。ただし、これらの設定は今後変わるかもしれません。
図1: 正規のPokémon GO APKによるアクセス権限
図2: バックドア化されたPokémon GO APKのアクセス権限 (最初のスクリーンショット)
図3: バックドア化されたPokémon GO APKのアクセス権限 (2回目のスクリーンショット)
感染したPokémon GO APKはこのように改変されていますが、被害者がゲームを立ち上げた際には、彼らは悪意あるアプリをインストールしたことに気がつかないでしょう。図4は感染したPokémon GOのスタート画面ですが、正規のものとまったく同じです。
図4: 感染したPokémon GOのスタート画面; 正規アプリケーションとまったく同じ
感染したゲームを更に調べたところ、正規のゲームと比較したときに3つのクラスが攻撃者によって追加されていることがわかりました。図5が正規のゲームに含まれるクラス、図6が感染したゲームのもので、以下の3つのクラスが追加されています。
- a
- b
- net.droidjack.server
さらに、これに含まれるDroidJack RATは、TCP及びUDPの1337を使ってpokemon[.]no-ip[.]orgというC&C (Command & Control) ドメインと通信するよう設定されています。(図7) no-ip.orgは通常、ホームユーザーやスモールビジネスユーザーが専用IPアドレスではなくダイナミックIPアドレスを使う際にドメイン名と結びつけるためのサービスですが、攻撃のためにもよく使われており、同様なサービスとしてDynDNSがあります。解析の時点では、C&Cドメインが解決したのはトルコ国内のIPアドレス (88.233.178[.]130) であり、感染したデバイスからの通信は受け付けませんでした。
図5: 正規のPokémon GOのクラス
図6: 感染したPokémon GOのクラス (悪意があると思われるクラスを赤枠で表示)
図7: ハードコードされたC&Cドメインとポート
結論
正式に検査され認められた企業アプリストア以外のサードパーティからアプリをインストールすることは、絶対にお薦めできません。正式な企業アプリストアは、モバイルアプリケーションのセキュリティを検査するための手続きとアルゴリズムを備えていますが、その他の疑問の多いソースからダウンロードされるアプリは、ユーザーとそのデバイスを様々なマルウェアに晒してしまいます。私達が解析した、感染してしまったPokémon GO APKの場合、攻撃者はモバイルデバイスを完全に侵害することができます。このデバイスが企業ネットワークに持ち込まれると、ネットワークに接続されたリソースもまたリスクに晒されます。
このAPKファイルは、まだ広く一般には観測されていません。しかし、Pokémon GOのような人気アプリを使えば、ユーザーを騙してデバイスにマルウェアを感染させられることを実証しました。結論としては、最新のソフトウェアを自分のデバイスにダウンロードする方法があったとしても、その必然性はありません。正規のアプリストアからアプリケーションをダウンロードすることが、デバイスやそれが接続されるネットワークを守るベストな方法なのです。
脚注
1.http://pokemongo.nianticlabs.com/en/
3.http://www.welivesecurity.com/2015/10/30/using-droidjack-spy-android-expect-visit-police/
4.https://www.theguardian.com/technology/2016/jul/07/how-to-get-pokemon-go-uk
5.http://www.wired.co.uk/article/pokemon-go-out-now-download-ios-android
7.http://arstechnica.com/gaming/2016/07/pokemon-go-ios-android-download/
Indicators of Compromise (脅威の痕跡、IOCs)
|
このトラフィックを検出するETシグネチャ:
2821000 || ETPRO MOBILE_MALWARE Pokemon GO AndroidOS.DroidJack DNS Lookup
2821003 || ETPRO MOBILE_MALWARE AndroidOS.DroidJack UDP CnC Beacon