Android Enterprise Work Profile Required-App Replacement

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks

Superfície de ataque

Android Enterprise Work Profiles são implementados como usuários Android secundários (exemplo BYOD: usuário 0 = pessoal, usuário 1 = trabalho). Cada usuário tem árvores independentes /data/user/<id>, system apps, instâncias do Play Services e objetos de policy mantidos pelo MDM. Quando um MDM como Microsoft Intune marca um app como required para o Work Profile, o Work-Profile Play Store (Finsky) periodicamente confirma que o pacote está presente e o instala automaticamente se estiver ausente.

Mesmo após o patch CVE-2023-21257 que bloqueia ADB sideloads quando DISALLOW_INSTALL_APPS ou DISALLOW_DEBUGGING_FEATURES estão definidos, a cadeia a seguir permite que um atacante substitua qualquer app do Work Profile exigido pelo Intune por código arbitrário:

  1. Abuse do caminho do Android Studio “Install for all users” para preparar um APK malicioso que pareça uma atualização do pacote gerenciado.
  2. Deixe o MDM perceber que o app required está ausente. Intune dispara a instância Finsky do Work-Profile para reinstalá-lo.
  3. Finsky compara a versão do APK preparado com a versão do Play Store e instala silenciosamente o maior versionCode, contornando a restrição original.

Reconhecimento e verificações pré-requisitos

  • Confirme o layout multiusuário e os IDs de usuário:
adb shell pm list users
# Expect user 0 = Owner, user 1 = Work profile (or higher if multiple profiles exist)
  • Instalações diretas no usuário de trabalho falham devido à política (erro esperado):
adb install --user 1 legit.apk
# java.lang.SecurityException: Shell does not have permission to access user 1
  • Você deve ter acesso físico temporário a um BYOD desbloqueado para ativar Opções do desenvolvedor + depuração USB.
  • Identifique o nome do pacote de um app Work-Profile marcado como required (ex.: com.workday.workdroidapp).

Weaponizando o instalador multiusuário do Android Studio

A configuração Run/Debug do Android Studio ainda pode enviar builds com a flag INSTALL_ALL_USERS. Antes de executar, habilite Deploy as instant appInstall for all users.

Construa o payload malicioso com o mesmo nome do pacote do app gerenciado e um versionCode muito maior para que o PackageManager/Finsky o trate como um lançamento mais novo:

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

When Android Studio deploys:

  1. Usuário pessoal (0) instala o pacote malicioso normalmente.
  2. Usuário do Work Profile (1) recebe o APK em uma área de staging temporária e tenta tratá-lo como uma atualização.
  3. A lógica do CVE-2023-21257 detecta que o usuário é restrito → a instalação é negada, mas o app gerenciado legítimo é marcado como desinstalado e o APK em staging permanece em cache.

Intune/Finsky auto-install bypass

Em ~1–10 minutos (intervalo de atualização de políticas):

  1. Intune/Company Portal detecta que o pacote obrigatório está ausente do Work Profile.
  2. A instância do Work-Profile Finsky é solicitada a reinstalá-lo.
  3. Durante a resolução de versão o Finsky compara:
  • Play Store metadata para com.workday.workdroidapp.
  • O APK local em staging da tentativa de instalação anterior.
  1. Porque o build local tem o maior versionCode, o Finsky confia nele como a release mais recente e o instala no Work Profile restrito sem re-aplicar as checagens DISALLOW_INSTALL_APPS / DISALLOW_DEBUGGING_FEATURES.

O binário malicioso agora reside dentro do Work Profile sob o nome de pacote genuíno e é considerado compatível pelo MDM.

Oportunidades pós-exploração

  • Acesso a dados do Work Profile – outros apps corporativos continuam a confiar em Intents/content providers vinculados ao pacote substituído, permitindo roubo de dados internos e exfiltração encoberta do Work Profile para a infraestrutura do atacante.
  • Sequestro de per-app VPN – se o pacote substituído estiver mapeado para uma per-app VPN do Intune (MS Tunnels + Defender), o build malicioso herda automaticamente o perfil de VPN, dando acesso direto a hosts internos a partir de um processo controlado pelo atacante.
  • Persistência – porque o MDM agora acredita que o app requerido está instalado, ele irá reinstalar o build malicioso sempre que o usuário ou o defensor o remover, proporcionando uma base de presença de longo prazo em Work Profiles BYOD.

References

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks