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

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

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

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

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

Категории

Все категории
Loading categories
apk-mitm — 🤖 CLI-приложение, которое автоматически подготавливает APK-файлы Android для проверки HTTPS | Kitploit
Инструменты/GitHubGitHub/niklashigi/apk-mitm
Безопасность AndroidПентестинг мобильных приложенийОбратная инженерияВеб-безопасностьТестирование на ПроникновениеМобильная безопасностьТоп в Безопасность Android №11Топ в Пентестинг мобильных приложений №15Топ в Мобильная безопасность №15
5.1k431252 лет назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHubniklashigi/apk-mitm

apk-mitm

🤖 CLI-приложение, которое автоматически подготавливает APK-файлы Android для проверки HTTPS

РепозиторийСайт

apk-mitm

CLI-приложение, которое автоматически подготавливает APK-файлы Android для инспекции HTTPS-трафика

Инспекция HTTPS-трафика мобильного приложения через прокси — это, вероятно, самый простой способ понять, как оно работает. Однако с появлением [Network Security Configuration][network-security-config] в Android 7 и попытками разработчиков предотвратить MITM-атаки с помощью [certificate pinning][certificate-pinning], настройка приложения для работы с HTTPS-прокси стала довольно утомительной.

apk-mitm автоматизирует весь процесс. Всё, что нужно — передать ему APK-файл, и apk-mitm сделает следующее:

  • декодировать APK-файл с помощью [Apktool][apktool]
  • заменить [Network Security Configuration][network-security-config] приложения, чтобы разрешить сертификаты, добавленные пользователем
  • изменить исходный код, чтобы отключить различные реализации [certificate pinning][certificate-pinning]
  • закодировать модифицированный APK-файл с помощью [Apktool][apktool]
  • подписать модифицированный APK-файл с помощью [uber-apk-signer][uber-apk-signer]

Вы также можете использовать apk-mitm для патчинга приложений с использованием Android App Bundle, и рутирование телефона не требуется.

⚠️ Ограничения и альтернативы

Изменение обычного поведения приложения для обхода таких функций безопасности, как certificate pinning, требует либо изменения исходного кода приложения до его запуска, либо ["хукинга"][hooking] приложения во время его работы для перехвата вызовов функций.

В настоящее время apk-mitm использует первый подход — модификацию кода приложения, сначала «дизассемблируя» приложение с помощью [Apktool][apktool], внося изменения в несколько файлов, а затем собирая его обратно (снова с помощью Apktool).

Этот подход имеет преимущество: он не требует рутированного устройства, но у него есть и несколько недостатков. Самая большая проблема заключается в том, что приложения, по сути, не предназначены для дизассемблирования. Apktool пытается сделать это в любом случае, но, особенно с большими и сложными приложениями, часто возникают проблемы.

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

В частности, я хотел бы выделить [проект android-unpinner от mitmproxy][android-unpinner] и [базовые скрипты frida-interception-and-unpinning от HTTP Toolkit][frida-interception-and-unpinning]. Их подход применяет патчи во время выполнения с помощью [Frida][frida], что гораздо мощнее, но также означает, что его либо нельзя использовать, либо он сложнее в использовании без рутированного устройства.

Установка

Если у вас установлены актуальные версии [Node.js][node] (14+) и [Java][java] (8+), вы можете установить apk-mitm выполнив:

npm install -g apk-mitm

Использование

После установки выполните эту команду для патчинга приложения:

apk-mitm <путь-к-apk>

Патчинг APK-файла с именем example.apk может выглядеть так:

$ apk-mitm example.apk

  ✔ Декодирование APK-файла
  ✔ Изменение манифеста приложения
  ✔ Замена конфигурации сетевой безопасности
  ✔ Отключение certificate pinning
  ✔ Кодирование пропатченного APK-файла
  ✔ Подписание пропатченного APK-файла

   Готово!  Пропатченный APK: ./example-patched.apk

Теперь вы можете установить файл example-patched.apk на своё Android-устройство и использовать прокси вроде [Charles][charles] или [mitmproxy][mitmproxy], чтобы просматривать трафик приложения.

Патчинг App Bundle

Вы также можете патчить приложения, используя Android App Bundle, с помощью apk-mitm, предоставив ему файл *.xapk (например, из [APKPure][apkpure]) или файл *.apks (который вы можете экспортировать самостоятельно с помощью [SAI][sai]). Если вы делаете это в Linux, убедитесь, что установлены zip и unzip.

Внесение ручных изменений

Иногда вам потребуется внести ручные изменения в приложение, чтобы оно заработало. В таких случаях вам понадобится опция --wait. Её включение заставит apk-mitm ждать перед повторным кодированием приложения, позволяя вам вносить изменения в файлы во временной папке.

Если вы хотите экспериментировать с разными изменениями в APK, то использование --wait, вероятно, не самый удобный вариант, так как он вынуждает начинать с нуля каждый раз. В этом случае вам стоит обратить внимание на [APKLab][apklab]. Это рабочая среда для реверс-инжиниринга Android, построенная на базе VS Code, которая поддерживает [apk-mitm][apklab-mitm] и позволяет итерировать гораздо быстрее.

Разрешение определённых сертификатов

На некоторых устройствах (например, Android TV) вы не можете добавить новый сертификат в корневые сертификаты системы. В таких случаях вы всё равно можете добавить сертификат вашего прокси [непосредственно в Network Security Config приложения][network-security-config-custom-ca], так как это работает на любом устройстве. Вы можете сделать это, запустив apk-mitm с флагом --certificate, указав путь к сертификату (файл .pem или .der), используемому вашим прокси.

Подводные камни

  • Если приложение использует Google Maps и после патчинга карта перестала работать, то, вероятно, API-ключ приложения [ограничен сертификатом разработчика][google-api-key-restrictions]. Вам нужно будет [создать свой собственный API-ключ][google-maps-android] без ограничений и запустить apk-mitm с опцией --wait, чтобы заменить значение com.google.android.geo.API_KEY в файле AndroidManifest.xml приложения.

  • Если apk-mitm вылетает при декодировании или кодировании, проблема, скорее всего, связана с [Apktool][apktool]. Проверьте [их issues на GitHub][apktool-issues], чтобы найти возможные обходные пути. Если вы найдёте версию Apktool, на которую не влияет проблема, вы можете указать apk-mitm использовать её, задав путь к её JAR-файлу через опцию --apktool.

Благодарности

  • Connor Tumbleson за создание [отличного декомпилятора APK][apktool]
  • Patrick Favre-Bulle за создание [очень простого инструмента для подписи APK][uber-apk-signer]
  • Ryan Welton за вдохновение большей части кода по удалению certificate pinning

Лицензия

MIT © Niklas Higi

Скачать инструмент