Динамическое тестирование Андроид приложений

в 14:46, , рубрики: android, android security, application security, Аналитика мобильных приложений, информационная безопасность, Разработка под android

Динамическое тестирование Андроид приложений - 1
Динамическое тестирование проводится с целью выявить уязвимости по время функционирования приложения. В данной статье хочу поделиться нескольким способамии тестирования приложения под Андроид. Также покажу как конфигурировать и настраивать оборудование. Кому интересно, добро пожаловать под кат.

Динамическое тестирование подразумевает — анализ логов приложения, анализ трафика приложения, поиск багов во время работы и др. Для тестирования нужно настроить виртуальную машину на Genimotion, как это делается описано здесь.

Какие тулзы используются для динамического анализа:

  • BurpSuite;
  • Inspakage;
  • Pidcat или другое приложение с правами для чтения логов.

Как тестировать с помощью BurpSuite

Сначала нужно настроить прокси и импортировать сертификат. BurpSuite показывает уязвимости приложения к SSL pinning и может найти уязвимости которые есть на сервере с которым контактирует приложение.

1. Установка прокси

Сначала нужно просмотреть информацию об интерфейсах для корректной настройки прокси.

Динамическое тестирование Андроид приложений - 2
Рис. 1. Информация об интерфейсах.

Настраиваем прокси на BurpSuite.

Динамическое тестирование Андроид приложений - 3
Рис. 2. Настройка прокси на BurpSuite.

Устанавливаем прокси на девайсе, на котором будем проводить тестирование.

Динамическое тестирование Андроид приложений - 4
Рис. 3. Настройка прокси на устройстве.

Вводим в браузере http[:]//burp/ — это нужно для скачивание сертификата. И скачиваем сертификат для работы. Дальше, нужно открыть папку “Downloads”, там есть скачанный сертификат. Длинным нажатием на сертификате появляется меню, в котором выбираем “Rename” и меняем расширение на .cer и импортируем сертификат.

Динамическое тестирование Андроид приложений - 5
Рис. 4. Скачивание сертификата/

2. Импорт сертификата

Заходим в настройки устройства, находим пункт “Security”, далее выбираем “Install from SD”. Из папки “Downloads” выбираем сертификат, который был скачан и переименован. После нужно дать сертификату имя.

Динамическое тестирование Андроид приложений - 6
Рис. 5. Импорт сертификата.

Динамическое тестирование Андроид приложений - 7
Рис. 6. Импорт сертификата.

3. Проверка правильности установки сертификата и просмотр трафика через BurpSuite.

Динамическое тестирование Андроид приложений - 8
Рис. 7. Тестирование корректности импорта сертификата.

Динамическое тестирование Андроид приложений - 9
Рис. 8. Смотрим запросы, которые ходят с девайса.

Теперь можно проводить тестирование взаимодействия с API.

Как тестировать на Inspakage

Inspekage — это тулза, которая позволяет проводить динамическое тестирование Android-приложений и помогает понять, что приложение выполняет в runtime. Inspekage показывает работу приложения с:

  • файлами
  • базами данных
  • криптографией
  • http-запросы
  • строки
  • логи и др.

Динамическое тестирование Андроид приложений - 10
Рис. 9. Запуск приложения для тестирования.

Динамическое тестирование Андроид приложений - 11
Рис. 10. Запуск приложения для тестирования.

После запуска приложения, в браузере вводим https[:]//192[.]168[.]100[.]198[:]8008 переходим на консоль приложения (Рис. 11).

Динамическое тестирование Андроид приложений - 12
Рис. 11. Запуск консоли в браузере.

Дальше пройдёмся по вкладкам в консоли:

  • Shared Preferences — рис. 12 — демонстрирует взаимодействие приложения с локальными ресурсами.
  • Serialization — рис. 13
  • Crypto — рис. 14 — демонстрирует работу с криптографией (SSL/TLS сюда не входит)
  • Hash — рис. 14
  • SQLite — рис .15
  • HTTP — рис. 16 — в BurpSuite это вкладка лучше раскрыта
  • FileSystems — рис. 17 — работа приложения с файлами
  • IPC — рис. 18, etc.

Динамическое тестирование Андроид приложений - 13
Рис. 12. Shared Preferences.

Динамическое тестирование Андроид приложений - 14
Рис. 13. Serialization.

Динамическое тестирование Андроид приложений - 15
Рис. 14. Crypto.

Динамическое тестирование Андроид приложений - 16
Рис. 15. Hash.

Динамическое тестирование Андроид приложений - 17
Рис. 16. SQLite.

Динамическое тестирование Андроид приложений - 18
Рис. 17. HTTP.

Динамическое тестирование Андроид приложений - 19
Рис. 18. File system.

Динамическое тестирование Андроид приложений - 20
Рис. 19. IPC.

Тестирование с помощью Pidcat

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

Динамическое тестирование Андроид приложений - 21
Рис. 20. Резервная копия приватного ключа.

Динамическое тестирование Андроид приложений - 22
Рис. 21. Конфиденциальная информация.

Вывод

На практике показаны способы базового динамического тестирования приложений для Android, которые мы в Hacken применяем для работы. Есть ещё модуль для автоматизированного тестирования в фреймворке MobSF, но это требует отдельной статьи.

Автор: Skif_1993

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js