CVE-2024-7479 TeamViewer: Неправильная проверка подписи установки драйвера
Author: Marcos Accossatto
Только для демонстрационных целей. Полный эксплойт работает на уязвимой версии TeamViewer для Windows.
Введение
Этот PoC эксплойта является реализацией на Python PoC от Pedro Gabaldon для CVE-2024-7479.
Этот скрипт содержит все классы для работы с IPC протоколом для эксплуатации.
Для финальной эксплуатации драйвер dbutil_2_3.sys и скомпилированный исполняемый файл из проекта BYOVDKit должны находиться в той же локальной директории, что и этот скрипт.
Этот скрипт тестировался на TeamViewer 15.57.5.
Шаги эксплуатации скрипта
Этот скрипт выполнит следующие шаги для эксплуатации уязвимости:
- Открыть сокет на 127.0.0.1 и порт 5939.
- Выполнить BYOVDKit.exe со следующей командной строкой, чтобы проверить, установлен ли уже драйвер:
BYOVDKit.exe 1 token 4
- Собрать 1-й IPC запрос через функцию getClientAuth и отправить его на сервер.
- Извлечь response_challenge из ответа сервера через функцию getServerChallengeFromResponse
- Объединить response_challenge и "secret" значение, вычислить его MD5 хеш, затем использовать для сборки 2-го IPC запроса через функцию getClientAuth.
- Отправить 2-й запрос для завершения аутентификации.
- Получить PID процесса python, найти и извлечь версию исполняемого файла TeamViewer.exe, собрать 3-й IPC запрос через функцию getControlRequest и отправить его на сервер.
- Читать IPC пакеты от сервера до завершения синхронизации конфигурации (обычно 21 пакет).
- Скопировать файл TeamViewerVPN.cat из директории TeamViewer x64 в директорию скрипта.
- Скопировать файл TeamViewerVPN.inf из директории TeamViewer x64 в директорию скрипта и переименовать в случайный inf файл.
- Переименовать файл dbutil_2_3.sys из директории скрипта в TeamViewerVPN.sys.
- Собрать 3-й IPC запрос через функцию getInstallDriverRequest и отправить его на сервер.
- Ждать, пока пользователь нажмёт кнопку Install this driver software anyway, чтобы завершить установку драйвера, и нажать ENTER
- Удалить все скопированные/созданные/переименованные файлы (TeamViewerVPN.cat, TeamViewerVPN.sys и случайный .inf файл)
- Выполнить BYOVDKit.exe со следующей командной строкой для запуска cmd с правами системы:
BYOVDKit.exe 1 token 4
Использование
- Запустите cmd.exe от имени обычного пользователя.
- Используйте whoami, чтобы проверить имя пользователя.
- Запустите скрипт с помощью python CVE-2024-7479_PoC.py.
- Когда появится предупреждение об установке драйвера, нажмите на Всё равно установить этот драйвер, чтобы установить драйвер.
- Вернитесь в окно cmd и нажмите ENTER, чтобы продолжить выполнение скрипта.
- Используйте whoami, чтобы проверить, что имя пользователя — nt authority\system.

Ссылки
Надеемся, это было полезно. Если у вас есть вопросы, свяжитесь с нами по адресу [email protected]
Приятного использования!