Исследовательская заметка N.03 · 2026-10-10

BYOVD со стороны исследователя.

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

ВРЕМЯ ЧТЕНИЯ ≈ 7 МИН АВТОР КОМАНДА AXIS

Группировки вымогателей и государственные акторы сошлись на одном трюке много лет назад, и он продолжает работать: вместо атаки на ядро — прийти с драйвером, которому ядро уже доверяет. BYOVD — bring your own vulnerable driver — это не история про эксплойт. Это история про модель доверия, и её понимание объясняет и то, почему техника повсюду, и то, почему она умирает от одной хорошо применённой политики. Мы ведём по ней активную исследовательскую программу; эта заметка — форма программы, на уровне категорий. Списки кандидатов и рабочие детали остаются в лицензионных материалах.

Модель доверия, которая ломается

Windows решает, что может исполняться в режиме ядра, прежде всего по подписи, а не по безопасности. Драйвер, подписанный через надлежащий конвейер аттестации, принимается как легитимный — потому что криптографически он легитимен. У системы нет встроенного мнения о том, хорош ли подписанный код, — только о том, подлинен ли он. Отзыв подписей существует, но он медленный, административно болезненный и исторически ломает реальные парки реального железа, поэтому экосистема двигается неохотно.

Подлинный — не значит безопасный. Подписанный — не значит доверенный.

Теперь возьмите легитимно подписанный драйвер, который через свой обычный интерфейс устройства отдаёт примитив, который никогда не должен был отдавать пользовательскому режиму: чтение или запись произвольной памяти ядра, отображение физической памяти, завершение произвольных процессов из ring 0. Этот драйвер подлинен. Он загружается. И тот, кто его загрузил, получает ядерный примитив с подписью вендора — в этом и весь трюк. Классический сценарий — убийство защищённых процессов средств защиты с уровня, с которого они не могут обороняться, но каталог примитивов шире: доступ к хранилищам учётных данных, правка таблиц колбэков, отключение самих слоёв телеметрии из предыдущей заметки.

Рис. A — цепочкаКаждое звено легитимно, кроме намерения

Что на самом деле делает наша исследовательская программа

Четыре направления, непрерывно. Это та проприетарная часть AXIS, о которой заказчики спрашивают чаще всего, — вот её честная форма.

Сбор. Подписанные драйверы всплывают в предсказуемых местах: пакеты обновлений вендоров, комплекты поддержки OEM, старые примеры из SDK, ушедшие в продакшн, утилиты железа, которые никто не перепроверял с момента релиза. Мы ведём закрытый корпус — 1 400+ подписанных драйверов — и пополняем его механически: предложение подписанного, недоаудированного кода ядра ни разу не показывало тренда вниз.

Статическая сортировка. До любой динамики кандидат классифицируется по поверхности диспетчеризации: какие обработчики запросов достижимы из пользовательского режима и реализует ли какой-то из них опасный класс примитивов — доступ к произвольной виртуальной или физической памяти, доступ к регистрам MSR, завершение процессов или потоков ядерными процедурами, манипуляции дескрипторами или привилегиями, прямая запись секторов диска. Большинство драйверов отмирает здесь; интересное меньшинство идёт дальше.

Оценка эксплуатируемости. Примитив — ещё не возможность. Выживших мы оцениваем по трём осям: достижимость (кто может открыть устройство — разрешения устройства решают, нужен ли для примитива администратор или просто везение), надёжность (держится ли путь между сборками ОС или кладёт машину в синий экран на каждой десятой), засвеченность (есть ли хеш уже в публичных списках уязвимых драйверов и в блоклисте Microsoft — известный кандидат это сгоревший кандидат).

КАРТОЧКА КАНДИДАТА — ВЫМЫШЛЕННЫЙ ПРИМЕРJSON
{
  "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 → фиксируем версию
}
Рис. B — как оценивается кандидатИмена остаются в лицензионных материалах

Жизненный цикл. Кандидаты портятся. Подписи отзываются, блоклисты обновляются, вендоры молча чинят. Корпус переоценивается по расписанию, и история оценок кандидата важна не меньше текущего балла: драйвер, которого защитники только что научились ловить, — это риск в маскарадном костюме.

Как это устроено в продукте

В лицензионных сборках BYOVD существует как выбираемая оператором возможность внутри сборщика: оператор выбирает из актуально оценённых кандидатов, артефакт интегрирует выбранный драйвер, а журнал аудита фиксирует выбор, как любое другое решение сборки, — потому что в авторизованной операции действие на уровне ядра это решение, которое кто-то должен суметь обосновать задним числом. Тот же корпус питает наш QA: каждый релиз проверяется против актуального применения блоклистов, так что заказчики узнают от нас — а не от провалившегося развёртывания, — когда оборонительный ландшафт сдвинулся.

Что реально это останавливает

У техники единственная точка отказа, и это политика, а не сигнатуры. Блоклист уязвимых драйверов Microsoft — применяемый через Windows Defender Application Control и включённый по умолчанию там, где работает HVCI, — отказывает известным вредным подписанным драйверам независимо от их криптографической валидности. Новое железо всё чаще применяет его из коробки, и каждое событие блокировки превращает «надёжного» кандидата в детект. Правила Attack Surface Reduction, аудит загрузки драйверов и простой алертинг на создание ядерных служб закрывают большую часть остального. У защитников здесь реальный рычаг; неудобная правда для атакующей стороны в том, что будущее BYOVD измеряется тем, насколько медленно предприятия поворачивают эти переключатели.

Честные ограничения

BYOVD требует привилегий на установку и загрузку драйвера, то есть оператор уже держит администратора, — техника покупает ядерные примитивы, а не первоначальный доступ. Она громка для любой телеметрии, следящей за загрузкой драйверов, и каждая загрузка — форензический артефакт с хешем. А против применяемых блоклистов она схлопывается полностью. Это скальпель для операций, где эффект уровня ядра стоит залогированного, обосновываемого решения, — а не плащ-невидимка, и мы бы с подозрением отнеслись к любому вендору, описывающему её иначе.

Далее в очереди: полевой справочник по техникам обхода — что каждая всё ещё вам стоит и почему импланты с одним трюком быстро стареют.