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 は secondary Android users として実装されます(BYOD の例: user 0 = 個人用, user 1 = 仕事用)。各ユーザーは独立した /data/user/<id> ツリー、system apps、Play Services のインスタンス、および MDM によって管理されるポリシーオブジェクトを持ちます。Microsoft Intune のような MDM が Work Profile に対してアプリを required とマークすると、Work-Profile Play Store (Finsky) は定期的にパッケージが存在するか確認し、欠落していれば自動でインストールします。

DISALLOW_INSTALL_APPS または DISALLOW_DEBUGGING_FEATURES が設定されている場合に ADB sideload をブロックする CVE-2023-21257 の修正後でも、以下のチェーンにより攻撃者は 任意の Intune によって必須とされた Work Profile アプリを任意のコードに置き換える ことができます:

  1. Android Studio の “Install for all users” パスを悪用して、管理対象パッケージの更新のように見える悪意ある APK をステージングする。
  2. MDM に必須アプリが欠落していることを検出させる。Intune は Work-Profile の Finsky インスタンスに再インストールをトリガーさせる。
  3. Finsky はステージされた APK のバージョンと Play Store のバージョンを比較し、オリジナルの制限を回避して 最も高い versionCode をサイレントにインストールする。

偵察と前提条件の確認

  • マルチユーザーのレイアウトとユーザーIDを確認する:
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 を有効にしてください。
  • 必須 (required) とマークされた Work-Profile アプリの package name を特定してください(例: com.workday.workdroidapp)。

Android Studio のマルチユーザーインストーラを武器化する

Android Studio の Run/Debug 設定は INSTALL_ALL_USERS フラグ付きでビルドをプッシュできます。実行前に Deploy as instant appInstall for all users を有効にしてください。

管理対象アプリと 同じ package name を持ち、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 のロジックはユーザーが制限されていることを検出 → インストールは拒否され、しかし正当な managed アプリはアンインストール済みとしてマークされ、ステージングされた APK はキャッシュされたままになります。

Intune/Finsky auto-install bypass

およそ 1–10 分(ポリシーの更新間隔)以内に:

  1. Intune/Company Portal が Work Profile から必須パッケージが欠落していることを検出します。
  2. Work-Profile の Finsky インスタンスに再インストールが要求されます。
  3. バージョン解決の過程で Finsky は次を比較します:
    • Play Store のメタデータ(com.workday.workdroidapp)。
    • 前回のインストール試行でローカルにステージされた APK。
  4. ローカルビルドが 最も高い versionCode を持っているため、Finsky はそれを最新リリースとして信頼し、制限された Work Profile に対して DISALLOW_INSTALL_APPS / DISALLOW_DEBUGGING_FEATURES のチェックを再適用せずに インストールします。

悪意あるバイナリは正当なパッケージ名で Work Profile 内に配置され、MDM によって準拠していると見なされます。

Post-exploitation opportunities

  • Work-profile data access – 置き換えられたパッケージにバインドされた Intent や content provider を他の enterprise アプリが引き続き信頼するため、Work Profile 内の内部データ窃盗や攻撃者インフラへの隠密なエクスフィルトレーションが可能になります。
  • Per-app VPN hijack – 置き換えられたパッケージが Intune の per-app VPN(MS Tunnels + Defender)にマッピングされている場合、悪意あるビルドは自動的に VPN プロファイルを継承し、攻撃者管理下のプロセスから内部ホストへ直接アクセスできるようになります。
  • Persistence – MDM は必須アプリがインストールされていると信じるため、ユーザーや防御側が削除しても 悪意あるビルドを再インストール し続け、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をサポートする