![](https://habrastorage.org/webt/do/9u/kf/do9ukfkov33tea6kcsyo4aq82to.png)
Динамическое тестирование проводится с целью выявить уязвимости по время функционирования приложения. В данной статье хочу поделиться нескольким способамии тестирования приложения под Андроид. Также покажу как конфигурировать и настраивать оборудование. Кому интересно, добро пожаловать под кат.
Динамическое тестирование подразумевает — анализ логов приложения, анализ трафика приложения, поиск багов во время работы и др. Для тестирования нужно настроить виртуальную машину на Genimotion, как это делается описано здесь.
Какие тулзы используются для динамического анализа:
- BurpSuite;
- Inspakage;
- Pidcat или другое приложение с правами для чтения логов.
Как тестировать с помощью BurpSuite
Сначала нужно настроить прокси и импортировать сертификат. BurpSuite показывает уязвимости приложения к SSL pinning и может найти уязвимости которые есть на сервере с которым контактирует приложение.
1. Установка прокси
Сначала нужно просмотреть информацию об интерфейсах для корректной настройки прокси.
![](https://habrastorage.org/webt/g5/fh/dx/g5fhdxb2buc30ujjjkv5lxvqqma.png)
Рис. 1. Информация об интерфейсах.
Настраиваем прокси на BurpSuite.
![](https://habrastorage.org/webt/b6/yh/q9/b6yhq9l8ytrnqn2w2w1oxgq6-tu.png)
Рис. 2. Настройка прокси на BurpSuite.
Устанавливаем прокси на девайсе, на котором будем проводить тестирование.
![](https://habrastorage.org/webt/p5/bb/vc/p5bbvckfbzrqueoqunvnc6j7ho8.png)
Рис. 3. Настройка прокси на устройстве.
Вводим в браузере http[:]//burp/ — это нужно для скачивание сертификата. И скачиваем сертификат для работы. Дальше, нужно открыть папку “Downloads”, там есть скачанный сертификат. Длинным нажатием на сертификате появляется меню, в котором выбираем “Rename” и меняем расширение на .cer и импортируем сертификат.
![](https://habrastorage.org/webt/yr/sy/nu/yrsynuvw_-b41fignmaye8f-fdk.png)
Рис. 4. Скачивание сертификата/
2. Импорт сертификата
Заходим в настройки устройства, находим пункт “Security”, далее выбираем “Install from SD”. Из папки “Downloads” выбираем сертификат, который был скачан и переименован. После нужно дать сертификату имя.
![](https://habrastorage.org/webt/6g/g6/jy/6gg6jy6xnf9oqjfl9ulwnk0kuv4.png)
Рис. 5. Импорт сертификата.
![](https://habrastorage.org/webt/vb/x3/7h/vbx37hmiu_bcouf-7fst38dxycq.png)
Рис. 6. Импорт сертификата.
3. Проверка правильности установки сертификата и просмотр трафика через BurpSuite.
![](https://habrastorage.org/webt/n7/fx/y6/n7fxy6vpzrisfk-4qrem9ict2e4.png)
Рис. 7. Тестирование корректности импорта сертификата.
![](https://habrastorage.org/webt/ol/fs/bv/olfsbvowvhw1xbvgh3ydohlaaio.png)
Рис. 8. Смотрим запросы, которые ходят с девайса.
Теперь можно проводить тестирование взаимодействия с API.
Начиная с Android 7 такой способ добавления сертификата Burp'а в доверенные не прокатит для большинства приложений — по умолчанию пользовательским сертификатам теперь нет доверия. Поэтому придется рутовать, давать сертификату правильное имя и класть в системную директорию.(Комментарий y4ppieflu)
Как тестировать на Inspakage
Inspekage — это тулза, которая позволяет проводить динамическое тестирование Android-приложений и помогает понять, что приложение выполняет в runtime. Inspekage показывает работу приложения с:
- файлами
- базами данных
- криптографией
- http-запросы
- строки
- логи и др.
![](https://habrastorage.org/webt/ky/xy/wv/kyxywvuczjbvhnnguz0s-txupkk.png)
Рис. 9. Запуск приложения для тестирования.
![](https://habrastorage.org/webt/dg/j-/6-/dgj-6-2qqc80mvysaphcvqdjeew.png)
Рис. 10. Запуск приложения для тестирования.
После запуска приложения, в браузере вводим https[:]//192[.]168[.]100[.]198[:]8008 переходим на консоль приложения (Рис. 11).
![](https://habrastorage.org/webt/0n/wq/f3/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.
![](https://habrastorage.org/webt/n_/bq/jm/n_bqjmi2olc3_9tqytsy3kahupc.png)
Рис. 12. Shared Preferences.
![](https://habrastorage.org/webt/0j/gp/8n/0jgp8nidflzlqqjgq1job4dtf-m.png)
Рис. 13. Serialization.
![](https://habrastorage.org/webt/qr/bx/mf/qrbxmfvkpyzfatgaiiaig7qgweq.png)
Рис. 14. Crypto.
![](https://habrastorage.org/webt/bn/c7/w6/bnc7w6dv1m8elwgdgqhppz7jnbc.png)
Рис. 15. Hash.
![](https://habrastorage.org/webt/vt/6s/qg/vt6sqgauayoiyzovlk0b26l0qzg.png)
Рис. 16. SQLite.
![](https://habrastorage.org/webt/js/a_/qc/jsa_qcyzyjypgr_3p5bgq4mhj1a.png)
Рис. 17. HTTP.
![](https://habrastorage.org/webt/zm/gl/w5/zmglw5oozdz3wyooglgagu6tvni.png)
Рис. 18. File system.
![](https://habrastorage.org/webt/vv/1t/_b/vv1t_bml5tvt9rjuuh3bvoqacuc.png)
Рис. 19. IPC.
Тестирование с помощью Pidcat
Pidcat — приложение, которое читает логи работы приложения. При тестировании нужно выполнять функции приложения и смотреть, какие данные попадают в логи работы. В основном туда выводиться служебная информация, бывает так, что можно получить какую-нибудь критическую информацию, например резервную копию приватного ключа. Если на устройстве находится малварь, то эта информация может попасть в руки злоумышленника.
![](https://habrastorage.org/webt/yo/m8/pl/yom8plnsgunhnv-w6ed6aeuvxze.png)
Рис. 20. Резервная копия приватного ключа.
![](https://habrastorage.org/webt/dv/bo/ck/dvbockh3q81yemwpv1jzv1ep1nk.png)
Рис. 21. Конфиденциальная информация.
Вывод
На практике показаны способы базового динамического тестирования приложений для Android, которые мы в Hacken применяем для работы. Есть ещё модуль для автоматизированного тестирования в фреймворке MobSF, но это требует отдельной статьи.
Комментарии (3)
y4ppieflu
13.12.2018 17:38Начиная с Android 7 такой способ добавления сертификата Burp'а в доверенные не прокатит для большинства приложений — по умолчанию пользовательским сертификатам теперь нет доверия. Поэтому придется рутовать, давать сертификату правильное имя и класть в системную директорию.
nagayev
Замечательная статья!
Автору спасибо.