ОРИГИНАЛЬНАЯ СТАТЬЯ
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ xss.pro
$600 ---> 0x5B1f2Ac9cF5616D9d7F1819d1519912e85eb5C09 для поднятия ноды ETHEREUM и тестов
Я понял, это звучит как шутка, потому что вы, ребята, знаете, что если пиннинг установлен, мы не сможем перехватить HTTPS-трафик нашего целевого приложения для Android.
2. Подождите, как мы можем подтвердить пиннинг?
После настройки прокси-сервера как на устройстве, так и на прокси-сервере (Burp), запустите целевое приложение, затем выполните некоторые действия, которые обеспечивают связь между целевым приложением и их сервером. Пришло время понаблюдать за приборной панелью Burp, в частности, за разделом «Журнал». Если пиннинг установленн, то мы сможем увидеть ошибку сертификата следующим образом:
Этот модуль переместит доверенные сертификаты пользователя в системное хранилище, заставив систему (root) доверять сертификату, который устанавливает пользователь (сертификат нашего прокси CA).
objection — runtime mobile exploration (github.com)
Шаг 1 : Убедитесь, что сервер frida запущен на Android'e
Шаг 2: Прикрепите целевое приложение с objection с помощью следующей команды:
Затем выполните команду « android sslpinning disable » .
Вот и все, скрипт найдет классы закрепления SSL и перехватит их во время выполнения, чтобы обойти закрепление.
Вот самый популярный и широко используемый метод.
Шаг 1 : Убедитесь, что сервер frida запущен на устройстве Android.
Шаг 2: Подключите целевое приложение к frida и запустите свой любимый скрипт обхода SSL.
Ниже приведены мои любимые сценарии:
https://codeshare.frida.re/@akabe1/frida-multiple-unpinning/
https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/
Репо:
shroudedcode/apk-mitm:
CLI-приложение, которое автоматически подготавливает файлы Android APK для проверки HTTPS (github.com).
apk-mitm можно вытащить с помощью npm.
Шаг 1: Запустите apk-mitm, как показано ниже.
Вот и все, apk-mitm сделал свое дело. Теперь мы можем установить пропатченный apk и перехватить трафик приложения.
Источник : конфигурация сетевой безопасности | Android-разработчики
Конфигурация сетевой безопасности работает в Android 7.0 или выше.
Шаг 1 : Декомпилируйте приложение Android с помощью apktool или альтернатив. И найдите network_security_config.xml файл в папке /res/xml.
Шаг 2. Файл может выглядеть так, если приложение закрепило собственные сертификаты ЦС.
Шаг 3 : Удалите этот раздел тега <pin-set>… </pin-set> и добавьте следующее:
Шаг 4: Теперь сохраните файл и перепакуйте приложение, используя apktool и uber-apk-signer (для подписи измененного apk).
Вот и все, установите наш новый apk, и все готово.
Итак, вот наш герой « Reflutter »:
« Эта структура помогает при обратном проектировании приложений Flutter с использованием исправленной версии библиотеки Flutter, которая уже скомпилирована и готова к переупаковке приложения. “
Репо: https://github.com/Impact-I/reFlutter
Шаг 1: установите рефлаттер с помощью pip
Шаг 2: Следуйте командам, показанным на скриншоте ниже.
Шаг 3: Подпишите приложение с помощью uber-apk-signer или любых других альтернатив и установите его.
Шаг 4: Теперь в Burp начните прослушивать порт 8083, а также включите « Поддержка невидимого прокси ».
Вот и все, вы готовы идти… !
Приложения с таким поведением в основном называются приложениями, не поддерживающими прокси-сервер . Такие приложения направляют трафик напрямую в Интернет, не взаимодействуя с общесистемными настройками прокси.
Время обхода:
За этот метод я хотел бы поблагодарить брата Фариса ❤.
(60) Фарис Мохаммед | LinkedIn
Шаг 1: Узнайте адрес домена, с которым приложение связывается с помощью Wireshark. Показано ниже.
Шаг 2: Декомпилируйте приложение с помощью apktool
Шаг 3: Войдите в декомпилированную папку и с помощью инструмента ack/grep найдите файл, в котором упоминается доменное имя.
Шаг 4: Замените доменное имя IP-адресом и портом BurpSuite.
Шаг 5: Перепакуйте приложение, подпишите его и установите на Android-устройство.
Шаг 7: В прокси-сервере BurpSuite на вкладке «Обработка запросов» укажите хост и порт перенаправления в качестве исходного адреса домена, который использовался приложением в первую очередь.
Шаг 8: Настройте соответствие и замену в параметрах прокси, чтобы заменить значение заголовка узла с IP-адреса прослушивателя burp на исходный доменный адрес приложения.
Вот и все. Теперь HTTP-трафик приложения будет перехватываться нашим прокси-сервером Burp.
Примечание. — Здесь, поскольку мы заменяем жестко заданный домен приложения, нам не нужно настраивать прокси-сервер устройства, поскольку приложение напрямую взаимодействует с жестко заданным доменом (мы заменили его IP-адресом нашего прокси-сервера).
Так что я думаю, что я сделал на данный момент. На самом деле, есть еще несколько других методов, которые мы можем использовать для обхода SSL-пиннинга Android. Я постараюсь сделать часть 2, основанную на ваших ответах.
Спасибо, ребята, удачного взлома
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ xss.pro
$600 ---> 0x5B1f2Ac9cF5616D9d7F1819d1519912e85eb5C09 для поднятия ноды ETHEREUM и тестов
Что понадобится:
Знакомство с прокси-сервером BurpSuite, базовым пентестированием Android и такими инструментами, как adb, frida, Objection, приложение Magisk, декомпиляция/перекомпиляция APK и подписание APK.Оглавление
- Есть ли в моем целевом приложении закрепление SSL?
- Подождите, как мы можем подтвердить пиннинг?
- Время обхода
- Почему я не могу перехватить трафик приложения, даже если приложение работает с HTTP
Я понял, это звучит как шутка, потому что вы, ребята, знаете, что если пиннинг установлен, мы не сможем перехватить HTTPS-трафик нашего целевого приложения для Android.
2. Подождите, как мы можем подтвердить пиннинг?
После настройки прокси-сервера как на устройстве, так и на прокси-сервере (Burp), запустите целевое приложение, затем выполните некоторые действия, которые обеспечивают связь между целевым приложением и их сервером. Пришло время понаблюдать за приборной панелью Burp, в частности, за разделом «Журнал». Если пиннинг установленн, то мы сможем увидеть ошибку сертификата следующим образом:
2. Время обхода
2.1 Переместить сертификат — модуль Magisk:
Если ваше устройство рутовано с помощью приложения Magisk, тогда модуль Move Certificate является одним из нормальных вариантов.
Этот модуль переместит доверенные сертификаты пользователя в системное хранилище, заставив систему (root) доверять сертификату, который устанавливает пользователь (сертификат нашего прокси CA).
2.2 Инструмент возражения
Репозиторий : sensepost/objection:
objection — runtime mobile exploration (github.com)Шаг 1 : Убедитесь, что сервер frida запущен на Android'e
Шаг 2: Прикрепите целевое приложение с objection с помощью следующей команды:
Код:
objection-g <имя пакета/PID> explore
Затем выполните команду « android sslpinning disable » .
Вот и все, скрипт найдет классы закрепления SSL и перехватит их во время выполнения, чтобы обойти закрепление.
2.3 Фреймворк Фрида
Репо: Фрида (github.com)Вот самый популярный и широко используемый метод.
Шаг 1 : Убедитесь, что сервер frida запущен на устройстве Android.
Шаг 2: Подключите целевое приложение к frida и запустите свой любимый скрипт обхода SSL.
Ниже приведены мои любимые сценарии:
https://codeshare.frida.re/@akabe1/frida-multiple-unpinning/
https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/
2.4 Использование Xposed Framework
Если ваше устройство рутовано с помощью Xposed framework , вы можете попробовать следующие модули, чтобы обойти закрепление- ac-pm/SSLUnpinning_Xposed: модуль Android Xposed для обхода проверки сертификата SSL (закрепление сертификата). (github.com)
- ViRb3/TrustMeAlready:
Отключить проверку и закрепление SSL на Android для всей системы (github.com)
2.5 Использование apk-mitm
apk-mitm — это CLI-приложение, которое автоматически подготавливает файлы Android APK для проверки HTTPS, изменяя файлы apk и переупаковывая их.Репо:
shroudedcode/apk-mitm:
CLI-приложение, которое автоматически подготавливает файлы Android APK для проверки HTTPS (github.com). apk-mitm можно вытащить с помощью npm.
Шаг 1: Запустите apk-mitm, как показано ниже.
Вот и все, apk-mitm сделал свое дело. Теперь мы можем установить пропатченный apk и перехватить трафик приложения.
2.6 Изменение файла network_security_config.xml
Конфигурация сетевой безопасности позволяет приложениям настраивать свои параметры сетевой безопасности с помощью декларативного файла конфигурации . Вся конфигурация содержится в этом файле XML, и никаких изменений в коде не требуется.Источник : конфигурация сетевой безопасности | Android-разработчики
Конфигурация сетевой безопасности работает в Android 7.0 или выше.
Шаг 1 : Декомпилируйте приложение Android с помощью apktool или альтернатив. И найдите network_security_config.xml файл в папке /res/xml.
Шаг 2. Файл может выглядеть так, если приложение закрепило собственные сертификаты ЦС.
Шаг 3 : Удалите этот раздел тега <pin-set>… </pin-set> и добавьте следующее:
Шаг 4: Теперь сохраните файл и перепакуйте приложение, используя apktool и uber-apk-signer (для подписи измененного apk).
Вот и все, установите наш новый apk, и все готово.
3. Что делать, если приложение не перехватывается, а также не показывает никаких ошибок !!
Здесь первое, что всплывает в моей голове, это « Флаттер ». Приложения, основанные на флаттере, в основном « не знают о прокси ».Итак, вот наш герой « Reflutter »:
« Эта структура помогает при обратном проектировании приложений Flutter с использованием исправленной версии библиотеки Flutter, которая уже скомпилирована и готова к переупаковке приложения. “
Репо: https://github.com/Impact-I/reFlutter
Шаг 1: установите рефлаттер с помощью pip
Шаг 2: Следуйте командам, показанным на скриншоте ниже.
Шаг 3: Подпишите приложение с помощью uber-apk-signer или любых других альтернатив и установите его.
Шаг 4: Теперь в Burp начните прослушивать порт 8083, а также включите « Поддержка невидимого прокси ».
Вот и все, вы готовы идти… !
4. Мое приложение использует только HTTP, но я все равно не могу его перехватить!!
Хм... как-то странно, но иногда такое случается.Приложения с таким поведением в основном называются приложениями, не поддерживающими прокси-сервер . Такие приложения направляют трафик напрямую в Интернет, не взаимодействуя с общесистемными настройками прокси.
Время обхода:
За этот метод я хотел бы поблагодарить брата Фариса ❤.
(60) Фарис Мохаммед | LinkedIn
Шаг 1: Узнайте адрес домена, с которым приложение связывается с помощью Wireshark. Показано ниже.
Шаг 2: Декомпилируйте приложение с помощью apktool
Шаг 3: Войдите в декомпилированную папку и с помощью инструмента ack/grep найдите файл, в котором упоминается доменное имя.
Шаг 4: Замените доменное имя IP-адресом и портом BurpSuite.
Шаг 5: Перепакуйте приложение, подпишите его и установите на Android-устройство.
Шаг 7: В прокси-сервере BurpSuite на вкладке «Обработка запросов» укажите хост и порт перенаправления в качестве исходного адреса домена, который использовался приложением в первую очередь.
Шаг 8: Настройте соответствие и замену в параметрах прокси, чтобы заменить значение заголовка узла с IP-адреса прослушивателя burp на исходный доменный адрес приложения.
Вот и все. Теперь HTTP-трафик приложения будет перехватываться нашим прокси-сервером Burp.
Примечание. — Здесь, поскольку мы заменяем жестко заданный домен приложения, нам не нужно настраивать прокси-сервер устройства, поскольку приложение напрямую взаимодействует с жестко заданным доменом (мы заменили его IP-адресом нашего прокси-сервера).
Так что я думаю, что я сделал на данный момент. На самом деле, есть еще несколько других методов, которые мы можем использовать для обхода SSL-пиннинга Android. Я постараюсь сделать часть 2, основанную на ваших ответах.
Спасибо, ребята, удачного взлома