• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья Настраиваем виртуальную android машину для тестирования на проникновение

Резюме

Виртуальная машина - отличный способ познакомиться с тестированием на проникновение мобильных приложений на базе OS андроид, но для полноценного bug bounty этот способ скорее всего не подойдет. Как бы я ни старался, некоторые apk запускаться отказываются. Так же есть проблемы при взаимодействии с камерой и микрофоном. Плюс довольно большие требования к компьютерному железу.

Этот гайд освещает только клиент-серверное взаимодействие.



Используемый софт:
  • linux mint 20.1 lts (основная машина)
  • virtualbox
  • kali linux(виртуальная машина)
  • genymotion

Установка genymotion

Genymotion - это виртуальная машина, на которой и будет крутиться наш виртуальный android. Устанавливаем virtualbox командой
Код:
sudo apt install virtualbox virtualbox-ext-pack
Без него genymotion не работает. Или инсталлируем из стандартного менеджера программ.

После качаем geanymotion отсюда , открываем терминал, переходим в папку куда скачали, например:
Код:
cd ~/Downloads
Даем права на исполнение:
Код:
chmod +x genymotion-3.1.2-linux_x64.bin
Устанавливаем:
Код:
./genymotion-3.1.2-linux_x64.bin
После этих манипуляций программа должна появится в стандартном
меню приложений. Запускаем.

После необходимо зарегистрировать аккаунт, сделать это можно сделать прям в программе. Выбираем personal use only. Теперь переходим к настройке самого виртуального устройства. Нажимаем на большой плюсик, появляется окно с выбором моделей телефонов.


1.png


Я выбираю xiaomi redmi note 7.Вы можете выбрать любую модель из списка в зависимости от потребностей. Здесь можно выбрать необходимое разрешение экрана, установить количество ядер цпу ( я даю 2) и ОЗУ (3072) вполне достаточно. Жмем install.

2.png


Ждем пока машина скачается. Запускаем, устанавливаем open gaps(google apps) соответственным нажатием на кнопку справа посередине.

3.png


Так как genymotion создан под архитектуру х86, нам нужен arm ретранслятор под приложения, скомпилированые под arm, иначе возможны ошибки при запуске таких apk. Скачать можно здесь GitHub - m9rco/Genymotion_ARM_Translation: 👾👾 Genymotion_ARM_Translation Please enjoy! . Выбираем под версию андроида( последняя версия 8, я ставил восьмую на девятый и десятый андроид и проблем пока не было, в интернете соответствующих версий не было, поэтому если кто-то обладает информацией прошу мне отписать), качаем архив и устанавливаем, перетягивая архив прямо на активное окно виртуальной машины.

4.png


Настройка проксирования

Я буду использовать burp suite, установленный на виртуальной машине kali. Вы можете использовать ZAP или любой другой снифер.

Открываем терминал, пишем ifconfig, здесь видим ip нашей машины, запоминаем, он сейчас пригодится.


5.png


Заходим в burp, идем во вкладку proxy->options. Снимаем флажок с локального хоста(127.0.0.1), жмём add, в поле bind to port пишем 8080, где bind to adress->
specific address выбираем из списка ip из команды выше. Должно получится как-то так:


6.png


Теперь burp suite будет проксировать через себя весь незашифрованный трафик который придет на эту машину. Теперь осталось настроить прокси на андроид машине, переходим к ней, открываем настройки wifi, жмем + Add network, в поле network name пишем AndroidWifi, далее advanced options->proxy->manual,
в поле hostname указываем ip и порт как в настройках burp выше. Сохраняем.


7.png


Уже на данном этапе мы можем перехватывать и модифицировать незашифрованный трафик. Но этого явно недостаточно. Что бы смотреть трафик по https нам нужно добавить burp ca certificate в доверенные сертификаты. И вот тут-то и возникают проблемы, так как андроид выше уровня api 24 перестал доверять пользовательским сертификатам. И теперь нам нужно загрузить свой сертификат на системном (туда, где уже хранятся доверенные сертификаты по умолчанию) уровне, что без прав суперпользователя невозможно, благо все машины в genymotion сразу имеют root.

Настройка сертификата

Идем в burp, заходим в proxy->options->import/export CA certificate. Экспортируем сертификат in DER format. Сохраняем в .der формате по типу cacert.der.

8.png


Андроид хочет что бы сертификаты были в формате PEM и имя файла было эквивалентно subject_hash_old и с .0 в конце . Для преобразования нам понадобится утилита openssl.

Код:
cd path_to_certificate
openssl x509 -inform DER -in cacert.der -out cacert.pem
openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1
После последней команды получаем хеш, используем его в следующей команде:
Код:
mv cacert.pem хеш.0

Если всё правильно, получится должно примерно следующее:


9.png


Далее полученный сертификат в формате PEM нам нужно скопировать в /system/etc/security/cacerts нашей андроид машины.Для этого нам потребуется утилита adb, которая уже есть в genymotion.Переходим в основную машину, дальнейшие действия будут из неё.

adb (android debug bridge) - это утилита командной строки, которая упрощает нам многие действия взаимодействия с телефоном и позволяет получить шелл. Переходим в
cd /opt/genymobile/genymotion/tools
Проверяем что наше устройство определяется

Код:
./adb devices
Далее:
Код:
./adb root
./adb remount
./adb push ~/Документы/9a5ba575.0 /sdcard/

(мой сертификат лежал в папке Документы)

10.png


Далее нам нужно получить шелл, для этого нужно подконнектится к андроид машине

Код:
./adb connect ip:port

Где ip это ип нашей виртуальной машины, посмотреть можно по команде ./adb devices как в примере выше а порт будет 5555
Получаем шелл оболочку виртуального смартфона:

Код:
./adb shell

11.png


Далее нам нужно переместить наш сертфикат в системную папку и дать ему привилегии

Код:
mv /sdcard/certificate_name.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/certificate_name.0


12.png


Выходим из шелла и ребутим устройство.

Код:
exit
./adb reboot


13.png


После перезагрузки устройства идем в settings->security and location->encryption & credentials->trusted credentials здесь и будет нужный нам сертификат.

14.png


Теперь мы можем прослушивать зашифрованный траффик из приложений и браузера и искать уязвимости. Как видим из скриншота ниже, https трафик перехватывается корректно.

15.png



Установка APK

Большинство приложений есть в play market, но если какой-то приложухи не оказалось можно установить apk, например отсюда или собрать
apk из установленного приложения на вашем физическом смартфоне, например с помощью утилиты apk exprort (есть в плей маркете). Установить можно просто перетянув apk файл на экран с запущенной виртуальной машиной, как мы делали с транслятором arm. Если не хочет устанавливаться идем в settings->developer options и отключаем опцию verify apps over USB. После этого устанавливаться должно без проблем.



Благодарю за прочтение, надеюсь моя статья будет полезной, буду рад критике и комментариям. С уважением, ваш Каджит в белой шляпе.
 
Последнее редактирование модератором:

Qulan

Red Team
06.12.2020
171
509
BIT
348
Хороший мануал)
Сделал все как описанно. Имею:
1. андроид не имеет выхода в интернет(((
2. Сертификат не отображается в Траст(((
 
  • Нравится
Реакции: Сергей Сталь

Khadjit_anonymous

Grey Team
26.04.2021
45
58
BIT
0
Хороший мануал)
Сделал все как описанно. Имею:
1. андроид не имеет выхода в интернет(((
2. Сертификат не отображается в Траст(((
Приветствую, андроид не имеет выхода в интернет скорее всего из-за ошибки в прокси, проверьте что трафик перенаправляется на нужную машину с burp.
Если сертификат не отображается скорее всего ошибка при его преобразовании или при копировании в директорию. Попробуйте внимательно ещё раз выполнить эти шаги, если не получится то напишите в лс попытаемся разобраться.
 
  • Нравится
Реакции: Qulan

Qulan

Red Team
06.12.2020
171
509
BIT
348
Приветствую, андроид не имеет выхода в интернет скорее всего из-за ошибки в прокси, проверьте что трафик перенаправляется на нужную машину с burp.
Если сертификат не отображается скорее всего ошибка при его преобразовании или при копировании в директорию. Попробуйте внимательно ещё раз выполнить эти шаги, если не получится то напишите в лс попытаемся разобраться.
Спасибо. Пробую повторно

если не получится то напишите в лс попытаемся разобраться.
Все заработало, спасибо!
 
  • Нравится
Реакции: tiolpxe и igor_nikolenko

Khadjit_anonymous

Grey Team
26.04.2021
45
58
BIT
0
Спасибо хорошая статья, по возможности пиши еще про Android. Интересно почитать и повторить
Благодарю за оценку, продолжение будет обязательно как только обзаведусь "лабораторным" смартфоном
 

Urfin--Juice

Gold Team
14.11.2017
203
74
BIT
0
Спасибо за статью, т-щ Каджит)
Как нельзя кстати.
А есть удачный опыт митма хттпС с Ондроид 11?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!