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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.


