Android Enterprise Work Profile Reemplazo de aplicación requerida

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Superficie de ataque

Android Enterprise Work Profiles are implemented as secondary Android users (BYOD example: user 0 = personal, user 1 = work). Cada usuario tiene árboles independientes /data/user/<id>, system apps, Play Services instances y objetos de políticas mantenidos por el MDM. Cuando un MDM como Microsoft Intune marca una app como required para el Work Profile, el Work-Profile Play Store (Finsky) confirma periódicamente que el paquete está presente y lo instala automáticamente si falta.

Incluso después del parche CVE-2023-21257 que bloquea ADB sideloads cuando DISALLOW_INSTALL_APPS o DISALLOW_DEBUGGING_FEATURES están establecidos, la siguiente cadena permite que un atacante reemplaze cualquier Intune-required Work Profile app con código arbitrario:

  1. Abusar de la ruta de Android Studio “Install for all users” para colocar un APK malicioso que parezca una actualización del paquete gestionado.
  2. Permitir que el MDM detecte que falta la app requerida. Intune desencadena la instancia Work-Profile Finsky para reinstalarla.
  3. Finsky compara la versión del APK colocado con la versión de Play Store e instala silenciosamente el versionCode más alto, eludiendo la restricción original.

Recon y comprobaciones previas

  • 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)
  • Las instalaciones directas en el usuario de trabajo fallan por la política (error esperado):
adb install --user 1 legit.apk
# java.lang.SecurityException: Shell does not have permission to access user 1
  • Debes tener acceso físico temporal a un BYOD desbloqueado para habilitar Developer Options + USB debugging.
  • Identifica el nombre de paquete de una app de Work-Profile marcada como required (p. ej. com.workday.workdroidapp).

Explotando el instalador multiusuario de Android Studio

La configuración Run/Debug de Android Studio todavía puede desplegar builds con la bandera INSTALL_ALL_USERS. Antes de ejecutar, habilita Deploy as instant appInstall for all users.

Compila el payload malicioso con el mismo nombre de paquete que la app gestionada y un versionCode mucho mayor para que PackageManager/Finsky lo trate como una versión más reciente:

android {
namespace = "com.workday.workdroidapp"
defaultConfig {
applicationId = "com.workday.workdroidapp"
versionCode = 900000004
versionName = "9000000004.0"
}
}

Cuando Android Studio despliega:

  1. Personal user (0) instala el paquete malicioso normalmente.
  2. Work Profile user (1) recibe el APK en un área de staging temporal y se intenta tratar como una actualización.
  3. La lógica de CVE-2023-21257 detecta que el usuario está restringido → la instalación es denegada, pero la app legítima gestionada se marca como desinstalada y el APK staged queda en caché.

Intune/Finsky auto-install bypass

En aproximadamente ~1–10 minutos (intervalo de actualización de políticas):

  1. Intune/Company Portal detecta que el paquete requerido falta en el Work Profile.
  2. A la instancia de Finsky del Work Profile se le pide que lo reinstale.
  3. Durante la resolución de versiones Finsky compara:
  • Metadatos de Play Store para com.workday.workdroidapp.
  • El APK staged local del intento de instalación anterior.
  1. Debido a que la build local tiene el mayor versionCode, Finsky la considera la release más reciente y la instala en el Work Profile restringido sin volver a aplicar las comprobaciones DISALLOW_INSTALL_APPS / DISALLOW_DEBUGGING_FEATURES.

El binario malicioso ahora reside dentro del Work Profile bajo el nombre de paquete legítimo y es considerado conforme por el MDM.

Post-exploitation opportunities

  • Work-profile data access – otras apps empresariales continúan confiando en Intents/content providers vinculados al paquete reemplazado, permitiendo el robo interno de datos y la exfiltración encubierta desde el Work Profile hacia infraestructura controlada por el atacante.
  • Per-app VPN hijack – si el paquete reemplazado está mapeado a una Per-app VPN de Intune (MS Tunnels + Defender), la build maliciosa hereda automáticamente el perfil VPN, dando acceso directo a hosts internos desde un proceso controlado por el atacante.
  • Persistence – puesto que el MDM ahora cree que la app requerida está instalada, volverá a reinstalar la build maliciosa cada vez que el usuario o el defensor la eliminen, proporcionando un punto de apoyo a largo plazo en Work Profiles BYOD.

References

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks