Android Enterprise Work Profile Required-App Replacement

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Powierzchnia ataku

Android Enterprise Work Profiles są implementowane jako secondary Android users (przykład BYOD: user 0 = personal, user 1 = work). Każdy użytkownik ma niezależne drzewa /data/user/<id>, systemowe aplikacje, instancje Play Services oraz obiekty polityk utrzymywane przez MDM. Kiedy MDM taki jak Microsoft Intune oznacza aplikację jako required dla Work Profile, Work-Profile Play Store (Finsky) okresowo sprawdza, czy pakiet jest obecny i automatycznie go instaluje, jeśli brakuje.

Nawet po łatce CVE-2023-21257, która blokuje ADB sideloads gdy ustawione są DISALLOW_INSTALL_APPS lub DISALLOW_DEBUGGING_FEATURES, następujący ciąg pozwala atakującemu zastąpić dowolną aplikację Work Profile wymaganą przez Intune dowolnym kodem:

  1. Wykorzystaj ścieżkę Android Studio “Install for all users” do przygotowania złośliwego APK, który wygląda jak aktualizacja zarządzanego pakietu.
  2. Pozwól, by MDM wykrył brak wymaganej aplikacji. Intune uruchamia instancję Work-Profile Finsky, aby ją ponownie zainstalować.
  3. Finsky porównuje wersję przygotowanego APK z wersją w Play Store i cicho instaluje najwyższy versionCode, omijając pierwotne ograniczenie.

Recon and prerequisite checks

  • 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)
  • Bezpośrednie instalacje do użytkownika służbowego nie powiodą się z powodu polityki (oczekiwany błąd):
adb install --user 1 legit.apk
# java.lang.SecurityException: Shell does not have permission to access user 1
  • Musisz mieć tymczasowy fizyczny dostęp do odblokowanego BYOD, aby włączyć Developer Options + USB debugging.
  • Zidentyfikuj nazwę pakietu aplikacji Work-Profile oznaczonej jako required (np. com.workday.workdroidapp).

Wykorzystanie instalatora multi-user w Android Studio

Konfiguracja Run/Debug w Android Studio nadal może wgrywać buildy z flagą INSTALL_ALL_USERS. Przed uruchomieniem włącz Deploy as instant appInstall for all users.

Zbuduj złośliwy payload z taką samą nazwą pakietu co zarządzana aplikacja i z znacznie większym versionCode, aby PackageManager/Finsky potraktował go jako nowsze wydanie:

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

When Android Studio wdraża:

  1. Użytkownik osobisty (0) instaluje malicious package normalnie.
  2. Użytkownik Work Profile (1) otrzymuje APK w tymczasowym obszarze staging i próbuje potraktować go jako update.
  3. Logika CVE-2023-21257 widzi, że użytkownik jest restricted → install is denied, ale legitimate managed app zostaje oznaczona jako odinstalowana, a staged APK pozostaje w cache.

Intune/Finsky auto-install bypass

W ciągu ~1–10 minut (interwał odświeżania polityk):

  1. Intune/Company Portal wykrywa, że required package brakuje w Work Profile.
  2. Work-Profile Finsky zostaje poproszony o reinstalację.
  3. Podczas rozwiązywania wersji Finsky porównuje:
  • Play Store metadata dla com.workday.workdroidapp.
  • Lokalne staged APK z poprzedniej próby instalacji.
  1. Ponieważ lokalna kompilacja ma najwyższy versionCode, Finsky ufa, że to najnowsze wydanie i instaluje je do restricted Work Profile bez ponownego stosowania kontroli DISALLOW_INSTALL_APPS / DISALLOW_DEBUGGING_FEATURES.

Malicious binary teraz znajduje się w Work Profile pod genuine package name i jest uznawany za zgodny przez MDM.

Post-exploitation opportunities

  • Work-profile data access – inne enterprise apps nadal ufają Intents/content providers powiązanym z zastąpionym package, co umożliwia kradzież wewnętrznych danych i tajne exfiltration z Work Profile do infrastruktury atakującego.
  • Per-app VPN hijack – jeśli zastąpiony package jest mapowany do Intune per-app VPN (MS Tunnels + Defender), malicious build automatycznie odziedzicza profil VPN, dając bezpośredni dostęp do hostów wewnętrznych z procesu kontrolowanego przez atakującego.
  • Persistence – ponieważ MDM teraz wierzy, że required app jest zainstalowana, będzie reinstalować malicious build za każdym razem gdy użytkownik lub obrońca ją usunie, zapewniając długoterminową pozycję na BYOD Work Profiles.

References

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks