Особенности и подходы к тестированию мобильных приложений
В этой статье выдали теоретическую базу по тестированию мобильных приложений: что здесь важно учитывать и какие методы можно использовать.
Особенности пентеста мобильных приложений
Разнообразие платформ. Самые популярные — это Android и iOS, и каждая из них имеет свои особенности безопасности, средства разработки и наборы API.
Мобильные приложения могут взаимодействовать с различными серверами и сервисами через API, подразумевая необходимость тестирования не только самого приложения, но и его облачных компонентов и сторонних интеграций.
Существует множество устройств с разными размерами экрана, аппаратным обеспечением и версиями операционных систем. Это не сказать, что сильно усложняет процесс, но точно делает его дольше.
Главные мобильные угрозы: ненадежное хранение данных, уязвимые внутренние и внешние интерфейсы связи, а также угрозы, связанные с конфигурацией и разрешениями приложений.
В целом для мобильных подойдет и база: Burp Suite, OWASP ZAP. Но порой нужно что-то более заточенное под мобильники. Например, MobSF (Mobile Security Framework).
Подходы к тестированию на безопасность мобильный приложений
Что важно помнить: методов много, их можно и даже нужно комбинировать между собой. Вот их список:
Черный ящик (Black Box). Тестирование без знания внутренней структуры приложения. Здесь пентестер ближе всего имитирует злоумышленника.
Белый ящик (White Box). Пентестер имеет полный доступ к исходному коду, архитектуре и документации приложения. Лучше всего подойдет на ранних этапах разработки.
Серый ящик (Grey Box). Тестировщик имеет частичный доступ к информации о системе и использует эту информацию для более эффективного поиска уязвимостей.
Динамический анализ. В real-time пентестер анализирует выполнимые процессы приложения на эмуляторе или реальном устройстве для обнаружения уязвимостей.
Статический анализ. Анализ кода, бинарных файлов и других составляющих приложения без их выполнения.
Анализ сетевого трафика между приложением и сервером (или другими точками конечного доступа). Это помогает выявить уязвимости в передаче данных.
Манипуляция средой выполнения. Использование инструментов для модификации среды выполнения (например, root/Jailbreak на устройствах) для выявления уязвимостей, которые могут быть эксплуатированы при изменении окружения приложения.
Аудит разрешений. Проверка прав, которые приложение запрашивает при установке.
Пентест внешних сервисов, API и библиотек, используемых мобильным приложением.
Исследование файловой системы. По сути аудит файлов, хранящихся на устройстве, на предмет некорректного хранения конфиденциальных данных.
Тестирование логики приложения. Проверка корректности бизнес-логики приложения и её устойчивости к манипуляциям.
Реверс-инжиниринг. Разборка приложения на составные компоненты для получения доступа к логике приложения и выявления потенциальных уязвимостей.
Фаззинг. Автоматизированный метод пентестирования, при котором в систему подаются случайные, неправильные или неожиданные данные для раскрытия уязвимостей.
Этапы пентеста мобильных приложений
Они не так сильно отличаются от привычного (если можно так сказать) пентеста. Но мы на всякий случай еще раз дадим поэтапный план.
Планирование: определить цель, области покрытия и методологий тестирования.
Сбор информации: изучить приложения, его функциональности и среды выполнения.
Статический анализ: проанализировать код приложения на предмет недостатков в безопасности без его исполнения.
Динамический анализ: проанализировать поведение приложения во время выполнения, в том числе тестирование на уязвимости и проверка работы сетевых запросов.
Анализ шифрования: проверить на корректность использования криптографических протоколов и алгоритмов.
Тестирование аутентификации и сессий: проверить механизмы аутентификации и управления сессиями.
Проверить обработку данных: исследовать безопасности сохранения, передачи и обработки данных пользователя.
Эксплуатация уязвимостей: попытаться использовать найденные уязвимости для подтверждения рисков.
Анализ сторонних библиотек и компонентов: проверить использованные внешние компоненты на предмет уязвимостей.
Отчет. Обычно в него входят какие мы уязвимости нашли, как их можно устранить, а также руководство по улучшению безопасности приложения.
Last updated