仮想化の世界への入門 – パート1

Egidijus Lileika 氏、シニア セキュリティ研究員

 

この調査の目的は、アプリケーション仮想化が攻撃ベクトルとして利用される可能性を理解することです。本調査では、12種類の仮想化アプリを通常の使用例とハッキングツールとしてテストしました。Android向けアプリケーション保護製品は、テストしたすべての仮想化アプリにおいて、緩和策として評価されました。本シリーズのパート1をお読みください。

「通常の」エンドユーザー向けの仮想化アプリ

「一般」ユーザーが利用できる仮想化アプリの大部分は、Google Playストアからダウンロードできます。これらのアプリは数億回ダウンロードされています。最も人気のあるアプリの一つがParallel Spaceです。これらのアプリの主なターゲットユーザーは、ソーシャルメディアアプリなど、特定のアプリで複数のアカウントを持つユーザーです。仮想化アプリを使用すると、エンドユーザーは単一のアプリの複数のインスタンスを同時に実行できます。ログアウトして別のアカウントにサインインする必要はありません。一部の仮想化アプリは、プライバシー強化アプリを謳っています。仮想空間にインストールされたアプリは、通常のAndroidシステムから何らかの形で分離されていることがよくありますが、必ずしもそうとは限りません。

脅威アクターのツールとしての仮想化アプリ

ユーザー層のもう一方の端には、脅威アクターがいます。仮想化は様々な理由で活用されます。仮想化の主な利点の一つは、仮想化されたアプリがターゲットアプリよりも高い特権プロセスを持つため、仮想化アプリがターゲットアプリと自由にやり取りできることです。仮想化は、仮想化アプリのサンドボックス内により許容度の高い環境を作り出すことで、Androidのセキュリティモデルを何らかの方法で回避します。多くの仮想化アプリは、「偽のルート」アクセスや、Xposedのようなフックフレームワークによって提供されるフックサービスを提供しています。そして、これらはすべてルート化されていないスマートフォンでも実行できるため、検証済みのデバイスで悪意のあるアクティビティを実行できる可能性があります。

仮想化環境では、次のような悪意のあるアクティビティが発生する可能性があります。

  • ゲームでの不正行為: 仮想化環境で実行される GameGuardian などのソフトウェアは、ルート化されたデバイスで実行できるほぼすべての機能を実現できます。
  • フッキング: VirtualXposedのような仮想化ソフトウェアは、仮想化されたアプリにXposedモジュールを挿入することで、その動作を変更することができます。例えば、VirtualXposedはYouTubeアプリの広告をバイパスするために使用できます。
  • 偽のルート: 一部の仮想化アプリは、昇格された権限でソフトウェアを実行するために、偽の「スーパーユーザー」へのアクセスを提供します。例えば、偽のルートユーザーを使用して、ルート化されていないデバイスでFridaサーバーを実行できます。
  • 仮想ロケーション: 仮想化アプリの多くは、位置情報の偽装サービスを提供しています。これは、位置情報に基づく認証を回避したり、Pokémon GOのような位置情報を利用するゲームで不正行為をしたりするのに特に役立ちます。
  • 動的解析: 人気のある仮想化アプリの中にはオープンソースのものもあり、カスタムプラグインを通してカスタマイズできます。プラグイン内から、ユーザーは仮想化されたアプリケーションを動的にインストルメント化し、アプリケーションの動作を観察し、ネットワークトラフィックをキャプチャすることができます。

図1 GameGuardianユーザーによる各仮想空間の人気度

図1 – GameGuardianユーザーによる各仮想空間の人気度

仮想化アプリのカテゴリ

アプリ仮想化は幅広い用語です。アプリ仮想化は様々な方法で実現可能であり、必ずしもAndroidシステムを仮想化する必要はありません。アプリ仮想化は、アプリケーションを通常とは異なる環境で実行するという概念を一般化するのに適した用語です。アプリ仮想化には様々な種類がありますが、以下にいくつか例を挙げます。

仕事プロファイルの分離

一部の仮想化アプリは、独立した仕事用プロファイルを作成し、その中に仮想化アプリを分離することで仮想化を実現しています。仕事用プロファイルとは、Androidデバイス上で「仕事用」アプリとデータを個人用アプリとデータから分離するための設定です。仕事用プロファイルは、デバイスの他の部分から分離された別の場所に存在します。仕事用プロファイルでアプリを分離することは必ずしも良いことではありません。なぜなら、仕事用プロファイルで分離されたアプリは同じ仕事用プロファイル内のアプリしか認識できないため、通常のユーザー空間でルートアクセスを使用して実行されている可能性のある悪意のあるアプリを検出できない可能性が高いからです。例えば、このような攻撃戦略は、ルート権限を持つルート化されたデバイスでGameGuardianを使用し、分離された仕事用プロファイル内でターゲットアプリケーションを実行するゲームの脅威アクターによって悪用されています。「Islandアプリは、Google Playストアで無料で入手できるアプリケーションで、ユーザーは特定のアプリケーションを複製できます。Islandアプリは、「仕事用プロファイルの分離」の良い例でもあります。」

クローン作成と再パック

別の種類の仮想化アプリは、対象アプリケーションのクローン作成または再パッケージ化によって仮想化を実現します。通常、このプロセスは簡単です。まず、これらのアプリはコピーされ、パッケージ名が何らかの一意のパッケージ名に変更されます。あらゆる種類のチェックと検証を回避するために、このような仮想化アプリは、パッケージ名と署名の取得を行うメソッドにパッチを当てたりフックしたりする独自のコードを挿入し、アプリケーションに元のアプリであると信じ込ませます。アプリケーションIDが変更されているため、元のアプリとクローンアプリの両方が同じAndroidシステム上に共存できます。このタイプの仮想化は、仮想化のオーバーヘッドがないため、最も高速です。AppClonerアプリは、この種のアプリの一例です。AppClonerはGoogle Playストアでも無料で入手できます。

アプリケーションホスト

「アプリケーションホスト」は、別の種類の仮想化技術です。アプリケーションホストは、対象アプリケーションを自身にロードして実行することで仮想化を行います。これはアプリを仮想化する比較的シンプルなアプローチですが、一定の制限があります。例えば、このようなアプリケーションホストは通常​​、一度に1つのアプリインスタンスしか実行できず、同時に実行できるアプリの数も非常に限られています。このような戦略を採用する仮想化技術の中には、SDKとして提供されているものもあり、ユーザーは特定の機能を持つ特定のアプリ専用のホストアプリを作成できます。このようなSDKは、フックフレームワークの利用や、インストルメンテーションによる一般的なアプリケーションの動的解析にも役立ちます。VirtualApkとPhantomは、このような仮想化アプローチの代表的な例です。

Androidシステム全体の仮想化

一部の仮想化アプリは、Androidシステム全体を仮想化します。中には、任意のROM(読み取り専用メモリ)イメージからAndroidシステム全体をブートするものもあります。このタイプの仮想化は最も遅いですが、このアプローチは文字通りAndroidスマートフォン全体をエミュレートするため、最も強力です。カスタムROMイメージまたはファイルは、パッチ適用、カスタマイズ、Magiskによるルート化などが可能です。仮想化されたアプリケーションが外部のAndroidシステムと対話し、そこで何が起こっているかを知る方法はほとんどありません。このような仮想化を使用すると、通常に見える仮想化されたAndroidシステムでルートアクセスなしでターゲットアプリケーションを実行できますが、元のAndroidシステムをルート化し、追加の動的分析ソフトウェアを実行して仮想化されたアプリを改ざんすることができます。Twoyiは、Androidシステム全体を仮想化する最も人気のあるアプリの1つです。

部分的な Android ランタイム仮想化

最後に、一部の仮想化アプリはAndroidシステムの部分的な仮想化を実現します。通常、このような仮想化アプリは、プロキシやダミープロセスを用いてAndroidシステムの大部分を再構築します。仮想化されたアプリプロセスとシステムの他の部分との通信中に、多くの情報を傍受しパッチを適用する必要があるため、フックはこのような仮想化技術において非常に重要な部分です。また、この方法は、異なるAndroidバージョン間や異なるAndroidデバイスベンダー間での維持が複雑です。通常、このような仮想化アプローチは安定性の問題を抱えています。しかし、部分的なAndroidランタイム仮想化技術は、最も強力な仮想化技術の1つです。適切に実装された部分的なAndroidランタイム仮想化は、完全に検出不可能になる可能性があります。VirtualAppは、利用可能な最も有名な部分的なAndroidランタイム仮想化技術の1つです。

仮想化アプリは信頼できますか?

前述の通り、Google Playストアにある多くの仮想化アプリは、仮想化によってユーザーのプライバシーが向上すると一般ユーザーに信じ込ませるために、プライバシーの向上を謳っています。しかし、この主張は鵜呑みにすべきではありません。仮想化アプリがシステムの他の部分から分離されているという事実は、プライバシーの向上につながります。しかし、仮想化アプリは、Androidシステムにインストールされている他のどのサードパーティ製アプリよりも、仮想化アプリに対して多くの権限を持っています。仮想化アプリがこれらの権限を利用してユーザーの個人情報を盗んでいないという保証はありません。

仮想化アプリの多くは広告で肥大化しています。中には、仮想化アプリにアドウェアコードを挿入するものもあります。ユーザーの同意なしに仮想化アプリケーションに挿入される可能性のあるものは、ほぼ無限にあります。

また、仮想化ソフトウェアの使用は、仮想化されたアプリケーションの利用規約に違反する可能性があり、仮想化ソフトウェアの使用はアカウントの禁止につながる可能性があります。

 

ブログシリーズの第2部で会話を続けましょう。 こちらをクリックしてください。

お勧めの関連ガジェット