Группировки вымогателей и государственные акторы сошлись на одном трюке много лет назад, и он продолжает работать: вместо атаки на ядро — прийти с драйвером, которому ядро уже доверяет. BYOVD — bring your own vulnerable driver — это не история про эксплойт. Это история про модель доверия, и её понимание объясняет и то, почему техника повсюду, и то, почему она умирает от одной хорошо применённой политики. Мы ведём по ней активную исследовательскую программу; эта заметка — форма программы, на уровне категорий. Списки кандидатов и рабочие детали остаются в лицензионных материалах.
Модель доверия, которая ломается
Windows решает, что может исполняться в режиме ядра, прежде всего по подписи, а не по безопасности. Драйвер, подписанный через надлежащий конвейер аттестации, принимается как легитимный — потому что криптографически он легитимен. У системы нет встроенного мнения о том, хорош ли подписанный код, — только о том, подлинен ли он. Отзыв подписей существует, но он медленный, административно болезненный и исторически ломает реальные парки реального железа, поэтому экосистема двигается неохотно.
Подлинный — не значит безопасный. Подписанный — не значит доверенный.
Теперь возьмите легитимно подписанный драйвер, который через свой обычный интерфейс устройства отдаёт примитив, который никогда не должен был отдавать пользовательскому режиму: чтение или запись произвольной памяти ядра, отображение физической памяти, завершение произвольных процессов из ring 0. Этот драйвер подлинен. Он загружается. И тот, кто его загрузил, получает ядерный примитив с подписью вендора — в этом и весь трюк. Классический сценарий — убийство защищённых процессов средств защиты с уровня, с которого они не могут обороняться, но каталог примитивов шире: доступ к хранилищам учётных данных, правка таблиц колбэков, отключение самих слоёв телеметрии из предыдущей заметки.
Что на самом деле делает наша исследовательская программа
Четыре направления, непрерывно. Это та проприетарная часть AXIS, о которой заказчики спрашивают чаще всего, — вот её честная форма.
Сбор. Подписанные драйверы всплывают в предсказуемых местах: пакеты обновлений вендоров, комплекты поддержки OEM, старые примеры из SDK, ушедшие в продакшн, утилиты железа, которые никто не перепроверял с момента релиза. Мы ведём закрытый корпус — 1 400+ подписанных драйверов — и пополняем его механически: предложение подписанного, недоаудированного кода ядра ни разу не показывало тренда вниз.
Статическая сортировка. До любой динамики кандидат классифицируется по поверхности диспетчеризации: какие обработчики запросов достижимы из пользовательского режима и реализует ли какой-то из них опасный класс примитивов — доступ к произвольной виртуальной или физической памяти, доступ к регистрам MSR, завершение процессов или потоков ядерными процедурами, манипуляции дескрипторами или привилегиями, прямая запись секторов диска. Большинство драйверов отмирает здесь; интересное меньшинство идёт дальше.
Оценка эксплуатируемости. Примитив — ещё не возможность. Выживших мы оцениваем по трём осям: достижимость (кто может открыть устройство — разрешения устройства решают, нужен ли для примитива администратор или просто везение), надёжность (держится ли путь между сборками ОС или кладёт машину в синий экран на каждой десятой), засвеченность (есть ли хеш уже в публичных списках уязвимых драйверов и в блоклисте Microsoft — известный кандидат это сгоревший кандидат).
{
"candidate": "DRV-0847",
"signer": "OEM-утилита железа, 2019",
"primitives": ["phys_mem_map", "proc_terminate"],
"reachability": "админ · ACL устройства: SYSTEM+Admins",
"reliability": "22H2–24H2 стабильно · 0/200 падений",
"exposure": "публичные списки: нет · msft-блоклист: нет",
"score": "B+ — годен, сгорает при первом публичном применении",
// портится: вендор молча починил в 3.1.7 → фиксируем версию
}
Жизненный цикл. Кандидаты портятся. Подписи отзываются, блоклисты обновляются, вендоры молча чинят. Корпус переоценивается по расписанию, и история оценок кандидата важна не меньше текущего балла: драйвер, которого защитники только что научились ловить, — это риск в маскарадном костюме.
Как это устроено в продукте
В лицензионных сборках BYOVD существует как выбираемая оператором возможность внутри сборщика: оператор выбирает из актуально оценённых кандидатов, артефакт интегрирует выбранный драйвер, а журнал аудита фиксирует выбор, как любое другое решение сборки, — потому что в авторизованной операции действие на уровне ядра это решение, которое кто-то должен суметь обосновать задним числом. Тот же корпус питает наш QA: каждый релиз проверяется против актуального применения блоклистов, так что заказчики узнают от нас — а не от провалившегося развёртывания, — когда оборонительный ландшафт сдвинулся.
Что реально это останавливает
У техники единственная точка отказа, и это политика, а не сигнатуры. Блоклист уязвимых драйверов Microsoft — применяемый через Windows Defender Application Control и включённый по умолчанию там, где работает HVCI, — отказывает известным вредным подписанным драйверам независимо от их криптографической валидности. Новое железо всё чаще применяет его из коробки, и каждое событие блокировки превращает «надёжного» кандидата в детект. Правила Attack Surface Reduction, аудит загрузки драйверов и простой алертинг на создание ядерных служб закрывают большую часть остального. У защитников здесь реальный рычаг; неудобная правда для атакующей стороны в том, что будущее BYOVD измеряется тем, насколько медленно предприятия поворачивают эти переключатели.
Честные ограничения
BYOVD требует привилегий на установку и загрузку драйвера, то есть оператор уже держит администратора, — техника покупает ядерные примитивы, а не первоначальный доступ. Она громка для любой телеметрии, следящей за загрузкой драйверов, и каждая загрузка — форензический артефакт с хешем. А против применяемых блоклистов она схлопывается полностью. Это скальпель для операций, где эффект уровня ядра стоит залогированного, обосновываемого решения, — а не плащ-невидимка, и мы бы с подозрением отнеслись к любому вендору, описывающему её иначе.
Далее в очереди: полевой справочник по техникам обхода — что каждая всё ещё вам стоит и почему импланты с одним трюком быстро стареют.