При проведении пентеста мобильных приложений нередко возникает необходимость извлечь APK для последующего статического анализа. В большинстве случаев эта задача решается стандартными средствами Android и ADB, однако ситуация существенно усложняется, если приложение установлено в Work Profile (рабочем профиле Android) на устройстве под управлением Microsoft Intune.
Еще по теме: Анализ APK-файлов на Android Termux
В данной статье разобран реальный практический кейс извлечения APK корпоративного приложения, доступного исключительно через Work Profile. Рассмотрены причины, по которым стандартные методы не работают, описаны неудачные попытки, приведено рабочее решение без root-доступа, а также показана автоматизация процесса с использованием MMSF.
Исходные условия и постановка задачи
Тестирование проводилось на корпоративном Android-устройстве, зарегистрированном в Microsoft Intune, со следующими параметрами:
- настроенный Work Profile с корпоративными приложениями
- целевое приложение доступно только внутри рабочего профиля
- усиленные политики безопасности Intune
- отсутствие root-доступа
- активные MDM-ограничения
Цель тестирования — извлечь APK приложения для статического анализа и поиска уязвимостей на уровне кода.
Почему стандартные методы извлечения не работают
Work Profile реализован в Android как отдельный пользовательский профиль (как правило, user ID 10 и выше). Это создает изолированную среду выполнения, предназначенную для разделения корпоративных и личных данных.
На практике это приводит к следующим ограничениям:
- стандартные ADB-команды не имеют доступа к данным приложений рабочего профиля
- файловая система жестко изолирована между профилями
- приложения из Work Profile не отображаются в стандартных списках пакетов без указания пользователя
Microsoft Intune добавляет дополнительные уровни защиты поверх стандартной модели Android:
- DLP-политики, запрещающие копирование корпоративных данных
- политики защиты приложений
- механизмы условного доступа в зависимости от состояния устройства
- дополнительные меры защиты, реализованные внутри самих корпоративных приложений
Даже при включенных developer options сохраняются жесткие ограничения:
- отсутствует прямой доступ к каталогам приложений рабочего профиля
- ADB shell ограничен при попытках работы с пользовательскими профилями
- команды package manager требуют повышенных привилегий
Неудачные попытки извлечения APK
Попытка 1: прямое извлечение через ADB
|
1 2 |
adb shell pm list packages --user 11 adb shell pm path com.company.enterprise.app --user 11 |
Результат: Permission denied либо крайне ограниченный вывод.
Причина: отсутствие прав доступа к данным Work Profile без root-доступа.
Попытка 2: использование root-доступа
Причина неудачи: политики Intune блокируют рутирование устройства и любые попытки получения привилегированного доступа.
Попытка 3: дамп через Package Manager
|
1 |
adb shell pm dump com.company.enterprise.app |
Результат: доступна лишь часть метаданных, путь к APK отсутствует.
Причина: ограничения Work Profile скрывают реальные пути к файлам приложения.
Попытка 4: прямой pull APK из рабочего профиля
|
1 2 3 4 |
adb shell pm path com.company.enterprise.app --user 11 adb pull /data/app/.../base.apk adb shell run-as com.company.enterprise.app --user 11 adb shell ls /data/user/11/com.company.enterprise.app/ |
Результат: Permission denied или unknown package.
Причина: строгая изоляция файловой системы Work Profile, сохраняющаяся даже при включенной отладке.
Установка приложения вне Work Profile
После серии неудачных попыток выяснилось, что приложение можно установить за пределами Work Profile, перенеся его в основной пользовательский профиль устройства.
Во многих случаях корпоративные приложения, распространяемые через рабочий профиль, технически являются обычными APK. Ограничения касаются механизма распространения и политики установки, а не самого приложения.
Общая логика решения
- определить имя пакета приложения
- установить уже существующее приложение в основной профиль пользователя
- извлечь APK стандартными средствами
Ручной процесс извлечения APK из рабочего профиля
Шаг 1: определение имени пакета
|
1 |
adb shell dumpsys activity top | grep ACTIVITY |
Команда позволяет определить текущее активное приложение и его имя пакета.
Шаг 2: установка приложения в основной профиль
|
1 |
adb shell pm install-existing --user 0 com.company.enterprise.app |
Команда указывает package manager установить уже имеющееся приложение из рабочего профиля в основной профиль пользователя (user 0).
Шаг 3: извлечение APK стандартными методами
|
1 2 3 |
adb shell pm list packages | grep com.company.enterprise.app adb shell pm path com.company.enterprise.app adb pull /data/app/com.company.enterprise.app-XXXXX/base.apk ./extracted_app.apk |
После этого APK доступен для статического анализа.
Автоматизация процесса с помощью MMSF
После успешного ручного извлечения был разработан модуль для MMSF, автоматизирующий весь рабочий процесс.
Установка и запуск MMSF
|
1 2 3 4 |
git clone https://github.com/St3v3nsS/MMSF.git cd MMSF python3 mmsfupdate.py python3 mmsf.py |
Использование модуля Work Profile
|
1 2 |
mmsf> usemodule workprofile mmsf (workprofile)> listmodules |
Автоматическое извлечение APK
|
1 2 3 4 |
mmsf (workprofile)> usemodule pull_apk mmsf (workprofile/pull_apk_user_0)> set mmsf (workprofile/pull_apk_user_0/set)> app com.company.enterprise.app mmsf (workprofile/pull_apk_user_0/set)> run |
Практические ограничения и нюансы
- Пентест должен выполняться исключительно при наличии соответствующего разрешения. Приложения Work Profile часто обрабатывают чувствительные корпоративные данные, поэтому необходимо строго соблюдать политики работы с информацией и документировать процесс тестирования.
- Приложение, установленное вне рабочего профиля, может работать иначе и требовать регистрации в Intune. По этой причине извлеченный APK целесообразно использовать преимущественно для статического анализа и анализа кода, учитывая отсутствие полного контекста корпоративной среды.
Заключение
- Изоляция Work Profile реализована эффективно и усложняет извлечение APK
- Многие приложения ограничены на уровне распространения, а не технической реализации
- Обходные решения существуют, но требуют понимания модели Android Enterprise
- Автоматизация с помощью MMSF значительно снижает трудозатраты
- Фиксация неудачных попыток помогает выстроить рабочую методологию
Извлечение APK из рабочего профиля на устройствах под управлением Microsoft Intune является нетривиальной задачей. Стандартные методы оказываются неэффективными из-за изоляции профилей и MDM-ограничений. Тем не менее перенос приложения в основной профиль пользователя позволяет обойти эти ограничения и выполнить извлечение APK стандартными средствами.
Автоматизация данного подхода в MMSF делает процесс воспроизводимым и удобным для использования в рамках мобильного пентеста.
ПОЛЕЗНЫЕ ССЫЛКИ:







