Динамическое тестирование Андроид приложений
Динамическое тестирование проводится с целью выявить уязвимости по время функционирования приложения. В данной статье хочу поделиться нескольким способамии тестирования приложения под Андроид. Также покажу как конфигурировать и настраивать оборудование. Кому интересно, добро пожаловать под кат.
Динамическое тестирование подразумевает — анализ логов приложения, анализ трафика приложения, поиск багов во время работы и др. Для тестирования нужно настроить виртуальную машину на Genimotion, как это делается описано здесь.
Какие тулзы используются для динамического анализа:
- BurpSuite;
- Inspakage;
- Pidcat или другое приложение с правами для чтения логов.
Как тестировать с помощью BurpSuite
Сначала нужно настроить прокси и импортировать сертификат. BurpSuite показывает уязвимости приложения к SSL pinning и может найти уязвимости которые есть на сервере с которым контактирует приложение.
1. Установка прокси
Сначала нужно просмотреть информацию об интерфейсах для корректной настройки прокси.
Рис. 1. Информация об интерфейсах.
Настраиваем прокси на BurpSuite.
Рис. 2. Настройка прокси на BurpSuite.
Устанавливаем прокси на девайсе, на котором будем проводить тестирование.
Рис. 3. Настройка прокси на устройстве.
Вводим в браузере http[:]//burp/ — это нужно для скачивание сертификата. И скачиваем сертификат для работы. Дальше, нужно открыть папку «Downloads», там есть скачанный сертификат. Длинным нажатием на сертификате появляется меню, в котором выбираем «Rename» и меняем расширение на .cer и импортируем сертификат.
Рис. 4. Скачивание сертификата/
2. Импорт сертификата
Заходим в настройки устройства, находим пункт «Security», далее выбираем «Install from SD». Из папки «Downloads» выбираем сертификат, который был скачан и переименован. После нужно дать сертификату имя.
Рис. 5. Импорт сертификата.
Рис. 6. Импорт сертификата.
3. Проверка правильности установки сертификата и просмотр трафика через BurpSuite.
Рис. 7. Тестирование корректности импорта сертификата.
Рис. 8. Смотрим запросы, которые ходят с девайса.
Теперь можно проводить тестирование взаимодействия с API.
Как тестировать на Inspakage
Inspekage — это тулза, которая позволяет проводить динамическое тестирование Android-приложений и помогает понять, что приложение выполняет в runtime. Inspekage показывает работу приложения с:
- файлами
- базами данных
- криптографией
- http-запросы
- строки
- логи и др.
Рис. 9. Запуск приложения для тестирования.
Рис. 10. Запуск приложения для тестирования.
После запуска приложения, в браузере вводим https[:]//192[.]168[.]100[.]198[:]8008 переходим на консоль приложения (Рис. 11).
Рис. 11. Запуск консоли в браузере.
Дальше пройдёмся по вкладкам в консоли:
- Shared Preferences — рис. 12 — демонстрирует взаимодействие приложения с локальными ресурсами.
- Serialization — рис. 13
- Crypto — рис. 14 — демонстрирует работу с криптографией (SSL/TLS сюда не входит)
- Hash — рис. 14
- SQLite — рис .15
- HTTP — рис. 16 — в BurpSuite это вкладка лучше раскрыта
- FileSystems — рис. 17 — работа приложения с файлами
- IPC — рис. 18, etc.
Рис. 12. Shared Preferences.
Рис. 13. Serialization.
Рис. 14. Crypto.
Рис. 15. Hash.
Рис. 16. SQLite.
Рис. 17. HTTP.
Рис. 18. File system.
Рис. 19. IPC.
Тестирование с помощью Pidcat
Pidcat — приложение, которое читает логи работы приложения. При тестировании нужно выполнять функции приложения и смотреть, какие данные попадают в логи работы. В основном туда выводиться служебная информация, бывает так, что можно получить какую-нибудь критическую информацию, например резервную копию приватного ключа. Если на устройстве находится малварь, то эта информация может попасть в руки злоумышленника.
Рис. 20. Резервная копия приватного ключа.
Рис. 21. Конфиденциальная информация.
Вывод
На практике показаны способы базового динамического тестирования приложений для Android, которые мы в Hacken применяем для работы. Есть ещё модуль для автоматизированного тестирования в фреймворке MobSF, но это требует отдельной статьи.