"I may have just made the Greatest XML in all of XML history. Two zerodays this month, hope I can do more next month" - Nightmare Eclipse
🤪 Помните вчерашнего исследователя, который выкатил RoguePlanet?)
Так вот, он не стал ждать следующего месяца. Второй публичный 0-day - GreatXML. 😳
И это уже BitLocker bypass. Полностью через
unattend.xml в разделе восстановления. ⚙️ Как это работает (*FOR EDUCATIONAL PURPOSES*)
Механика элегантно простая - без эксплойтов в классическом смысле, чистая злоупотреблением легитимным механизмом Windows:
1. Копируешь
unattend.xml и папку Recovery в корень раздела восстановления (WinRE).2. Ребутишь машину в WinRE через Shift + Restart.
3. Если на машине когда-либо запускался Defender Offline Scan - логин не нужен вообще. Машина сразу уязвима.
4. На выходе - шелл с неограниченным доступом к BitLocker-тому. Шифрование фактически не защищает данные.
❗️ Ключевой момент:
unattend.xml - это легитимный файл автоматизации установки Windows (Unattended Setup). WinRE его подхватывает и обрабатывает с привилегиями, достаточными для обхода BitLocker. Microsoft не считает это проблемой на уровне своих текущих критериев - и поэтому патча пока нет.🔍 Чем это полезно для форзеров?
Для нас тут несколько интересных вещей:
1️⃣ Первое - физический доступ, но с нюансом. Классический аргумент "если у атакующего физический доступ к машине, игра окончена" тут работает, но с оговоркой: вектор через Defender Offline Scan делает машину уязвимой даже если сам атакующий не инициировал scan. Достаточно что его когда-либо запускал пользователь или администратор.
2️⃣ Второе - артефакты в WinRE. Если атака произошла, следы будут именно там. После эксплуатации смотреть на:
• Раздел WinRE на предмет посторонних файлов -
unattend.xml и папка Recovery в корне раздела восстановления там быть не должны в штатной конфигурации.• Логи переходов в WinRE:
Microsoft-Windows-Diagnostics-Performance/Operational, события загрузки в System лог.• Если был физический доступ - смотри на временные метки файлов в разделе восстановления и коррелируй с последним временем работы системы.
3️⃣ Третье - BitLocker-том был смонтирован. После получения доступа к тому атакующий мог читать/копировать файлы. Индикаторы на уровне файловой системы: временные метки последнего доступа к файлам (Last Accessed), артефакты подключения внешних носителей (если данные копировались), USN Journal на предмет операций чтения/копирования в интересующем временном окне.
4️⃣Четвертое - Defender Offline Scan как пре-условие. Факт его запуска фиксируется:
Microsoft-Windows-Windows Defender/Operational, Event ID 2050 (scan started). Если в ходе расследования ты видишь что Offline Scan запускался - машина потенциально была уязвима к этому вектору в любой момент после этого.🛡 Что делать прямо сейчас
• Проверить конфигурацию WinRE на прод-тачках - в разделе восстановления посторонних XML и папок быть не должно.
• Убедиться что физический доступ к машинам ограничен (банально, но именно здесь и решается).
• Включить BitLocker PIN при загрузке (не только TPM) - это усложняет вектор через WinRE, так как требует дополнительной аутентификации до этапа где отрабатывает уязвимость.
• Если Secure Boot + UEFI password настроены - это дополнительный барьер против загрузки в модифицированный WinRE.
⁉️ Два 0-day за месяц от одного исследователя - это уже заявка. Причем оба без CVE и без патча на момент публикации. MS закрыл GreenPlasma и YellowKey (предыдущая серия), но GreatXML и RoguePlanet пока висят открытыми. Nightmare Eclipse прямо говорит что продолжит - ну следим, чо)
Ну и с вас реакция за реактивный разбор уязы (на момент написания поста прошло 13 часов с момента публикации) 🙊
🔗 https://github.com/MSNightmare/GreatXML
🐦⬛ DFIR Father