Android 애플리케이션 수준 가상화 (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)는 단일 호스트 앱 내부에서 여러 APK를 실행하며 라이프사이클, 클래스 로딩, 스토리지, 권한을 제어합니다. 게스트는 종종 호스트 UID 내에서 실행되어 Android의 정상적인 앱별 격리를 무너뜨리고, 시스템이 하나의 프로세스/UID만 인식하므로 탐지가 어렵습니다.

Baseline install/launch vs virtualized execution

  • 정상 설치: Package Manager가 APK를 추출 → /data/app/<rand>/com.pkg-<rand>/base.apk에 배치하고 고유 UID를 할당한 다음 Zygote가 classes.dex를 로드하는 프로세스를 fork 합니다.
  • Dex load primitive: DexFile.openDexFile()는 절대 경로를 사용하여 openDexFileNative()에 위임합니다; 가상화 계층은 일반적으로 이를 후킹/리다이렉트하여 게스트 dex를 호스트가 제어하는 경로에서 로드합니다.
  • 가상화된 실행: 호스트가 자신의 UID로 프로세스를 시작하고, 커스텀 로더로 게스트의 base.apk/dex를 로드하며 Java 프록시를 통해 라이프사이클 콜백을 노출합니다. 게스트의 스토리지 API 호출은 호스트 제어 경로로 재매핑됩니다.

악용 패턴

  • Permission escalation via shared UID: 게스트는 호스트 UID로 실행되어 게스트 manifest에 선언되지 않았더라도 호스트가 부여한 모든 권한을 상속할 수 있습니다. 과도한 권한을 가진 호스트(거대한 AndroidManifest.xml)는 “permission umbrellas”가 됩니다.
  • Stealthy code loading: 호스트가 openDexFileNative/class loaders를 훅하여 런타임에 게스트 dex를 주입·교체·계측하여 정적 분석을 우회합니다.
  • Malicious host vs malicious guest:
  • Evil host: dropper/executor로 동작하며, 게스트 동작을 계측/필터링하고 크래시를 변조합니다.
  • Evil guest: 공유 UID를 악용해 다른 게스트의 데이터에 접근하거나 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 토큰 뒤에 두어 서버 측에서 실제 설치(동적으로 로드된 게스트가 아닌)만 허용되도록 하세요.
  • Use stronger isolation: 고도로 민감한 코드는 UID를 공유하는 앱 수준 컨테이너 대신 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 지원하기