Автоустановку USB в Windows 11 довели до полного захвата SYSTEM

2026-08-11 428 комментарии
На DEF CON 34 исследователи показали, как штатная автоустановка драйверов USB в Windows 11 доводит непривилегированного пользователя до прав SYSTEM. Механизм Plug and Play сам скачивает подписанные пакеты поставщиков через Центр обновления и запускает их компоненты как SYSTEM

Штатную автоустановку драйверов USB в Windows 11 исследователи Алехандро Эрнандо и Борха Мартинес довели до полного захвата прав SYSTEM. Механизм Plug and Play сам скачивает подписанные пакеты поставщиков через Центр обновления Windows и запускает их компоненты с системными привилегиями, поэтому обычное требование прав администратора здесь отпадает. Непривилегированному пользователю достаточно предъявить машине эмулированное USB-устройство – физически или по сети через перенаправление USB в удалённом рабочем столе. Работу показали на DEF CON 34; демонстрация выполнена на полностью обновлённой Windows 11, и вывод не распространяется на другие версии без отдельной проверки.

Как Plug and Play становится загрузчиком стороннего кода

Когда к машине подключается USB-устройство, Windows читает дескрипторы, извлекает идентификаторы производителя и продукта, класс устройства, а затем строит идентификаторы оборудования. По ним система ищет подходящий пакет драйвера сначала в локальном хранилище, а при отсутствии совпадения обращается к Центру обновления Windows. Если пакет допускает автоматическую установку, CAB-архив скачивается, размещается в хранилище драйверов и запускается последовательность установки от имени учётной записи SYSTEM.

Дескрипторы приходят от самого устройства, а Windows принимает их без проверки подлинности. Контролируя дескрипторы, атакующий задаёт и идентификаторы оборудования, которые система сопоставляет с INF-файлами. Через этот путь на машину попадают сотни подписанных пакетов, часть которых содержит логические уязвимости. Криптографическая подпись подтверждает происхождение пакета, но не гарантирует, что каждая служба, соустановщик или параметр реестра проверены с точки зрения безопасности.

Соустановщик (co-installer) – вспомогательная библиотека или исполняемый файл в составе пакета драйвера, которая выполняет дополнительные операции при установке: копирует файлы, создаёт службы, обращается к реестру. Соустановщик из пакета Plug and Play выполняется с правами SYSTEM.

Физическая цепочка: Sierra задаёт DNS, Sony пишет DLL в System32

Первый сценарий не требует ни одного нажатия и работает даже до входа пользователя в систему. На стороне цели – полностью обновлённая Windows 11 без предустановленного ПО. На стороне атакующего – машина с Linux и платой FaceDancer, которая эмулирует USB-устройства. Весь проход от чистой системы до оболочки SYSTEM занимает около пяти минут.

Цепочка начинается с эмуляции устройства Sierra Wireless. При его установке появляется служба SwiService.exe, работающая как SYSTEM. Она открывает именованный канал с разрешениями чтения и записи для группы «Все», и любой локальный или доменный пользователь может вызвать функцию SetDNS, в том числе по сети через SMB. Атакующий переводит DNS на подконтрольный сервер и подменяет только нужные ответы, не трогая остальной трафик.

Затем эмулируется устройство Sony FeliCa. Его соустановщик felica_coinst.dll во время установки скачивает конфигурационные файлы по обычному HTTP и без проверки доверяет всему, что получает. Поскольку DNS уже подменён, ответы отдаёт сервер атакующего. Имя локального файла соустановщик выводит из URL, отсекая всё до последнего прямого слэша, но не фильтруя точки и обратные слэши. Это открывает обход каталога: файл с полностью подконтрольным содержимым записывается как SYSTEM в произвольное место, и в атаке он направляется прямо в System32. Повторная эмуляция устройства Sierra загружает подложенную библиотеку – получается выполнение кода с правами SYSTEM ещё до входа любого пользователя.

Удалённый вариант: перенаправление USB по RDP без единого устройства

Физический сценарий упирается в необходимость что-то подключить. Удалённый вариант снимает это ограничение: та же цепочка установки достигается по сети из обычного сеанса RDP, когда к машине физически не подключено ничего. Ключ – перенаправление USB в удалённом рабочем столе. Его штатное назначение – проброс подключённого к клиенту устройства в удалённый сеанс. Проблема в том, что сервер строит узел устройства Plug and Play из дескрипторов, которые присылает клиент, и на другом конце не обязано быть реального устройства.

Исследователи написали на Python клиент RDP поверх библиотеки aardwolf, без какого-либо оборудования. Клиент проходит аутентификацию обычным пользователем, открывает канал URBDRC и отправляет запрос на добавление устройства с любыми идентификаторами. Когда сервер запрашивает дескрипторы, клиент синтезирует их на лету. Драйвер USB-концентратора сервера перечисляет фантомное устройство, и механизм Plug and Play устанавливает драйвер как SYSTEM – ровно так же, как в физической демонстрации.

Для этого сценария выбрали камеру Intel RealSense. Её драйвер подписан Microsoft и устанавливается из Центра обновления Windows, а соустановщик во время установки помещает исполняемый файл в каталог, доступный обычному пользователю на запись, и запускает его как SYSTEM. Этот файл ищет библиотеку CRYPTBASE.dll в собственной папке раньше, чем в System32. Обычный пользователь кладёт вредоносную CRYPTBASE.dll в каталог C:\Intel\RSDCM, запускает эксплойт без единого подключённого устройства и в итоге получает запись в C:\Windows, доступную только SYSTEM. Microsoft отдельно поясняет, что драйверы для перенаправленных периферийных устройств USB устанавливаются в удалённом сеансе тем же процессом, что и на локальной машине.

Почему удалённый путь не грозит настройкам по умолчанию

Удалённый вариант зависит от конфигурации, а не от штатного состояния Windows. Сервер при появлении устройства проверяет политику Terminal Services и лишь затем доходит до вызова, который объявляет устройство диспетчеру Plug and Play. Проход закрыт единственным параметром групповой политики: перенаправление поддерживаемых Plug and Play устройств по умолчанию запрещено, и устройство проходит, только когда параметр явно переведён в состояние, разрешающее проброс. По документации Microsoft, службы удалённых рабочих столов по умолчанию не допускают ни перенаправление поддерживаемых устройств Plug and Play, ни перенаправление USB-устройств RemoteFX. Для работы низкоуровневого проброса USB перенаправление Plug and Play требуется включить заранее.

Администраторам, которым эта функция не нужна, достаточно оставить её отключённой. Дополнительно доступны ограничения на установку устройств: они разрешают или блокируют устройства по идентификатору оборудования или совместимому идентификатору, по идентификатору экземпляра устройства и по классу настройки. На сервере удалённых рабочих столов такие политики распространяются и на перенаправленные устройства. Уязвимой оказывается среда, где перенаправление USB включено намеренно – например, управляемые развёртывания VDI.

Что показал инструмент PNP simulate

Чтобы воспроизвести процесс установки без реального оборудования при каждом тесте, исследователи разработали инструмент PNP simulate. Он создаёт устройство с USB-идентификаторами оборудования через API SetupDI, регистрирует его, ищет совпадения в локальном хранилище драйверов и опрашивает Центр обновления Windows через COM-интерфейс IUpdateSearcher.

Инструмент работает в двух режимах. По умолчанию он только опрашивает систему: создаёт временный узел устройства, наблюдает за событиями и убирает следы, ничего не скачивая. С флагом установки вызывается CM_Setup_DevNode, который переводит узел в реальный путь установки. Здесь кроется ловушка: ответ COM-интерфейса Центра обновления ещё не означает, что Windows установит пакет. Решение принимает служба установки устройств через механизм разрешения на стороне сервера, и этот путь заметно строже – до автоматической загрузки доходит гораздо меньше кандидатов, чем возвращает COM-запрос.

Композиция из подписанного ПО: цепочка Wacom и Atheros

Отдельная цепочка собрана как локальное повышение привилегий без физического оборудования и без прав администратора в начале. В подписанной служебной части пакета Wacom обнаружено сравнение с жёстко заданным значением. Когда служба WTabletServiceISD, работающая как LocalSystem, видит это значение в нужном ключе реестра, она вызывает CreateProcessAsUserW на обычном рабочем столе и запускает интерактивную командную оболочку с правами SYSTEM. Сама по себе эта операция требует того, чего у обычного пользователя нет, – доступа на запись в раздел HKLM.

Право на привилегированную запись даёт другой компонент, устанавливаемый через Plug and Play, – Atheros. Его пакет соответствует уязвимости, известной с 2019 года, но, вопреки ожиданиям, до сих пор устанавливается: сертификат не отозван. Пакет разворачивает службу AtherosSVC от имени LocalSystem, которая читает INI-файл и по коду управления службой 133 выполняет операции с реестром. Ввод контролирует пользователь, привилегию предоставляет служба.

Прямая связка не сработала: разбор INI посимвольно порождал не те байты, которые ожидает Wacom. Рабочий путь пошёл через диспетчер печати. Atheros создаёт запись монитора печати, указывающую на библиотеку в каталоге ProgramData, куда обычный пользователь может писать. Служба печати Spooler работает как SYSTEM и при запуске загружает зарегистрированные мониторы печати, включая подложенную библиотеку. После перезагрузки библиотека записывает нужное значение в реестр напрямую и перезапускает службу Wacom, которая и открывает интерактивную оболочку SYSTEM. Ни одна из уязвимостей поставщиков сама по себе не критична, но их композиция даёт полный контроль над системой.

Заключение

Атака показывает, что автоустановка драйверов USB через Plug and Play работает как доверенный загрузчик стороннего кода: привычное условие, при котором для запуска чего-либо нужны права администратора, здесь отпадает. Для физического сценария нужна возможность предъявить машине эмулированное USB-устройство, для удалённого – заранее включённое перенаправление USB по RDP. Организациям, где перенаправление USB не требуется, стоит держать его отключённым и при необходимости ограничить установку устройств по идентификаторам и классам через групповую политику. Инструменты и код проверки опубликованы исследователями вместе с материалами доклада.

© .
Комментарии и отзывы

Нашли ошибку?

Новое на сайте