Android Enterprise Work Profile 필수 앱 대체
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을 제출하여 해킹 트릭을 공유하세요.
공격 표면
Android Enterprise Work Profiles are implemented as secondary Android users (BYOD example: user 0 = personal, user 1 = work). 각 사용자는 독립적인 /data/user/<id> 트리, 시스템 앱, Play Services 인스턴스 및 MDM이 관리하는 정책 객체를 가집니다. MDM(예: Microsoft Intune)이 Work Profile에 대해 앱을 required로 표시하면, **Work-Profile Play Store (Finsky)**는 주기적으로 패키지 존재를 확인하고 누락된 경우 자동으로 설치합니다.
CVE-2023-21257 패치로 DISALLOW_INSTALL_APPS 또는 DISALLOW_DEBUGGING_FEATURES가 설정된 경우 ADB sideload를 차단하더라도, 다음 체인은 공격자가 any Intune-required Work Profile app을 임의 코드로 교체할 수 있게 합니다:
- Android Studio의 “Install for all users” 경로를 악용해 관리되는 패키지의 업데이트처럼 보이는 악성 APK를 스테이징합니다.
- MDM이 필수 앱이 누락된 것을 감지하도록 둡니다. Intune은 Work-Profile Finsky 인스턴스에 재설치를 트리거합니다.
- Finsky는 스테이징된 APK 버전과 Play Store 버전을 비교하고 원래 제한을 우회해 **가장 높은
versionCode**를 조용히 설치합니다.
정찰 및 사전 조건 확인
- Confirm multi-user layout and user IDs:
adb shell pm list users
# Expect user 0 = Owner, user 1 = Work profile (or higher if multiple profiles exist)
- 업무 사용자로의 직접 설치는 정책 상 실패합니다(예상 오류):
adb install --user 1 legit.apk
# java.lang.SecurityException: Shell does not have permission to access user 1
- 잠시 동안 잠금 해제된 BYOD에 대한 물리적 접근이 있어야 Developer Options + USB debugging을 활성화할 수 있습니다.
- 필수로 표시된 Work-Profile 앱의 패키지 이름을 식별하세요 (예:
com.workday.workdroidapp).
Android Studio의 다중 사용자 설치기 무기화
Android Studio의 Run/Debug configuration은 여전히 INSTALL_ALL_USERS 플래그로 빌드를 푸시할 수 있습니다. 실행하기 전에 Deploy as instant app → Install for all users를 활성화하세요.
관리되는 앱과 동일한 패키지 이름을 사용하고 PackageManager/Finsky가 새로운 릴리스로 인식하도록 **훨씬 더 큰 versionCode**를 가진 악성 페이로드를 빌드하세요:
android {
namespace = "com.workday.workdroidapp"
defaultConfig {
applicationId = "com.workday.workdroidapp"
versionCode = 900000004
versionName = "9000000004.0"
}
}
When Android Studio deploys:
- **Personal user (0)**는 악성 패키지를 정상적으로 설치한다.
- **Work Profile user (1)**는 APK를 임시 스테이징 영역에 수신하고 이를 업데이트로 처리하려고 시도한다.
- CVE-2023-21257의 로직은 사용자가 제한되어 있음을 감지 → 설치가 거부되지만, 정상적으로 관리되던 앱은 제거된 것으로 표시되고 스테이징된 APK는 캐시에 남아 있다.
Intune/Finsky auto-install bypass
Within ~1–10 minutes (policy refresh interval):
- Intune/Company Portal는 Work Profile에서 필수 패키지가 누락된 것을 감지한다.
- Work-Profile의 Finsky 인스턴스에 재설치를 요청한다.
- 버전 확인 과정에서 Finsky는 다음을 비교한다:
- Play Store의
com.workday.workdroidapp메타데이터. - 이전 설치 시도에서 로컬에 스테이징된 APK.
- 로컬 빌드가 **가장 높은
versionCode**를 가지므로, Finsky는 이를 최신 릴리스로 신뢰하고 제한된 Work Profile에 설치한다 (DISALLOW_INSTALL_APPS/DISALLOW_DEBUGGING_FEATURES검사 재적용 없이).
malicious binary는 이제 정식 패키지 이름으로 Work Profile 내부에 존재하며 MDM에 의해 준수되는 것으로 간주된다.
Post-exploitation opportunities
- Work-profile data access – 다른 엔터프라이즈 앱들이 교체된 패키지에 바인딩된 Intents/content providers를 계속 신뢰하여 내부 데이터 도난 및 Work Profile에서 공격자 인프라로의 은밀한 exfiltration을 가능하게 한다.
- Per-app VPN hijack – 교체된 패키지가 Intune per-app VPN(MS Tunnels + Defender)에 매핑되어 있으면, 악성 빌드는 자동으로 VPN 프로필을 상속받아 공격자 제어 프로세스에서 내부 호스트에 직접 접근할 수 있다.
- Persistence – MDM이 이제 해당 앱이 설치되어 있다고 믿기 때문에, 사용자가나 수비자가 이를 제거할 때마다 reinstall the malicious build하여 BYOD Work Profiles에 장기적인 거점을 제공한다.
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을 제출하여 해킹 트릭을 공유하세요.


