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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-0073-Android-client-TLS-auth-bypass — перевод оригинального эксплойта Python на C | Kitploit
Инструменты/GitHubGitHub/m00ddy/cve-2026-0073-android-client-tls-auth-bypass
Безопасность AndroidАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubm00ddy/cve-2026-0073-android-client-tls-auth-bypass

CVE-2026-0073-Android-client-TLS-auth-bypass

перевод оригинального эксплойта Python на C

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
223 месяцев назадЕщё не проверено

CVE‑2026‑0073 — это логическая ошибка в демоне ADB (adbd) Android, которая позволяет злоумышленнику обойти взаимную аутентификацию TLS и открыть удалённую оболочку на устройстве, на котором включена беспроводная отладка и которое было сопряжено с любым компьютером хотя бы один раз. Коренная причина — один неправильно используемый API: возвращаемое значение EVP_PKEY_cmp() из OpenSSL трактуется как логическое значение вместо трёхзначного результата.

Обычный процесс аутентификации при беспроводной отладке ADB

когда мы включаем беспроводную отладку в настройках разработчика Android, устройство запускает экземпляр adbd, который прослушивает случайный TCP-порт. Примечание: эта функция была введена в Android 11 и более поздних версиях.

протокол состоит из двух фаз:

  1. согласование в открытом виде: хост подключается по TCP и обменивается рукопожатием CNXN/STLS, чтобы договориться о переходе на TLS.
  2. взаимная аутентификация TLS 1.3:
    • сервер adbd требует от клиента предоставить сертификат
    • adbd извлекает открытый ключ из этого сертификата
    • затем он сравнивает ключ со всеми авторизованными RSA-ключами, хранящимися в /data/misc/adb/adb_keys. Ключи помещаются туда во время предыдущих сопряжений (для эксплуатации требуется, чтобы здесь был хотя бы один ключ).
    • если ключи совпадают, рукопожатие успешно завершается, и хост может отправлять команды оболочки как пользователь shell сравнение ключей выполняется с помощью OPENSSL's EVP_PKEY_cmp(key1, key2), который возвращает
  • 1 --> ключи равны
  • 0 --> ключи не равны
  • -1 --> типы ключей различаются или произошла ошибка

Ошибка

в файле daemon/auth.cpp уязвимая функция adb_tls_verify_cert() выглядит примерно так:

root@kitploit:~
int cmp = EVP_PKEY_cmp(stored_rsa_key, peer_key);
if (cmp) {     
    authorised = true;
}

поскольку if(cmp) возвращает true, пока cmp не равно нулю, возвращаемое значение -1 от EVP_PKEY_cmp() приводит к авторизации. Это означает, что поскольку сохранённый ключ является RSA, то когда клиент предъявляет сертификат EC или ed25519, функция возвращает -1, и злоумышленник получает авторизованный доступ.

Последовательность атаки

  1. цель: устройство Android с включённой беспроводной отладкой и хотя бы одним RSA-ключом в хранилище ключей (оно было сопряжено хотя бы один раз, кем угодно).

  2. рукопожатие в открытом виде: злоумышленник подключается к TCP-порту adbd и обменивается CNXN/STLS.

  3. TLS-рукопожатие с EC-сертификатом: злоумышленник генерирует эфемерный ключ EC P‑256 и самоподписанный сертификат. Этот ключ намеренно не является RSA.

  4. ошибочное сравнение: EVP_PKEY_cmp(RSA, EC) возвращает ‑1 → if (cmp) истинно → adbd помечает транспорт как авторизованный.

  5. после TLS: злоумышленник избегает отправки CNXN хоста (что сбросило бы транспорт) и напрямую открывает поток shell: с большим окном delayed_ack.

Результат: удалённая оболочка от имени пользователя shell, без взаимодействия с пользователем, без уведомления и без необходимости обладать каким-либо легитимным закрытым ключом.

Зачем переводить это на C?

Скрипт на Python требует интерпретатора Python 3 и библиотеки cryptography, установленных на машине атакующего. Реализация на C компилируется в автономный бинарный файл без внешних зависимостей, кроме системного OpenSSL/libssl, который присутствует практически на каждой системе Linux по умолчанию. Это кардинально снижает барьер для развёртывания. Кроме того, программу на C можно кросс-компилировать для любой целевой архитектуры (x86_64, ARM, MIPS). Это означает, что эксплойт может быть скомпилирован и запущен непосредственно на встраиваемых устройствах, таких как маршрутизаторы, Raspberry Pi или даже другое устройство Android, выступающее в роли атакующего, без необходимости в Python-окружении. А скомпилированный бинарник C может быть лишён символов, упакован (UPX) и непрозрачен без дизассемблера, что делает его более скрытным, чем скрипт на Python.

Демонстрация

запуск эксплойта: укажите IP и PORT интерфейса беспроводной отладки, и вы получите оболочку на устройстве.

root@kitploit:~
docker build -t adb_bypass .
docker run -it --network host adb_bypass <IP> <PORT>

открываем калькулятор

root@kitploit:~
am start -n com.sec.android.app.popupcalculator/com.sec.android.app.popupcalculator.Calculator

Примечание об использовании LLM

LLM был использован для перевода эксплойта с Python на C, оригинальный эксплойт находится здесь. Перевод не был точным 1:1, и мы столкнулись с множеством проблем, поэтому для исправления ошибок в переводе и получения полностью рабочего эксплойта потребовался цикл анализа кода и общения туда-сюда.

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