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

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

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

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


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

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

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

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

g5fhdxb2buc30ujjjkv5lxvqqma.png
Рис. 1. Информация об интерфейсах.

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

b6yhq9l8ytrnqn2w2w1oxgq6-tu.png
Рис. 2. Настройка прокси на BurpSuite.

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

_line1vwiy1rjh2mtfkzm-js0sy.png
Рис. 3. Настройка прокси на устройстве.

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

yrsynuvw_-b41fignmaye8f-fdk.png
Рис. 4. Скачивание сертификата/

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

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

6gg6jy6xnf9oqjfl9ulwnk0kuv4.png
Рис. 5. Импорт сертификата.

vbx37hmiu_bcouf-7fst38dxycq.png
Рис. 6. Импорт сертификата.

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

n7fxy6vpzrisfk-4qrem9ict2e4.png
Рис. 7. Тестирование корректности импорта сертификата.

olfsbvowvhw1xbvgh3ydohlaaio.png
Рис. 8. Смотрим запросы, которые ходят с девайса.

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

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

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

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


kyxywvuczjbvhnnguz0s-txupkk.png
Рис. 9. Запуск приложения для тестирования.

dgj-6-2qqc80mvysaphcvqdjeew.png
Рис. 10. Запуск приложения для тестирования.

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

0nwqf3ay3x3vwmp_8_xyb2ycs5y.png
Рис. 11. Запуск консоли в браузере.

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

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


n_bqjmi2olc3_9tqytsy3kahupc.png
Рис. 12. Shared Preferences.

0jgp8nidflzlqqjgq1job4dtf-m.png
Рис. 13. Serialization.

qrbxmfvkpyzfatgaiiaig7qgweq.png
Рис. 14. Crypto.

bnc7w6dv1m8elwgdgqhppz7jnbc.png
Рис. 15. Hash.

vt6sqgauayoiyzovlk0b26l0qzg.png
Рис. 16. SQLite.

jsa_qcyzyjypgr_3p5bgq4mhj1a.png
Рис. 17. HTTP.

zmglw5oozdz3wyooglgagu6tvni.png
Рис. 18. File system.

vv1t_bml5tvt9rjuuh3bvoqacuc.png
Рис. 19. IPC.

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

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

yom8plnsgunhnv-w6ed6aeuvxze.png
Рис. 20. Резервная копия приватного ключа.

dvbockh3q81yemwpv1jzv1ep1nk.png
Рис. 21. Конфиденциальная информация.

Вывод

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

© Habrahabr.ru