Определение области тестирования мобильного приложения

Мобильный пентест требует чёткого определения границ тестирования перед началом работы. Область должна включать все компоненты приложения, которые находятся в контроле организации, включая клиентское приложение, бэкенд-сервисы, API-интерфейсы и используемые третьи сервисы. Важно установить контакт с владельцем приложения для согласования списка активов, которые будут протестированы, и получения письменного разрешения на проведение тестирования.

При определении области необходимо документировать версии операционных систем, на которых будет тестироваться приложение, используемые фреймворки и библиотеки, а также тип подключения (Wi-Fi, мобильная сеть). Следует также определить, будет ли тестирование проводиться с правами администратора устройства, на рутированных или джейлбрейканутых устройствах, так как это существенно влияет на возможности тестирования и спектр выявляемых уязвимостей.

    Моделирование угроз и критические области мобильных приложений

    Основные категории угроз для мобильных приложений включают небезопасное хранение данных, слабую аутентификацию, проблемы с шифрованием передачи данных и уязвимости логики приложения. При анализе угроз необходимо учитывать специфику мобильной платформы: возможность перехвата трафика через прокси, доступ к локальному хранилищу приложения, извлечение и анализ бинарного кода, а также взаимодействие с системными компонентами устройства.

    Приоритизация областей тестирования должна основываться на критичности обрабатываемых данных и последствиях компрометации. Приложения, работающие с финансовыми данными, персональной информацией или управляющие критичными устройствами, требуют более глубокого анализа. Следует определить, какие компоненты обрабатывают наиболее чувствительные данные и какие механизмы защиты уже реализованы.

      Анализ сетевого трафика и коммуникаций приложения

      Перехват и анализ трафика между клиентом и сервером является одной из основных техник мобильного пентеста. Для этого используются HTTPS-прокси, такие как Burp Suite или OWASP ZAP, которые позволяют просматривать и модифицировать HTTP-запросы. Установка корневого сертификата прокси на устройство позволяет перехватывать защищённые соединения и анализировать отправляемые данные в открытом виде.

      При анализе трафика необходимо обратить внимание на отсутствие шифрования, передачу конфиденциальной информации в незащищённом виде, использование устаревших версий TLS, наличие уязвимостей в валидации сертификатов и реализацию certificate pinning. Следует проверить, осуществляет ли приложение валидацию SSL-сертификатов серверов и устойчиво ли оно к атакам типа man-in-the-middle.

        Проверка безопасности локального хранилища и конфигурации

        Локальное хранилище данных на мобильном устройстве часто содержит конфиденциальную информацию: токены аутентификации, учётные данные, кэшированные данные пользователя. Необходимо проверить, где и как приложение сохраняет данные, включая базы данных SQLite, общие настройки (SharedPreferences на Android, UserDefaults на iOS), временные файлы и логи. Любые конфиденциальные данные должны быть зашифрованы с использованием стандартных криптографических библиотек операционной системы.

        Проверка должна включать анализ кэша браузера, истории поиска, завершённого текста и других механизмов автозаполнения, которые могут раскрывать конфиденциальную информацию. На Android следует проверить разрешения приложения и доступность данных другим приложениям через IPC механизмы. На iOS необходимо убедиться, что данные не сохраняются в резервных копиях и не доступны через screen recording функции.

          Анализ двоичного кода и обратная инженерия приложения

          Мобильные приложения подвержены риску обратной инженерии из-за возможности извлечения и анализа двоичного кода. На Android код может быть декомпилирован из APK-файла с использованием инструментов, которые преобразуют байт-код в исходный код, близкий к оригиналу. На iOS извлечение исполняемого файла из установленного приложения также возможно, хотя анализ в машинных кодах более трудоёмкий.

          При анализе необходимо проверить, содержит ли код конфиденциальную информацию: ключи шифрования, учётные данные, внутренние URL-адреса или токены API. Следует убедиться, что приложение использует обфускацию кода, что затрудняет анализ, и что критичные операции защищены дополнительными механизмами, такими как проверка целостности кода и детекция взлома приложения.

            Тестирование механизмов аутентификации и управления сеансами

            Уязвимости в реализации аутентификации часто приводят к компрометации учётных записей пользователей. Необходимо проверить, использует ли приложение стандартные и безопасные методы аутентификации, корректно ли реализованы механизмы восстановления пароля и смены учётных данных. Токены аутентификации должны иметь ограниченный срок действия и правильно храниться на устройстве.

            Проверка управления сеансами должна включать анализ логики выхода из приложения, истечения сеанса и обработки одновременных сеансов с одного устройства. Приложение не должно сохранять пароли в памяти дольше необходимого, пользовательские токены должны быть привязаны к устройству и сеансу. Следует убедиться, что приложение правильно обрабатывает сценарии потери сетевого соединения и восстановления сеанса после длительного перерыва.

              Проверка интеграции с платформой и системные уязвимости

              Мобильные приложения часто используют системные компоненты операционной системы, что может привести к уязвимостям через неправильное использование API платформы. На Android необходимо проверить корректность использования Intent-механизма, правильную работу с разрешениями, безопасность экспортированных компонентов (Activity, Service, BroadcastReceiver, ContentProvider). Утечки данных через logcat, временные файлы и недостаточная валидация входных данных могут привести к уязвимостям.

              На iOS следует проверить использование системных фреймворков, таких как KeyChain для хранения чувствительных данных, правильность работы с URL Schemes и Universal Links. Необходимо убедиться, что приложение не раскрывает информацию через pasteboard, уведомления и другие межпроцессные механизмы коммуникации. Также важно проверить корректность работы с файловой системой и защиту от атак через обработку специально сформированных файлов.

                Источники

                PENTEST.RED / RED JOURNAL