Статья Обход BitLocker за 5 минут: разбор downgrade-атаки через CVE-2025-48804

Материнская плата ноутбука на антистатическом коврике с подключённым логическим анализатором к шине LPC рядом с чипом TPM. USB-накопитель с надписью опирается о край платы в жёстком направленном св...


На физическом пентесте прошлым летом мы потратили четыре часа, чтобы вытащить Volume Master Key из корпоративного ноутбука с TPM-only BitLocker: вскрыли корпус, подпаяли логический анализатор (Saleae Logic Pro - мой рабочий вариант) к шине LPC, дождались загрузки и перехватили ключ. В мае 2026 года ребята из Intrinsec выпустили BitUnlocker и показали, как получить тот же результат за пять минут - одной USB-флешкой, без вскрытия корпуса, без пайки. Ключевая уязвимость - CVE-2025-48804 (CVSS 6.8, вектор AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H), пропатченная Microsoft в июле 2025 года. Патч закрывает конкретную дыру, но корневая проблема на месте: Secure Boot до сих пор доверяет устаревшему сертификату Windows PCA 2011, и атакующий спокойно грузит уязвимую версию boot manager - система пропускает без вопросов.

BitLocker и TPM: почему дефолтная конфигурация уязвима​

BitLocker шифрует том ключом FVEK (Full Volume Encryption Key), который обёрнут в Volume Master Key (VMK). VMK запечатан в TPM и привязан к состоянию платформы через регистры PCR. При каждой загрузке TPM измеряет цепочку: UEFI firmware → boot manager → загрузчик ОС. Измерения совпали с эталонными - TPM распечатывает VMK, BitLocker разблокирует том прозрачно для пользователя. Подробнее - в нашем статье о living off the land атаки windows.

Угрозовая модель BitLocker прямо учитывает физического атакующего: полный физический доступ, но без учётных данных. По данным исследовательской группы Microsoft STORM (Black Hat USA 2025, DEF CON 33), BitLocker - одна из немногих фич Windows, где физическая атака входит в threat model. Звучит солидно. Пока не посмотришь на дефолтную конфигурацию.

Microsoft сделала TPM-only режим дефолтным. Включаешь BitLocker через GUI или групповые политики без дополнительных настроек - pre-boot PIN не запрашивается. TPM отдаёт VMK автоматически, если цепочка загрузки валидна с точки зрения подписей и PCR-измерений. Для пользователя удобно - ноутбук грузится без дополнительных паролей. Для атакующего с физическим доступом задача сводится к одному: заставить TPM поверить, что цепочка загрузки легитимна.

А вот тут самое интересное. TPM не проверяет, какой именно версии загрузчик перед ним. TPM проверяет подпись. Подпись валидна - ключ выдан. Загрузчик может быть старым, дырявым, с известными уязвимостями - TPM это не волнует. Именно здесь включается Downgrade Attack (T1562.010).

WinRE - атакующая поверхность, которую создала сама Microsoft​

Windows Recovery Environment (WinRE) - среда восстановления для ситуаций, когда основная система не загружается. Любой с физическим доступом попадает в WinRE: зажать Shift при перезагрузке с экрана логина. Когда Microsoft добавляла поддержку BitLocker, архитектуру WinRE пришлось перестроить - и эти изменения открыли новые атакующие поверхности.

Первое - WinRE.wim переехал на незашифрованный раздел. Образ среды восстановления лежал на системном томе, который теперь зашифрован BitLocker. Чтобы WinRE работала при проблемах с шифрованием, файл перенесли на отдельный Recovery-раздел без шифрования. Результат: любой с физическим доступом может прочитать и модифицировать WinRE.wim.

Второе - механизм Trusted WIM Boot. Для защиты WinRE.wim от подмены Microsoft добавила проверку хеша: boot manager сравнивает хеш образа с эталонным. Совпадает - том автоматически разблокируется. Не совпадает - остаётся заблокированным. Идея корректная, но дьявол в деталях: уязвимость кроется в том, как именно boot manager парсит WIM-файл и обрабатывает данные.

Третье - Volume Re-Lock. Потенциально опасные инструменты восстановления (командная строка, например) при запуске заново блокируют том, чтобы атакующий не получил доступ через WinRE. Но это работает только при загрузке легитимной WinRE - если атакующий загрузил собственный код, перезапирать нечего.

CVE-2025-48804 эксплуатирует первое и второе изменения. CWE-349 (Acceptance of Extraneous Untrusted Data With Trusted Data): атакующий подаёт boot manager легитимный WIM-файл для прохождения проверки целостности, но присоединяет вредоносную нагрузку. Система верифицирует чистую часть - и слепо запускает код атакующего.

CVE-2025-48804 и BitUnlocker: downgrade-атака за 5 минут​

Fingerprinting цели перед атакой​

Прежде чем тащить на объект USB-флешку с payload - нужно понять, сработает ли вектор. На физическом пентесте fingerprinting ограничен тем, что удаётся узнать заранее или при кратковременном доступе.
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Место BitUnlocker в kill chain и сравнение векторов обхода BitLocker​

В kill chain BitUnlocker покрывает переход от физического доступа к credential access:
  1. Physical Access - подключение USB, изменение порядка загрузки
  2. Defense Evasion - Downgrade Attack (T1562.010), обход Trusted WIM Boot
  3. Direct Volume Access (T1006) - чтение содержимого расшифрованного тома
  4. Credential Access - извлечение SAM/SYSTEM для offline-атаки на хеши (T1003), DPAPI master keys, сохранённых учётных данных, закрытых ключей (T1552.004)
После получения хешей из SAM - прямой путь в lateral movement: pass-the-hash или offline-брут через hashcat/john. Если ноутбук принадлежит доменному пользователю - это entry point в корпоративную AD.

Обход BitLocker - не один метод, а семейство техник. Выбор зависит от конфигурации цели:

Условие на целиВекторВремяРазборка корпусаБлокируется PINБлокируется UEFI CA 2023
TPM-only, PCA 2011 доверенBitUnlocker (downgrade)~5 минНетДаДа
TPM-only, PCA 2011 отозванTPM sniffing по LPC/SPI1-4 чДаДаНет
TPM+PINCold boot / DMA15-30 минЧастичноЧастичноНет
Нет физического доступаНеприменимо----

BitUnlocker - оптимальный вектор для типичного корпоративного ноутбука: TPM-only без PIN, KB5025885 не завершён. Это большинство реальных развёртываний. TPM-only - дефолт Microsoft, а миграция сертификатов - тот процесс, который организации откладывают до последнего.

TPM sniffing остаётся актуальным, когда PCA 2011 уже отозван. Требует вскрытия корпуса и подключения логического анализатора к контактам TPM на шине LPC или SPI. Дольше и технически сложнее, но на уровне шины перехватывает VMK напрямую - версия сертификата тут роли не играет.

Cold boot через дамп ОЗУ - подход, описанный, например, в инструменте Memory-Dump-UEFI. Основан на остаточном хранении данных в RAM после отключения питания. В дампе ищут FVEK по pool tag: в Windows 7 - FVEc, в Windows 8.1/10 - Cngb (модуль ksecdd.sys). Работает против любой конфигурации, но результат не гарантирован - содержимое RAM деградирует после потери питания.

Защита: какой шаг в атаке блокирует каждая мера​

Не абстрактный чеклист - привязка каждой меры к конкретному шагу цепочки BitUnlocker.

Pre-boot PIN - блокирует шаг 5. TPM не распечатает VMK без ввода PIN, даже если загрузчик подписан валидным сертификатом. Включается через manage-bde -protectors -add C: -TPMAndPIN. Для массового развёртывания - GPO: Computer Configuration → Administrative Templates → Windows Components → BitLocker Drive Encryption → Operating System Drives → Require additional authentication at startup. Это единственная мера, которая закрывает и downgrade, и TPM sniffing: перехваченный на шине VMK без PIN бесполезен.

KB5025885 и миграция на UEFI CA 2023 - блокирует шаг 3. После завершения миграции Secure Boot отклоняет загрузчики с подписью PCA 2011. Старый bootmgfw.efi не проходит проверку подписи. Миграция идёт в несколько этапов, последний требует обновления DBX (Secure Boot Forbidden Signature Database) для отзыва PCA 2011. Проверка статуса:
Код:
# PowerShell от администратора
Confirm-SecureBootUEFI
$sb = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot"
$sb.AvailableUpdates
# Если AvailableUpdates = 0 - миграция завершена, PCA 2011 отозван
Пароль BIOS/UEFI - блокирует шаг 2. Если boot menu защищено паролем, атакующий не сможет изменить порядок загрузки без дополнительных усилий. Не панацея: на ряде платформ сброс CMOS снимает пароль, а сервисные джамперы обходят защиту. Но каждый дополнительный барьер увеличивает время и шум.

Отключение загрузки с внешних носителей - блокирует шаг 2. В BIOS/UEFI Setup: External Device Boot = Disabled. В связке с паролем BIOS существенно усложняет атаку.

Kernel DMA Protection - блокирует альтернативные векторы. На BitUnlocker не влияет, но закрывает атаки через PCILeech / Thunderbolt DMA. Проверка: msinfo32 → Kernel DMA Protection = On.

Чеклист для отчёта о физическом пентесте​

Код:
1. [  ] Pre-boot PIN включён: manage-bde -protectors -get C: | findstr TPMAndPIN
2. [  ] KB5025885 применён, миграция на UEFI CA 2023 завершена
3. [  ] Пароль BIOS/UEFI установлен
4. [  ] Загрузка с внешних носителей отключена
5. [  ] Secure Boot активен с актуальным DBX
6. [  ] Kernel DMA Protection включена
7. [  ] BitLocker Status: manage-bde -status C: - Key Protectors = TPMAndPIN
Из семи пунктов критически важны первые два: PIN и миграция сертификата. Остальные - дополнительные слои, которые увеличивают стоимость атаки, но не исключают её при достаточной мотивации и физическом доступе.

Большинство корпоративных развёртываний BitLocker работают в TPM-only - Microsoft сделала это дефолтом, и мало кто меняет. В каждом втором физическом пентесте, где BitLocker включён, проблема не в криптографии AES-256, а в конфигурации: ключ отдаётся TPM автоматически любому, кто загрузит корректно подписанный загрузчик. CVE-2025-48804 - не аномалия, а следствие системной проблемы. Microsoft не может отозвать PCA 2011, потому что это заблокирует загрузку на огромном количестве машин, где KB5025885 ещё не применён. Миграция на UEFI CA 2023 идёт больше года и далека от завершения. Пока PCA 2011 в списке доверенных - downgrade-атаки будут работать независимо от того, сколько патчей Microsoft выпустит для конкретных CVE в загрузчиках. Единственная мера, которая закрывает весь класс pre-boot атак - pre-boot PIN. Не пароль BIOS, не отключение USB, не DMA-защита. Шестизначный код, добавляющий три секунды к каждой загрузке. И пока организации массово жертвуют этими тремя секундами ради «удобства пользователей», физические пентесты корпоративных ноутбуков будут заканчиваться одинаково: VMK извлечён, том расшифрован, хеши собраны. Если хочется отработать криптографическую цепочку от перехвата ключа до полного доступа на живом стенде - на HackerLab.pro есть задачи в категории crypto, где примитивы нужно не просто знать, а собрать в рабочий эксплойт.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab