Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
frida-interception-and-unpinning — Скрипты Frida для переписывания мобильных приложений во время выполнения с целью прямого MitM-перехвата всего HTTPS-трафика | Kitploit
Инструменты/GitHubGitHub/httptoolkit/frida-interception-and-unpinning
Безопасность AndroidБезопасность iOSВеб-прокси и перехватПентестинг мобильных приложенийОбратная инженерияТестирование на ПроникновениеМобильная безопасность
GitHubhttptoolkit/frida-interception-and-unpinning

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

frida-interception-and-unpinning

Скрипты Frida для переписывания мобильных приложений во время выполнения с целью прямого MitM-перехвата всего HTTPS-трафика

РепозиторийСайт
2.3k2922 дней назадПроверено Kitploit

Скрипты Frida для перехвата на мобильных устройствах Funded by NLnet - NGI Zero Entrust

Часть HTTP Toolkit: мощные инструменты для создания, тестирования и отладки HTTP(S)

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

Этот набор скриптов можно использовать целиком — для организации перехвата, управления доверием к сертификатам и отключения проверок certificate pinning и certificate transparency — для MitM-перехвата HTTP(S)-трафика на Android и iOS. Также их можно использовать и настраивать по отдельности, чтобы хукать только отдельные функции.

Скрипты могут автоматически:

  • Перенаправление трафика на HTTP(S)-прокси — изменение как системных настроек, так и прямое перенаправление всех socket-соединений.
  • Внедрение заданного CA-сертификата в системные хранилища доверия, чтобы он по умолчанию доверялся при соединениях.
  • Патчинг многих (всех?) известных средств certificate pinning и certificate transparency, чтобы перехват с помощью вашего CA-сертификата был возможен даже там, где это активно блокируется.
  • На Android в качестве запасного варианта: автоматическое обнаружение оставшихся ошибок pinning, чтобы попытаться автоматически пропатчить обфусцированный certificate pinning (в полностью обфусцированных приложениях первый запрос может завершиться неудачей, но это вызовет дополнительный патчинг, чтобы все последующие запросы работали корректно).
  • Отключение множества распространённых проверок обнаружения root и джейлбрейка.
  • Блокировка большинства HTTP/3-соединений (всего UDP-трафика на порт 443), которые могут быть неудобны для перехвата, что заставляет приложения возвращаться к HTTP/2 или HTTP/1.

Руководство по началу работы с Android

  1. Запустите ваш MitM-прокси (например, HTTP Toolkit) и настройте рутированное Android-устройство или эмулятор, подключённые к ADB.
  2. Узнайте порт вашего MitM-прокси (например, 8000) и его CA-сертификат в формате PEM
    • CA-сертификат должен начинаться с -----BEGIN CERTIFICATE-----. Вы можете открыть его в текстовом редакторе, чтобы увидеть и извлечь это содержимое.
    • В HTTP Toolkit обе детали можно найти в опции «Anything» на странице Intercept.
  3. Откройте config.js и добавьте эти детали:
    • CERT_PEM: ваш CA-сертификат в формате PEM.
    • PROXY_PORT: порт прокси
    • PROXY_HOST: адрес вашего прокси с точки зрения вашего устройства (или используйте adb reverse tcp:$PORT tcp:$PORT, чтобы пробросить порт через ADB, и используйте 127.0.0.1 в качестве хоста)
  4. Установите и запустите Frida на вашем устройстве
    • Действия здесь могут зависеть от вашего конкретного устройства и конфигурации.
    • Например: загрузите соответствующий frida-server с github.com/frida/frida, распакуйте его, выполните adb push на устройство, а затем запустите его следующими 4 командами: , , , .

Руководство по началу работы с iOS

  1. Запустите ваш MitM-прокси (например, HTTP Toolkit) и настройте ваше джейлбрейкнутое iOS-устройство, подключённое к компьютеру.
  2. Узнайте порт вашего MitM-прокси (например, 8000) и его CA-сертификат в формате PEM
    • CA-сертификат должен начинаться с -----BEGIN CERTIFICATE-----. Вы можете открыть его в текстовом редакторе, чтобы увидеть и извлечь это содержимое.
    • В HTTP Toolkit обе детали можно найти в опции «Anything» на странице Intercept.
  3. Откройте config.js и добавьте эти детали:
    • CERT_PEM: ваш CA-сертификат в формате PEM.
    • PROXY_PORT: порт прокси
    • PROXY_HOST: адрес вашего прокси с точки зрения вашего устройства
  4. Установите и запустите Frida на вашем устройстве
    • Действия здесь могут зависеть от вашего конкретного устройства и конфигурации, но в целом это доступно через Cydia/Sileo и т.п., используя https://build.frida.re в качестве источника пакетов.
    • Убедитесь, что вы можете выполнить frida-ps -Uai на вашем компьютере, чтобы подтвердить, что всё работает правильно.
  5. Найдите id нужного приложения через frida-ps -Uai (для быстрой проверки попробуйте использовать github.com/httptoolkit/ios-ssl-pinning-demo — id: )

Скрипты

Приведённые выше команды используют все соответствующие скрипты, но в целом вы можете использовать любой их набор. Однако почти во всех случаях вам потребуется включить config.js первым скриптом (он определяет некоторые переменные, используемые другими скриптами).

Например, чтобы выполнить только отключение pinning на Android, когда конфигурация прокси и сертификатов обрабатывается в другом месте и без запасных вариантов для обфускации, вы можете просто запустить:

root@kitploit:~
frida -U \
    -l ./config.js \
    -l ./android/android-certificate-unpinning.js
    -f $PACKAGE_ID

Каждый скрипт содержит подробную документацию о том, что он делает и как работает, в большом блоке комментариев в начале. Скрипты:

  • config.js

    Этот скрипт определяет переменные, используемые другими скриптами:

    • CERT_PEM — дополнительный CA-сертификат, которому следует доверять, в формате PEM
    • PROXY_HOST — IP-адрес (IPv4) прокси-сервера для использования (не требуется, если вы только выполняете отключение pinning)
    • PROXY_PORT — порт прокси-сервера для использования (не требуется, если вы только выполняете отключение pinning)
    • DEBUG_MODE — по умолчанию false, но переключение на true включит множество дополнительного вывода, который может быть полезен для отладки и реверс-инжиниринга любых проблем.
    • BLOCK_HTTP3 — по умолчанию true, что блокирует HTTP/3 путём отбрасывания всех UDP-соединений на порт 443.

    Этот скрипт должен быть указан в командной строке перед любыми другими скриптами.

  • native-connect-hook.js

    Захватывает весь сетевой трафик напрямую, направляя все соединения на настроенные хост и порт прокси.

    Это низкоуровневый хук, который применяется ко всем сетевым соединениям. Это гарантирует, что все соединения принудительно перенаправляются на целевой прокси-сервер, даже те, которые игнорируют настройки прокси или устанавливают другие «сырые» socket-соединения, а также блокирует HTTP/3-соединения, если эта функция включена.

Эти скрипты являются частью более широкого проекта HTTP Toolkit, финансируемого через фонд NGI Zero Entrust, учреждённый NLnet при финансовой поддержке программы Next Generation Internet Европейской комиссии. Подробнее на странице проекта NLnet.

Логотип фонда NLnet Логотип NGI Zero Entrust

Скачать инструмент
adb shell
su
chmod +x /.../frida-server
/.../frida-server
  • Если у вас возникли проблемы, не забудьте проверить, что устройство включено и подключено (с помощью adb devices) перед выполнением команд. Обратите внимание, что Frida будет работать на устройстве только от имени root, что и обеспечивает su в примере выше при запуске на рутированном устройстве. Чтобы проверить, что вы root после выполнения su или аналогичной команды, убедитесь, что whoami в оболочке выводит root.
  • Найдите package id приложения, которое вас интересует (для быстрой проверки попробуйте использовать github.com/httptoolkit/android-ssl-pinning-demo — package id: tech.httptoolkit.pinning_demo)
  • Используйте Frida для запуска нужного приложения с внедрёнными скриптами (начиная с config.js). Какие скрипты использовать — решать вам, но для Android хорошей стартовой командой будет:
    root@kitploit:~
    frida -U \
        -l ./config.js \
        -l ./native-connect-hook.js \
        -l ./native-tls-hook.js \
        -l ./android/android-proxy-override.js \
        -l ./android/android-system-certificate-injection.js \
        -l ./android/android-certificate-unpinning.js \
        -l ./android/android-certificate-unpinning-fallback.js \
        -l ./android/android-disable-root-detection.js \
        -f $PACKAGE_ID
    
  • Исследуйте, изучайте и изменяйте весь интересующий вас трафик! Если у вас возникнут проблемы, пожалуйста, откройте issue и помогите сделать эти скрипты ещё лучше.
  • com.httptoolkit.ios-pinning-demo
  • Используйте Frida для запуска нужного приложения с внедрёнными скриптами (начиная с config.js). Какие скрипты использовать — решать вам, но для iOS хорошей стартовой командой будет:
    root@kitploit:~
    frida -U \
        -l ./config.js \
        -l ./ios/ios-connect-hook.js \
        -l ./ios/ios-disable-detection.js \
        -l ./native-tls-hook.js \
        -l ./native-connect-hook.js \
        -f $APP_ID
    
  • Исследуйте, изучайте и изменяйте весь интересующий вас трафик! Если у вас возникнут проблемы, пожалуйста, откройте issue и помогите сделать эти скрипты ещё лучше.
  • Этот хук применяется к libc и работает на Android, Linux, iOS и многих других связанных окружениях.

  • native-tls-hook.js

    Изменяет всю проверку TLS для библиотек на основе BoringSSL, чтобы они доверяли вашему настроенному CA-сертификату.

    В частности, этот скрипт хукает встроенные BoringSSL API на iOS, которые являются обычным способом проверки TLS-сертификатов в iOS (поэтому этого достаточно почти для всего HTTPS-перехвата на iOS), но он также используется в некоторых других случаях и на iOS, и на Android.

    По сути, это заставляет доверять вашему CA для всех сертификатов и отключает все certificate pinning, certificate transparency и другие ограничения для вашего CA. Обратите внимание, что, в отличие от многих других Frida-хуков, этот скрипт не отключает проверку TLS полностью (что очень небезопасно). Вместо этого он переопределяет проверку, чтобы все соединения, использующие ваш конкретный CA-сертификат, считались доверенными, не ослабляя проверку настолько, чтобы позволить перехват третьими сторонами.

  • android/

    • android-proxy-override.js

      Переопределяет настройки прокси Android для целевого приложения, гарантируя, что весь корректный трафик перенаправляется через прокси-сервер и перехватывается.

    • android-system-certificate-injection.js

      Изменяет нативные Android API, чтобы все хранилища доверия по умолчанию доверяли вашему дополнительному CA-сертификату, позволяя перехватывать зашифрованный TLS-трафик.

    • android-certificate-unpinning.js

      Изменяет или отключает множество распространённых известных методов дополнительных ограничений сертификатов, включая certificate pinning (принятие только небольшого набора распознанных сертификатов, а не всех сертификатов, которым доверяет система) и certificate transparency (проверку того, что все используемые сертификаты были зарегистрированы в публичных сертификатных журналах).

    • android-certificate-unpinning-fallback.js

      Обнаруживает необработанные ошибки проверки сертификатов и пытается обработать неизвестные нераспознанные случаи с помощью автоматически создаваемых запасных патчей. Это более экспериментальный скрипт, и он может быть несколько непредсказуемым, но очень полезен для обфусцированных случаев: в целом он либо исправит проблемы pinning (после одного первоначального сбоя), либо, по крайней мере, выделит код для дальнейшего реверс-инжиниринга в выводе журнала Frida. Этот скрипт разделяет некоторую логику с android-certificate-unpinning.js и не может использоваться отдельно — если вы хотите использовать этот скрипт, вам нужно будет также подключить обычный скрипт отключения pinning (не fallback-версию).

    • android-disable-root-detection.js

      Отключает распространённые проверки обнаружения root в нативных и Java-слоях, чтобы предотвратить обнаружение рутированных Android-устройств.

      Этот скрипт перехватывает доступ к файловой системе, shell-команды и поиск пакетов по известным индикаторам root (таким как su, Magisk и связанные приложения), а также подделывает ключевые системные свойства (ro.secure, ro.debuggable и т.д.), чтобы имитировать производственную среду.

      Он блокирует подозрительное поведение, такое как проверки существования файлов и выполнение shell-команд, помогая избежать обнаружения в приложениях, использующих как стандартные, так и продвинутые проверки root.

    • android-disable-flutter-certificate-pinning.js

      Обеспечивает доверие приложений на основе Flutter (которые обычно игнорируют системную конфигурацию сертификатов) к вашему CA-сертификату, даже в большинстве случаев явного certificate pinning. Этот скрипт пока остаётся экспериментальным.

  • ios/

    • ios-connect-hook.js

      Захватывает весь сетевой трафик iOS напрямую, направляя все соединения на настроенные хост и порт прокси.

      Это низкоуровневый хук, который применяется ко всем сетевым соединениям. Это гарантирует, что все соединения принудительно перенаправляются на целевой прокси-сервер, даже те, которые игнорируют настройки прокси или устанавливают другие «сырые» socket-соединения.

    • ios-disable-detection.js

      Отключает обнаружение джейлбрейка JailMonkey.

  • utilities/test-ip-connectivity.js

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

    Этот скрипт позволяет настроить список возможных IP-адресов и целевой порт, после чего процесс проверяет каждый адрес и отправляет сообщение Frida-клиенту для первого доступного адреса из списка. Это может быть полезно для автоматизированных процессов настройки, если вы не знаете, какой IP-адрес лучше всего использовать для доступа к прокси-серверу (вашему компьютеру) с целевого устройства (вашего телефона).