Skip to content

Instantly share code, notes, and snippets.

@andmerk93
Created July 12, 2024 17:31
Show Gist options
  • Save andmerk93/4edb7208f89d6c23910e6f93e4a2458d to your computer and use it in GitHub Desktop.
Save andmerk93/4edb7208f89d6c23910e6f93e4a2458d to your computer and use it in GitHub Desktop.

Пентест Андроид Приложений

Типовая задача

Нужно отреверсить приложение, собрать сесии, посмотреть, есть ли защита по токенам.

Подготовка испыательного стенда

  1. Настраиваем эмулятор в Android Studo

Я брал Pixel XL c google API v30 с Cold reboot. В эмулятор выделяем побольше места под storage, иначе придется все заново проходить, если не хватит места

  1. Рутуем эмулятор rootAVD-master. Он же поставит Magisk. После патчинга, перезапускаем эулятор и запускаем Magisk, он автоматом предложит обновиться.

В Magisk после обновления и ребута, включаем Zygisk в настройках. Опять ребутим.

  1. Ставим Magisk-модули. Они ставятся после отправки zip-файлов на устройство, например, через adb:
  ./adb push AlwaysTrustUserCerts.zip /sdcard/Download

Далее, в Magisk импортируем модуль Always Trust User Certificates. Он нужен, чтобы пользовательский сертификат при импорте через телефон попал в системные сертификаты - https://github.com/NVISOsecurity/MagiskTrustUserCerts/releases

Затем ставим Zygisk - LSPosed. Это фреймворк, нужен, чтобы поставить модуль ssl unpinning, нужна версия с zygisk.

adb push LSPosed-v1.8.6-6712-zygisk-release.zip /sdcard/Download
  1. Заходим в LSPosed и внутри приложения скачиваем и устанавливаем модуль SSLUnpining (ставится как apk). Перезагружаемся

  2. Ставим mitmproxy (схема сработает с любым другим прокси, например Charles)

  3. Импортируем сертификат от mitmproxy в эмулятор (Security > Encription & credentials > Install a certificate). Сертификат под линуксом после первого запуска mitmproxy берется тут: ~/.mitmproxy/mitmproxy-ca-cert.cer

После импорта сертификата перезагружаемся. После перезагрузки проверяем что в системных доверенных сертификатах присутствует наш сертификат от mitmproxy

  1. Скачиваем apk требуемого приложения с какого-нибудь зеркала google play, например, https://www.apkmirror.com/ (вот этот сервер экспорта apk выдавал очень старую версию приложения https://apps.evozi.com/apk-downloader/). Ставим на эмулятор и проверяем, что версия близкая к настоящей

  2. Заходим в LSPosed и включаем модуль SSLUnpinning и в нем включаем галки напротив System Framework и Требуемого приложения. Перезагружаемся

  3. Стартуем mitmproxy

  4. Запускаем эмулятор. Можно через консольную утилиту emulator.

  5. Прописываем в настройках локальное прокси (в консоли для ./emulator -avd Pixel_5_API_31)

P.S. После каждой установки приложения или смены настроек, хорошо бы перезагружать образ - возможно, сборка начинает работать только после перезагрузки образа, а не приложения

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment