Android virtualizacija na nivou aplikacije (App Cloning)

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Application-level virtualization (aka app cloning/container frameworks such as DroidPlugin-class loaders) pokreće više APK-ova unutar jedne host aplikacije koja kontroliše lifecycle, class loading, storage i permissions. Gostujuće aplikacije često se izvršavaju unutar UID-a hosta, rušeći uobičajenu per-app izolaciju Androida i otežavajući detekciju jer sistem vidi jedan proces/UID.

Osnovna instalacija/pokretanje naspram virtualizovanog izvršavanja

  • Normal install: Package Manager izvlači APK → /data/app/<rand>/com.pkg-<rand>/base.apk, dodeljuje jedinstveni UID, i Zygote forkuje proces koji učitava classes.dex.
  • Dex load primitive: DexFile.openDexFile() delegira na openDexFileNative() koristeći apsolutne putanje; virtualizacioni slojevi često hook-uju/preusmeravaju ovo da bi učitali guest dex iz putanja kontrolisanih od strane hosta.
  • Virtualized launch: Host startuje proces pod svojim UID-om, učitava guest base.apk/dex pomoću custom loader-a i izlaže lifecycle callback-e preko Java proxy-ja. Pozivi guest storage API-ja se remapuju na putanje kontrolisane od strane hosta.

Obrasci zloupotrebe

  • Permission escalation via shared UID: Gosti se izvršavaju pod UID-om hosta i mogu naslediti sva permissions dodijeljena hostu čak i ako nisu deklarisana u guest manifestu. Hostovi sa prevelikim permissions (masivan AndroidManifest.xml) postaju „permission umbrellas“.
  • Stealthy code loading: Host hook-uje openDexFileNative/class loadere da ubaci, zameni ili instrumentiše guest dex u runtime-u, zaobilazeći statičku analizu.
  • Malicious host vs malicious guest:
  • Zlonamerni host: ponaša se kao dropper/executor, instrumentiše/filtrira ponašanje gosta, manipuliše padovima aplikacija.
  • Zlonamerni gost: zloupotrebljava shared UID da dosegne podatke drugih gostiju, izvrši ptrace nad njima ili iskoristi permissions hosta.

Fingerprinting & detection

  • Multiple base.apk in one process: Kontejner često mapira više APK-ova u istom PID-u.
adb shell "cat /proc/<pid>/maps | grep base.apk"
# Suspicious: host base.apk + unrelated packages mapped together
  • Hooking/instrumentation artifacts: Pretražite poznate lib-ove (npr. Frida) u maps i potvrdite na disku.
adb shell "cat /proc/<pid>/maps | grep frida"
adb shell "file /data/app/..../lib/arm64/libfrida-gadget.so"
  • Crash-tamper probe: Namerno izazovite izuzetak (npr. NPE) i posmatrajte da li proces normalno umire; hostovi koji interceptuju lifecycle/crash puteve mogu „progutati“ ili preraditi padove.

Napomene za hardening

  • Server-side attestation: Sprovodite osetljive operacije iza Play Integrity tokena tako da samo genuine instalacije (ne dinamicki učitani gosti) budu prihvaćene na serverskoj strani.
  • Use stronger isolation: Za visoko osetljiv kod, preferirajte Android Virtualization Framework (AVF)/TEE-backed izvršavanje umesto app-level kontejnera koji dele UID.

References

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks