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 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:

  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 ์ง€์›ํ•˜๊ธฐ