Перехват сетевых запросов из мобильного приложения

Иногда требуется провести тестирование мобильного приложения и изучить все сетевые запросы, связанные с ним. В онлайн-среде это легко сделать: просто используйте комбинацию клавиш Ctrl + Shift + I, чтобы открыть инструменты разработчика. Затем перейдите на вкладку «Сеть», где можно будет ознакомиться со всеми HTTP-запросами, связанными с веб-страницей, следуя этим шагам:

Однако в сфере мобильной разработки этот процесс не столь прост. В отличие от интернет-среды, здесь отсутствует встроенный механизм, который позволял бы легко проверять HTTP-запросы через инструменты разработчика.

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

Применение прокси-сервера дает возможность перехватывать, проверять и анализировать все входящие сетевые запросы. Это раскрывает широкие перспективы для отладки, повышения производительности и анализа безопасности приложений.

Для удобства изложения мы разделим данное руководство на пять шагов:

  1. Установка эмулятора Android
  2. Установка прокси-сервера
  3. Подготовка сертификата
  4. Развертывание сертификата
  5. Настройка прокси на эмуляторе Android

Рассмотрим подробно каждый шаг.

1. Установка эмулятора Android

По завершении установки запустите Android Studio. В верхней части окна, на панели инструментов, найдите раздел Tools и выполните клик по нему. Затем в выпадающем меню выберите Device Manager (или в случае нового дизайна: Android -> Device Manager):

  • После клика на Device Manager появится новая панель:

  • Кликните Create Device (Создать устройство):

Теперь необходимо выбрать из списка устройство, на котором отсутствует логотип Play Store:

На следующем этапе, после выбора устройства без логотипа Play Store, вам потребуется выбрать уровень API, который соответствует требованиям для тестирования. Уровень API определяет версию платформы Android, на которой будет работать эмулятор:

По завершении настройки параметров AVD, вы готовы запускать устройство. Просто щелкните кнопку «Run», чтобы запустить эмулятор и виртуальное устройство.

Существует также альтернативный способ запуска эмулятора с помощью командной строки. Откройте командную строку или терминал на вашем компьютере и выполните несколько команд.

Начните с команды emulator -list-avds, чтобы вывести список всех установленных эмуляторов на экран. Эта команда покажет вам названия доступных устройств. Выберите нужное устройство из списка.

Затем используйте команду emulator -avd deviceName, где deviceName заменяется реальным названием желаемого устройства. Эта команда запустит эмулятор с выбранным устройством.

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

После этого можете скачать апк файл нужного вам приложения в браузере или же с пк перетащить в эмулятор.

2. Установка прокси-сервера

Прежде чем приступать к установке прокси, рекомендуется убедиться, что OpenSSL и Android Debug Bridge (ADB) настроены корректно. Вот шаги, которые необходимо выполнить:

  • Убедитесь, что OpenSSL установлен в вашей системе, если этого еще не сделано. Вы можете найти инструкции по установке OpenSSL в документации для вашей операционной системы. После установки, проверьте правильность установки, выполните команду openssl version в командной строке или терминале. Если установка прошла успешно, будет отображена версия OpenSSL.

  • Чтобы убедиться, что у вас есть доступ к ADB из командной строки или терминала, выполните следующую команду: adb version. Если в результате команда возвращает версию ADB, это означает, что ADB настроен правильно и доступен для использования. Если получаете версию ADB, значит настройки выполнены правильно. Если возникли какие-либо проблемы или вы не получаете версию ADB, убедитесь, что ADB установлен и настроен правильно.

После успешной настройки OpenSSL и подтверждения доступа к ADB можно приступать к установке прокси-сервера. В этом руководстве мы будем загружать и использовать mitmproxy. Вы можете использовать другое приложение, принципы одинаковые.

3. Подготовка сертификата

Для расшифровки запросов приложения mitmproxy генерирует собственный SSL-сертификат. Чтобы получить этот сертификат и настроить его для использования в ОС Android, выполните следующие действия.

  • После установки и запуска mitmproxy сертификат находится в ~/.mitmproxy/mitmproxy-ca-cert.cer на Linux.
  • Зайдите в каталог с сертификатом:
    cd ~/.mitmproxy/
  • Сгенерируйте хеш и копию сертификата: hashed_name=`openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1` && cp mitmproxy-ca-cert.cer $hashed_name.0

4. Развертывание сертификата

Файл .0, который был сгенерирован на предыдущем этапе, является сертификатом, который нужно добавить в эмулятор Android. Чтобы сделать это, начните с открытия терминала со списком доступных AVD:

emulator -list-avds

Запустите нужный из доступных AVD с помощью следующей команды:

emulator -avd <avd_name_here> -writable-system

Обратите внимание на использование флага -writable-system для запуска AVD с перезаписываемыми системными разрешениями, что позволяет вносить изменения. После этого нужно открыть другой терминал и выполнить следующую команду:

adb root

Эта команда перезапускает демон (системную службу) ADB с правами root. Затем запустите эту команду, чтобы отключить подтверждение безопасной загрузки на устройстве:

adb shell avbctl disable-verification

Теперь перезагрузите устройство с помощью команды:

adb reboot

Как только устройство перезагрузится, запустите следующую команду, чтобы снова перезапустить ADB как root:

adb root

Выполните перемонтирование разделов как read/write с помощью следующей команды:

adb remount

Если ADB предложит вам перезагрузить устройство, выполните следующие команды: adb reboot, затем adb root и adb remount. Это позволит вам отправить переименованный файл SSL-сертификата (файл с расширением .0, который был сгенерирован ранее) на устройство. Используйте следующую команду, заменив <path_to_certificate> на фактический путь к файлу сертификата:

adb push <path_to_certificate> /system/etc/security/cacerts

Эта команда копирует файл сертификата в соответствующий каталог на устройстве. Теперь нужно установить правильные разрешения для файла сертификата, выполнив следующую команду:

adb shell chmod 664 /system/etc/security/cacerts/<name_of_pushed_certificate>

Перезагрузите устройство в последний раз, используя следующую команду:

adb reboot

После перезагрузки устройства SSL-сертификат будет развернут, и вы успешно внедрили его в эмулятор Android. Теперь эмулятор будет распознавать и доверять данному сертификату, что позволит mitmproxy перехватывать и анализировать сетевой трафик на устройстве.

Чтобы проверить наличие сертификата на вашем устройстве Android, перейдите в раздел «Доверенные удостоверения» в настройках «Шифрование и удостоверения». На вкладке «Система» вы должны найти сертификат с названием «mitmproxy». Это позволит вам убедиться в том, что сертификат был успешно установлен и распознан устройством.

5. Настройка прокси-сервера на эмуляторе Android

Заключительный шаг предполагает настройку эмулятора Android для использования настроенного прокси-сервера mitmproxy.

В консоли введите команду, чтобы узнать свой ip адрес:

ip a

Скопируйте его после слова «inet»

Далее нужно зайти в эмулятор Android и кликнуть на иконку с многоточием, как показано на скриншоте:

Кликните на иконку с многоточием

Кликните на опцию `Settings`, указанную на боковой панели. После этого можете перейти на вкладку `Proxy`:

На вкладке Proxy установите флажок Manual proxy configuration. Затем вставьте IP-адрес, скопированный ранее в терминале и номер порта 8080, и нажмите кнопку Apply:

Теперь осталось запусть сайт mitm.it на эмуляторе. После этого вы можете видеть запросы в mitmproxy.

Вы успешно завершили все необходимые шаги по настройке для перехвата HTTP-запросов с вашего Android-устройства. Теперь вы можете использовать mitmproxy и запускать приложения на своем эмуляторе Android. В процессе использования приложений mitmproxy будет собирать и отображать все соответствующие данные и детали, связанные с сетевыми запросами, предоставляя вам ценную информацию и визуализацию взаимодействия между вашим устройством и сервером.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *