- Проверка на наличие SSL Pinning в приложении Android
- Способы обхода SSL Pinning Android
- Обход SSL pinning используя модуль Magisk
- Обход SSL pinning с помощью Objection
- Обход SSL pinning с помощью Frida
- Обход SSL pinning используя Xposed Framework
- Обход SSL pinning используя apk-mitm
- Обход SSL pinning модификацией файла network_security_config.xml
- Перехват приложений на базе Flutter
- Перехват с помощью приложения Hosts Go
SSL Pinning это механизм, который защищает приложения от атак MiTM (человек по середине). Это достигается путем «прикрепления» сертификата к приложению, которое затем проверяет, соответствует ли сертификат сервера сохраненному сертификату. Если они не совпадают, приложение отклонит соединение. Далее мы рассмотрим способы обхода SSL Pinning Android.
Еще по теме:Перехват трафика Android-приложения (Burp и Frida)
Проверка на наличие SSL Pinning в приложении Android
SSL Pinning не позволяет перехватить HTTPS-трафик целевого Android-приложения.
Для проверки настройте прокси-сервер и запустите приложение, затем выполните несколько действий между целевым приложением и сервером.
Теперь откройте лог Burp Suite. Если Pinning реализован, то вы увидите ошибку сертификата:
Способы обхода SSL Pinning Android
Обход SSL Pinning в Android — это процесс обхода механизма защиты, который предназначен для обеспечения безопасности HTTPS-соединений в приложениях. Это может потребоваться для тестирования безопасности приложений или анализа трафика.
Вот несколько рабочих способов обхода SSL Pinning в приложениях Android.
Помните, что обход SSL Pinning должен использоваться исключительно в законных целях, таких как тестирование безопасности и анализ уязвимостей.
Обход SSL pinning используя модуль Magisk
Если устройство рутировано, тогда можно заюзать модуль Move Certificate из приложения Magisk.
Этот модуль перемещает доверенные сертификаты пользователя в системное хранилище, заставляя систему (root) доверять сертификату, который установил пользователь (сертификат Burp CA):
Обход SSL pinning с помощью Objection
Запустите сервер Frida на Android-устройстве (см. Установка Frida Server на Android).
Прикрепите целевое приложение к Objection с помощью команды (см. Взлом приложений с помощью Objection):
1 |
Objection -g <имя пакета/PID> explore |
Затем выполните команду:
1 |
android sslpinning disable |
Чтобы обойти SSL pinning, скрипт найдет классы SSL pinning и подключит их.
Обход SSL pinning с помощью Frida
Запустите сервер Frida на Android-устройстве (см. Установка Frida Server на Android).
Запустите приведенный ниже скрипт обхода:
1 |
frida -U -f -l fridascript.js |
Подробнее в статье «Как обойти SSL Pinning используя Frida».
Обход SSL pinning используя Xposed Framework
Если на устройстве установлен фреймворк Xposed, то для обхода SSL pinning можно воспользоваться следующими модулями SSLUnpinning_Xposed и TrustMeAlready.
- SSLUnpinning_Xposed — модуль Android Xposed для обхода проверки SSL-сертификата (Certificate Pinning)
- TrustMeAlready — отключение проверки SSL на Android.
Подробнее в статье «Использование Xposed для обхода SSL Pinning на Android».
Обход SSL pinning используя apk-mitm
apk-mitm — это инструмент для автоматической подготовки APK-файлов Android к анализу и тестированию HTTPS-трафика. Этот инструмент модифицирует APK-файлы, чтобы перехватывать и анализировать зашифрованный трафик между Android-приложением и сервером, необходимым для его работы.
Установите apk-mitm с помощью npm:
1 |
npm install -g apk-mitm |
Запустите приложение:
Apk-mitm выполнил свою работу. Теперь можете установить модифицированный APK и перехватить трафик приложения.
Обход SSL pinning модификацией файла network_security_config.xml
Файл network_security_config.xml — это конфигурационный файл, который используется в Android-приложениях для определения настроек безопасности сети. Этот файл позволяет разработчикам устанавливать правила и ограничения для сетевых соединений, включая соединения через HTTPS.
Файл обычно размещается в директории ресурсов приложения /res/xml/. Разработчики могут создавать и настраивать этот файл в соответствии с требованиями безопасности своего приложения. Это важный инструмент для обеспечения безопасности сетевых соединений в Android-приложениях и защиты от различных угроз, таких как атаки MITM.
Эта техника актуально для Android 7.0 и выше.
Декомпилируйте приложение с помощью apktool или любого другого декомпилятора.
Найдите файл network_security_config.xml в каталоге /res/xml.
Файл будет выглядеть следующим образом:
Удалите эту секцию и добавьте следующую:
Сохраните файл и перепакуйте приложение с помощью apktool и uber-apk-signer (подпишите модифицированный APK).
Установите модифицированный APK для перехвата трафика.
Перехват приложений на базе Flutter
Приложения, работающие на базе Flutter, в основном не имеют прокси, поэтому обычный метод перехвата не будет работать с такими приложениями.
Для перехвата трафика необходимо использовать Reflutter — фреймворк, который позволяет проводить реверс-инжиниринг приложений Flutter, используя исправленную версию библиотеки Flutter, которая уже скомпилирована и готова к перепаковке приложений.
Установите reflutter с помощью pip.
1 |
pip3 install reflutter |
Выполните следующую команду:
1 |
reflutter app.apk |
Подпишите приложение с помощью uber-apk-signer и установите его:
Теперь в прокси Burp запустите прослушивание порта 8083, а также включите опцию Support Invisible Proxying:
Перехватываем запрос и наслаждаемся.
Перехват с помощью приложения Hosts Go
Иногда приложение использует только HTTP, но перехватить его не удается. Приложения с таким поведением называются Proxy Unaware. Такие приложения направляют трафик напрямую в Интернет, не взаимодействуя с системными настройками Proxy.
Скачайте и установите приложение Hosts Go.
Добавьте IP-адрес системы и урл домена приложения (который можно определить, запустив Wireshark).
После добавления данных включите Hosts change switch и нажмите кнопку START.
Настройте параметры прокси-сервера Burp Suite и обработки запросов.
Вот и все. Теперь HTTP-трафик приложения будет перехвачен в Burp Suite.
ПОЛЕЗНЫЕ ССЫЛКИ: