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 지원하기

공격 표면

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을 임의 코드로 교체할 수 있게 합니다:

  1. Android Studio의 “Install for all users” 경로를 악용해 관리되는 패키지의 업데이트처럼 보이는 악성 APK를 스테이징합니다.
  2. MDM이 필수 앱이 누락된 것을 감지하도록 둡니다. Intune은 Work-Profile Finsky 인스턴스에 재설치를 트리거합니다.
  3. 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 appInstall 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:

  1. **Personal user (0)**는 악성 패키지를 정상적으로 설치한다.
  2. **Work Profile user (1)**는 APK를 임시 스테이징 영역에 수신하고 이를 업데이트로 처리하려고 시도한다.
  3. CVE-2023-21257의 로직은 사용자가 제한되어 있음을 감지 → 설치가 거부되지만, 정상적으로 관리되던 앱은 제거된 것으로 표시되고 스테이징된 APK는 캐시에 남아 있다.

Intune/Finsky auto-install bypass

Within ~1–10 minutes (policy refresh interval):

  1. Intune/Company Portal는 Work Profile에서 필수 패키지가 누락된 것을 감지한다.
  2. Work-Profile의 Finsky 인스턴스에 재설치를 요청한다.
  3. 버전 확인 과정에서 Finsky는 다음을 비교한다:
  • Play Store의 com.workday.workdroidapp 메타데이터.
  • 이전 설치 시도에서 로컬에 스테이징된 APK.
  1. 로컬 빌드가 **가장 높은 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 지원하기