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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2020-6514 — Эксплойт для CVE-2020-6514, нацеленный на повреждение памяти WebRTC SCTP в приложениях Android. Использует Frida для перехвата нативных функций и изменения пакетов SCTP для удаленного выполнения кода. | Kitploit
Инструменты/GitHubGitHub/hasan-khalil/cve-2020-6514
Безопасность AndroidДинамический анализ (песочница)ЭксплуатацияЭксплуатация веб-приложенийФаззингМобильная безопасностьЭксплуатация Бинарных Файлов
GitHubhasan-khalil/cve-2020-6514

CVE-2020-6514

Эксплойт для CVE-2020-6514, нацеленный на повреждение памяти WebRTC SCTP в приложениях Android. Использует Frida для перехвата нативных функций и изменения пакетов SCTP для удаленного выполнения кода.

Репозиторий
2236 лет назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2020-6514

Эксплойт При написании эксплойта я изначально изменял SCTP-пакеты, отправляемые на целевое устройство, путём изменения исходного кода WebRTC и его перекомпиляции. Это было непрактично для атак на закрытые приложения, поэтому я в итоге перешёл на использование Frida для перехвата бинарного файла атакующего устройства. Функциональность перехвата Frida позволяет выполнять код до и после вызова определённой нативной функции, что позволило моему эксплойту изменять исходящие SCTP-пакеты, а также проверять входящие. Функционально это эквивалентно изменению исходного кода атакующего клиента, но вместо изменений, вносимых в исходный код на этапе компиляции, они выполняются динамически с помощью Frida во время выполнения. Исходный код эксплойта доступен здесь.

Атакующему устройству необходимо перехватить семь функций, как показано ниже.

usrsctp_conninput // принимает входящие SCTP DtlsTransport::SendPacket // отправляет исходящие SCTP cricket::SctpTransport::SctpTransport // определяет, когда транспорт SCTP готов calculate_crc32c // вычисляет контрольную сумму для SCTP-пакетов sctp_hmac // выполняет HMAC для угадывания секретного ключа sctp_hmac_m // подписывает SCTP-пакет SrtpTransport::ProtectRtp // подавляет RTP для уменьшения шума кучи

Эти функции можно перехватывать как символы или как смещения в бинарном файле.

Также для работы эксплойта необходимы три смещения адресов из бинарного файла целевого устройства. Смещение между функцией system и функцией malloc, а также смещение между гаджетом, описанным в предыдущей статье, и функцией malloc — два из них. Эти смещения находятся в libc, системной библиотеке Android, поэтому их необходимо определять на основе версии Android целевого устройства. Также требуется смещение от расположения vtable cricket::SctpTransport до расположения malloc в глобальной таблице смещений (GOT). Это необходимо определить из бинарного файла, содержащего WebRTC в атакуемом приложении.

Обратите внимание, что предоставленные скрипты эксплойта имеют серьёзное ограничение: при каждом чтении памяти это работает только в том случае, если установлен 31-й бит указателя. Причины этого объясняются в Части 2. Скрипт эксплойта содержит пример того, как это исправить и прочитать любой указатель с помощью фрагментов FWD_TSN, но это реализовано не для каждого чтения. Для целей тестирования я перезагружал устройство до тех пор, пока библиотека WebRTC не отображалась в благоприятном месте. Приложения Android Список популярных приложений Android, интегрирующих WebRTC, был определён путём поиска в APK-файлах на Google Play конкретной строки в usrsctp. Примерно 200 приложений с более чем пятью миллионами пользователей, по-видимому, используют WebRTC. Я оценил эти приложения, чтобы определить, могут ли они потенциально быть затронуты уязвимостями в эксплойте, и каким будет воздействие.

Оказалось, что способы использования WebRTC приложениями весьма разнообразны, но их можно разделить на четыре основные категории.

  • Проецирование: экран и элементы управления мобильного приложения проецируются в настольный браузер с согласия пользователя для повышения удобства использования.
  • Стриминг: аудио- и видеоконтент отправляется от одного пользователя многим пользователям. Обычно существует промежуточный сервер, поэтому отправителю не нужно управлять, возможно, тысячами пиров, а контент записывается для последующего просмотра.
  • Браузеры: все основные браузеры содержат WebRTC для реализации JavaScript WebRTC API.
  • Конференции: два или более пользователей общаются через аудио или видео в реальном времени.

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

Стриминг также является довольно низким риском. Хотя возможно, что некоторые приложения используют одноранговые соединения, когда у потока мало зрителей, они обычно используют промежуточный сервер, который завершает WebRTC-соединение от отправляющего пира и устанавливает новые соединения с принимающими пирами. Это означает, что злоумышленник обычно не может отправлять повреждённые пакеты напрямую пиру. Даже при настройке, где стриминг выполняется по принципу «пир-пиру», для просмотра потока целью требуется взаимодействие с пользователем, и часто нет способа ограничить, кто может получить доступ к потоку. По этой причине стриминговые приложения, использующие WebRTC, вероятно, бесполезны для целевых атак. Конечно, возможно, что эти уязвимости затрагивают серверы, используемые стриминговыми сервисами, но это не исследовалось в данной работе.

Браузеры почти наверняка уязвимы к большинству ошибок в WebRTC, поскольку они позволяют в значительной степени контролировать его настройку. Чтобы использовать такую ошибку в браузере, злоумышленнику необходимо настроить хост, который выступает в роли другого пира в одноранговом соединении, и убедить цель посетить веб-страницу, которая начинает вызов этому хосту. В этом случае уязвимость будет иметь аналогичное воздействие, как и другие уязвимости повреждения памяти в JavaScript.

Конференции — это наиболее рискованное использование WebRTC, но фактическое воздействие уязвимости сильно зависит от того, как пользователи приложения связываются друг с другом. Наиболее рискованным дизайном является приложение, в котором любой пользователь может связаться с любым другим пользователем на основе идентификатора. Некоторые приложения требуют, чтобы вызываемый абонент определённым образом взаимодействовал с вызывающим до того, как может быть совершён вызов, что усложняет связь с целью и в целом снижает риск. Некоторые приложения требуют, чтобы пользователи ввели код или перешли по ссылке, чтобы начать вызов, что даёт аналогичный эффект. Существует также большая группа приложений, в которых сложно или невозможно позвонить конкретному пользователю, например приложения «чат-рулетка» и приложения, имеющие функции, позволяющие пользователю начать вызов в службу поддержки клиентов.

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

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