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

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

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

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

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

Категории

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

Популярное

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

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

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

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

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

apk-mitm

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

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

apk-mitm

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

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

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

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

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

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

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

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

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

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

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

Установка

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

root@kitploit:~
npm install -g apk-mitm

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

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

root@kitploit:~
apk-mitm <путь-к-apk>

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

root@kitploit:~
$ apk-mitm example.apk

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

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

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

Патчинг App Bundle

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

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

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

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

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

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

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

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

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

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

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

Лицензия

MIT © Niklas Higi

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