Android Application-Level Virtualization (App Cloning)

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

Application-level virtualization (aka app cloning/container frameworks such as DroidPlugin-class loaders) は、ライフサイクル、class loading、ストレージ、権限を制御する単一のホストアプリ内で複数の APK を実行します。Guests はしばしばホストの UID 内で実行され、Android の通常のアプリ毎の隔離を崩し、システムからは単一のプロセス/UID として見えるため検出が困難になります。

Baseline install/launch vs virtualized execution

  • Normal install: Package Manager が APK を抽出 → /data/app/<rand>/com.pkg-<rand>/base.apkunique UID を割り当て、Zygote が classes.dex をロードするプロセスを fork します。
  • Dex load primitive: DexFile.openDexFile() は絶対パスを使って openDexFileNative() に委譲します。virtualization レイヤはこれをフック/リダイレクトして、ホスト管理下のパスから guest dex をロードすることが一般的です。
  • Virtualized launch: Host は its UID の下でプロセスを起動し、カスタムローダで guest の base.apk/dex をロードし、Java プロキシ経由でライフサイクルコールバックを公開します。Guest のストレージ API 呼び出しはホスト管理のパスにリマップされます。

Abuse patterns

  • Permission escalation via shared UID: Guests はホスト UID 下で実行され、guest manifest に宣言されていなくても ホストが付与されたすべての権限 を継承できることがあります。過剰に権限を持つホスト(巨大な AndroidManifest.xml)は「permission umbrellas」になります。
  • Stealthy code loading: Host は openDexFileNative/class loaders をフックして、guest dex を実行時に注入、置換、またはインストルメントし、静的解析を回避します。
  • Malicious host vs malicious guest:
  • Evil host: dropper/executor として動作し、guest の振る舞いをインストゥルメント/フィルタリングしたり、クラッシュを改ざんします。
  • Evil guest: 共有 UID を悪用して他の guest のデータにアクセスしたり、ptrace を使ったり、ホストの権限を悪用します。

Fingerprinting & detection

  • Multiple base.apk in one process: コンテナは同一 PID に複数の APK をマップしていることが多いです。
adb shell "cat /proc/<pid>/maps | grep base.apk"
# Suspicious: host base.apk + unrelated packages mapped together
  • Hooking/instrumentation artifacts: maps 内で既知のライブラリ(例: Frida)を探し、ディスク上で確認します。
adb shell "cat /proc/<pid>/maps | grep frida"
adb shell "file /data/app/..../lib/arm64/libfrida-gadget.so"
  • Crash-tamper probe: 意図的に例外(例: NPE)を発生させ、プロセスが通常どおり終了するかを観察します。ライフサイクル/クラッシュ経路をインターセプトするホストはクラッシュを吸収したり書き換えたりする可能性があります。

Hardening notes

  • Server-side attestation: 敏感な操作は Play Integrity トークンの背後に置き、動的にロードされた guest ではなく正当なインストールのみをサーバー側で受け入れるようにします。
  • Use stronger isolation: 高度に敏感なコードについては、UID を共有する app-level コンテナの代わりに Android Virtualization Framework (AVF) / TEE バックの実行を選択してください。

References

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする