Android Application-Level Virtualization (App Cloning)

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Application-level virtualization (aka app cloning/container frameworks such as DroidPlugin-class loaders) führt mehrere APKs innerhalb einer einzigen Host-App aus, die Lifecycle, class loading, Storage und Berechtigungen kontrolliert. Gäste laufen häufig innerhalb der Host-UID, wodurch die normale pro-App-Isolierung von Android aufgehoben wird und die Erkennung erschwert wird, da das System nur einen Prozess/UID sieht.

Baseline install/launch vs virtualized execution

  • Normal install: Package Manager extrahiert das APK → /data/app/<rand>/com.pkg-<rand>/base.apk, weist eine einzigartige UID zu, und Zygote forkt einen Prozess, der classes.dex lädt.
  • Dex load primitive: DexFile.openDexFile() delegiert an openDexFileNative() und verwendet absolute Pfade; Virtualisierungsschichten hooken/redirecten dies häufig, um Guest-dex aus host-kontrollierten Pfaden zu laden.
  • Virtualized launch: Die Host-App startet einen Prozess unter ihrer UID, lädt das base.apk/dex des Gasts mit einem Custom Loader und stellt Lifecycle-Callbacks über Java-Proxies bereit. Storage-API-Aufrufe des Gasts werden auf host-kontrollierte Pfade umgemappt.

Abuse patterns

  • Permission escalation via shared UID: Gäste laufen unter der Host-UID und können alle vom Host gewährten Berechtigungen erben, selbst wenn diese nicht im Manifest des Gasts deklariert sind. Überberechtigte Hosts (umfangreiche AndroidManifest.xml) werden zu „permission umbrellas“.
  • Stealthy code loading: Der Host hookt openDexFileNative/class loader, um Guest-dex zur Laufzeit zu injecten, zu ersetzen oder zu instrumentieren und damit statische Analysen zu umgehen.
  • Malicious host vs malicious guest:
  • Evil host: fungiert als Dropper/Executor, instrumentiert/filtriert das Verhalten des Gasts, manipuliert Abstürze.
  • Evil guest: missbraucht die gemeinsame UID, um auf Daten anderer Gäste zuzugreifen, sie per ptrace anzugreifen oder Host-Berechtigungen auszunutzen.

Fingerprinting & detection

  • Multiple base.apk in one process: Ein Container mapped oft mehrere APKs im selben PID.
adb shell "cat /proc/<pid>/maps | grep base.apk"
# Suspicious: host base.apk + unrelated packages mapped together
  • Hooking/instrumentation artifacts: Suche in den maps nach bekannten libs (z. B. Frida) und prüfe sie auf der Festplatte.
adb shell "cat /proc/<pid>/maps | grep frida"
adb shell "file /data/app/..../lib/arm64/libfrida-gadget.so"
  • Crash-tamper probe: Löse gezielt eine Exception aus (z. B. NPE) und beobachte, ob der Prozess normal beendet; Hosts, die Lifecycle-/Crash-Pfade abfangen, können Abstürze verschlucken oder umschreiben.

Hardening notes

  • Server-side attestation: Schütze sensitive Operationen mittels Play Integrity-Tokens, sodass nur genuine Installs (nicht dynamisch geladene Gäste) serverseitig akzeptiert werden.
  • Use stronger isolation: Für hochsensible Logik bevorzuge das Android Virtualization Framework (AVF)/TEE-gestützte Ausführung statt app-level containers, die eine UID teilen.

References

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks