# Особенности и подходы к тестированию мобильных приложений

### Особенности пентеста мобильных приложений&#x20;

1. Разнообразие платформ. Самые популярные — это Android и iOS, и каждая из них имеет свои особенности безопасности, средства разработки и наборы API.&#x20;
2. Мобильные приложения могут взаимодействовать с различными серверами и сервисами через API, подразумевая необходимость тестирования не только самого приложения, но и его облачных компонентов и сторонних интеграций.
3. Существует множество устройств с разными размерами экрана, аппаратным обеспечением и версиями операционных систем. Это не сказать, что сильно усложняет процесс, но точно делает его дольше.
4. Главные мобильные угрозы: ненадежное хранение данных, уязвимые внутренние и внешние интерфейсы связи, а также угрозы, связанные с конфигурацией и разрешениями приложений.
5. В целом для мобильных подойдет и база: Burp Suite, OWASP ZAP. Но порой нужно что-то более заточенное под мобильники. Например, MobSF (Mobile Security Framework).

### Подходы к тестированию на безопасность мобильный приложений

Что важно помнить: методов много, их можно и даже нужно комбинировать между собой. Вот их список:[ ](https://notes.kraken-security.ru/kraken/krupicy-znanii/kakie-est-vidy-pentesta)

1. [Черный ящик](https://notes.kraken-security.ru/kraken/krupicy-znanii/kakie-est-vidy-pentesta) (Black Box). Тестирование без знания внутренней структуры приложения. Здесь пентестер ближе всего имитирует злоумышленника.&#x20;
2. [Белый ящик](https://notes.kraken-security.ru/kraken/krupicy-znanii/kakie-est-vidy-pentesta) (White Box). Пентестер имеет полный доступ к исходному коду, архитектуре и документации приложения. Лучше всего подойдет на ранних этапах разработки.
3. [Серый ящик](https://notes.kraken-security.ru/kraken/krupicy-znanii/kakie-est-vidy-pentesta) (Grey Box). Тестировщик имеет частичный доступ к информации о системе и использует эту информацию для более эффективного поиска уязвимостей.
4. Динамический анализ. В real-time пентестер анализирует выполнимые процессы приложения на эмуляторе или реальном устройстве для обнаружения уязвимостей.
5. Статический анализ. Анализ кода, бинарных файлов и других составляющих приложения без их выполнения.
6. Анализ сетевого трафика между приложением и сервером (или другими точками конечного доступа). Это помогает выявить уязвимости в передаче данных.
7. Манипуляция средой выполнения. Использование инструментов для модификации среды выполнения (например, root/Jailbreak на устройствах) для выявления уязвимостей, которые могут быть эксплуатированы при изменении окружения приложения.
8. Аудит разрешений. Проверка прав, которые приложение запрашивает при установке.
9. Пентест внешних сервисов, API и библиотек, используемых мобильным приложением.
10. Исследование файловой системы. По сути аудит файлов, хранящихся на устройстве, на предмет некорректного хранения конфиденциальных данных.
11. Тестирование логики приложения. Проверка корректности бизнес-логики приложения и её устойчивости к манипуляциям.
12. Реверс-инжиниринг. Разборка приложения на составные компоненты для получения доступа к логике приложения и выявления потенциальных уязвимостей.
13. Фаззинг. Автоматизированный метод пентестирования, при котором в систему подаются случайные, неправильные или неожиданные данные для раскрытия уязвимостей.

### Этапы пентеста мобильных приложений

Они не так сильно отличаются от привычного (если можно так сказать) пентеста. Но мы на всякий случай еще раз дадим поэтапный план.&#x20;

1. Планирование: определить цель, области покрытия и методологий тестирования.
2. Сбор информации: изучить приложения, его функциональности и среды выполнения.
3. Статический анализ: проанализировать код приложения на предмет недостатков в безопасности без его исполнения.
4. Динамический анализ: проанализировать поведение приложения во время выполнения, в том числе тестирование на уязвимости и проверка работы сетевых запросов.
5. Анализ шифрования: проверить на корректность использования криптографических протоколов и алгоритмов.
6. Тестирование аутентификации и сессий: проверить механизмы аутентификации и управления сессиями.
7. Проверить обработку данных: исследовать безопасности сохранения, передачи и обработки данных пользователя.
8. Эксплуатация уязвимостей: попытаться использовать найденные уязвимости для подтверждения рисков.
9. Анализ сторонних библиотек и компонентов: проверить использованные внешние компоненты на предмет уязвимостей.
10. Отчет. Обычно в него входят какие мы уязвимости нашли, как их можно устранить, а также руководство по улучшению безопасности приложения.
