
Хабр, привет!
На связи Владимир Шнейдмюллер, аналитик-исследователь угроз кибербезопасности R-Vision.
Вокруг Nightmare Eclipse за последние недели успело сложиться почти всё, что обычно сопровождает громкие публичные zero-day: резкие заявления автора, споры о такой практике раскрытия, быстрые проверки PoC сообществом, первые форки и закономерный вопрос - что из этого можно увидеть в телеметрии, а что останется почти полностью за пределами SIEM?
Мы разобрали несколько опубликованных PoC и в этой статье начнем с первых трёх: YellowKey, GreenPlasma и MiniPlasma. Они существенно различаются как по векторам атак, так и по возможностям обнаружения. YellowKey интересен как обход BitLocker через WinRE, но почти не оставляет удобных событий в ОС. GreenPlasma демонстрирует низкоуровневый примитив на стыке CTF/Winlogon и Windows Object Manager. MiniPlasma, наоборот, уже дает практический сценарий локального повышения привилегий, где можно строить вполне рабочие детекты по реестру, файловой системе и запуску процессов.
Ниже не будет пошаговой инструкции по эксплуатации. Нас интересуют механика, артефакты и точки наблюдения, которые полезны SOC и threat hunting-командам.
Что произошло и почему это важно
Nightmare Eclipse, в некоторых публикациях — Chaotic Eclipse, стал заметен после серии публичных релизов PoC для Windows. Внешние публикации описывают эту историю как конфликт исследователя с Microsoft и отказ от стандартной практики согласованного раскрытия уязвимостей. В результате технические детали и PoC оказывались в публичном доступе до появления официальных исправлений или до того, как защитники успевали подготовить качественные детекты.
В этой части разберём три PoC:
Практический результат
BitLocker bypass / WinRE
Доступ к уже разблокированному BitLocker-тому из WinRE
Низкая на уровне ОС
LPE-примитив / Object Manager
Создание section object через CTF/Winlogon-механику
Средняя, по косвенным артефактам
LPE / Cloud Files + registry link abuse
Запуск подконтрольного wermgr.exe от SYSTEM
YellowKey: BitLocker bypass
YellowKey заявлен как обход BitLocker через Windows Recovery Environment. Для него зарегистрирован CVE-2026-45585 , хотя сама регистрация, судя по публичным материалам, была сделана не автором PoC.
Сценарий сводится к тому, что атакующий получает интерактивный cmd.exe в WinRE с доступом к системному тому, который уже был разблокирован BitLocker.
Проблема не в самой криптографии BitLocker. PoC использует то, как WinRE при старте обрабатывает служебные журналы Transactional NTFS/FsTx. В среде восстановления есть утилита FsTx Auto Recovery Utility ( autofstx.exe ): она ищет такие журналы и пытается автоматически их восстановить. Если заранее положить подготовленные данные в System Volume Information\FsTx , WinRE может пойти не по штатному сценарию восстановления.
Если совсем коротко, цепочка выглядит так:
Атакующий готовит System Volume Information\FsTx на носителе или разделе, который будет виден при входе в WinRE.
Атакующий готовит System Volume Information\FsTx на носителе или разделе, который будет виден при входе в WinRE.
Устройство загружается в Windows Recovery Environment.
Устройство загружается в Windows Recovery Environment.
autofstx.exe обрабатывает найденные FsTx-журналы.
autofstx.exe обрабатывает найденные FsTx-журналы.
Вместо обычного сценария восстановления появляется cmd.exe.
Вместо обычного сценария восстановления появляется cmd.exe.
На конфигурации только с TPM системный том к этому моменту уже может быть разблокирован, поэтому shell получает доступ к данным.
На конфигурации только с TPM системный том к этому моменту уже может быть разблокирован, поэтому shell получает доступ к данным.
То есть диск не расшифровывается подбором ключа и BitLocker не ломается как алгоритм. Атака использует состояние, в котором Windows уже открыла защищенный том для recovery-сценария, но вместо ограниченного интерфейса восстановления пользователь получает командную строку.
Что можно увидеть
Эксплуатация происходит до нормальной загрузки Windows и внутри WinRE. Поэтому классическая хостовая телеметрия почти бесполезна.
Потенциальные косвенные признаки:
Подключение USB-накопителя перед перезагрузкой, если событие успело попасть в журнал
Последовательность: подключение USB -> перезагрузка -> последующая активность с диском
Но это именно косвенные признаки. Они не доказывают эксплуатацию YellowKey. Пользователь мог подключить флешку и штатно уйти в восстановление системы.
YellowKey плохо ложится в классический SIEM-детект. Основные меры здесь ближе к харденингу и контролю физического доступа: TPM+PIN для BitLocker, контроль WinRE/ autofstx.exe по рекомендациям Microsoft, запрет загрузки с внешних устройств, пароль на BIOS/UEFI и мониторинг recovery boot на уровне EDR/MDM, где это возможно.
GreenPlasma: CTF/Winlogon и опасный примитив
GreenPlasma - это демонстрация примитива. Автор прямо указывает, что из опубликованного кода убран финальный этап, который превращает технику в полноценный SYSTEM shell
Главная идея GreenPlasma - пользовательский процесс заранее создает объект в пространстве имен Windows Object Manager по пути, который ожидают использовать CTF/Winlogon-компоненты. После этого PoC провоцирует обращение со стороны системной части Windows и получает section object, то есть объект разделяемой памяти.
Цепочка такая:
PoC узнает номер текущей интерактивной сессии.
PoC узнает номер текущей интерактивной сессии.
В этой сессии он заранее занимает CTF-имя, которое связано с Winlogon/secure desktop.
В этой сессии он заранее занимает CTF-имя, которое связано с Winlogon/secure desktop.
Затем запускает UAC-сценарий через conhost.exe с runas, чтобы Windows задействовала CTF-компоненты.
Затем запускает UAC-сценарий через conhost.exe с runas, чтобы Windows задействовала CTF-компоненты.
Когда CTF/Winlogon обращается к ожидаемому имени, он попадает на подготовленный PoC объект.
Когда CTF/Winlogon обращается к ожидаемому имени, он попадает на подготовленный PoC объект.
PoC получает handle на section object. А это уже примитив для дальнейшей эксплуатации.
PoC получает handle на section object. А это уже примитив для дальнейшей эксплуатации.
В нашей лаборатории был подтвержден объект вида:
\Sessions\<SessionId>\BaseNamedObjects\CTF.AsmListCache.FMPWinlogon<SessionId>
Также фигурирует путь:
\BaseNamedObjects\CTFMON_DEAD
Обычный пользователь не должен иметь возможности заранее подменять или занимать имена объектов, с которыми потом работает более доверенный компонент. Если привилегированный процесс открывает объект по предсказуемому пути, а этот путь частично контролируется пользователем, появляется примитив для дальнейшей эксплуатации.
PoC сначала определяет текущий SessionId. CTF/Winlogon-объекты находятся не в глобальном пространстве, а внутри пространства конкретной интерактивной сессии:
\Sessions\<SessionId>\BaseNamedObjects\...
Затем через NtCreateSymbolicLinkObject PoC заранее занимает имя:
\Sessions\<SessionId>\BaseNamedObjects\CTF.AsmListCache.FMPWinlogon<SessionId>
и указывает, куда это имя должно вести. Если аргумент не передан, цель по умолчанию - \BaseNamedObjects\CTFMON_DEAD.
После этого PoC запускает conhost.exe через ShellExecuteEx с параметром runas . Нужен не сам conhost.exe , а эффект от запуска: Windows показывает UAC/secure desktop, а вместе с ним включается CTF-инфраструктура, связанная с вводом текста и Winlogon. В этот момент системные компоненты начинают работать с CTF-объектами текущей сессии.
Дальше PoC просто ждёт, когда по подготовленному имени появится section object. Для этого он в цикле вызывает NtOpenSection . Успешное открытие означает, что Windows создала или открыла объект разделяемой памяти по имени, которое заранее подготовил пользовательский процесс.
Разделяемая память может использоваться для передачи структур, параметров или состояния между процессами. Если один из потребителей работает в более привилегированном контексте и доверяет данным из такого объекта, появляется путь к LPE.
Реестровый хвост GreenPlasma
Отдельная часть PoC связана с Cloud Files и registry symbolic link abuse. В ходе выполнения затрагивается ветка:
HKCU\Software\Policies\Microsoft\CloudFiles\BlockedApps
В коде используется cldapi.dll и вызов CfAbortOperation , после чего PoC создает registry link. В лабораторной телеметрии появлялось значение SymbolicLinkValue , указывающее на:
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System
Также устанавливалось значение:
DisableLockWorkstation = 1
С точки зрения детекта это уже намного полезнее, чем чистые Object Manager-артефакты. Большинство SIEM и EDR не видят создание NtCreateSymbolicLinkObject напрямую, зато можно опираться на Sysmon Event ID 13.
На что смотреть
Полезные артефакты GreenPlasma:
Что это
\Sessions\<N>\BaseNamedObjects\ CTF.AsmListCache.FMPWinlogon<N>
Имя в Object Manager, которое PoC заранее занимает в интерактивной сессии
\BaseNamedObjects\CTFMON_DEAD
Цель symbolic link по умолчанию в опубликованном PoC
HKCU\Software\Policies\Microsoft\ CloudFiles\BlockedApps
Ветка Cloud Files policy, которую PoC использует для registry link abuse
HKCU\Software\Policies\Microsoft\ CloudFiles\BlockedApps\SymbolicLinkValue
Значение, по которому видно попытку создать registry symbolic link
HKCU\Software\Microsoft\ Windows\CurrentVersion\ Policies\System\DisableLockWorkstation
Значение, которое появляется после перенаправления через registry link
GreenPlasma.exe
Сам PoC или переименованный исполняемый файл с той же логикой
conhost.exe с ShellExecuteEx/runas
Процесс, которым PoC провоцирует UAC/secure desktop и CTF-активность
ctfmon.exe
Пользовательский CTF-компонент, который может держать handle к section object
LogonUI.exe
Компонент secure desktop/Winlogon, вокруг которого возникает CTF-сценарий
Пример VRL-фильтра:
Ложные срабатывания возможны вокруг Cloud Files, OneDrive, Office, FileCoAuth и MDM/Intune-политик. Поэтому CloudFiles\BlockedApps сам по себе лучше не считать инцидентом.
GreenPlasma показывает как пользовательский процесс может заранее подготовить имя объекта, с которым потом работает CTF/Winlogon-механика.
Для детекта это неудобный сценарий. Обычный SIEM чаще всего не видит вызовы вроде NtCreateSymbolicLinkObject и NtOpenSection . Поэтому практичнее смотреть на то, что остаётся в доступной телеметрии: изменения CloudFiles\BlockedApps , появление SymbolicLinkValue и необычную активность вокруг UAC/secure desktop. Если EDR умеет показывать операции с Object Manager, тогда уже можно пойти глубже и проверять CTF-пути напрямую.
MiniPlasma: когда примитив превращается в SYSTEM shell
MiniPlasma - самый практичный PoC из этой тройки. Он берет идею Cloud Files, знакомую по GreenPlasma и старому исследованию James Forshaw из Google Project Zero, и доводит её до понятного результата, где штатная задача Windows Error Reporting запускает подконтрольный файл от NT AUTHORITY\SYSTEM.
Идея эксплуатации довольно элегантная. В нормальном сценарии задача Windows Error Reporting QueueReporting запускает:
C:\Windows\System32\wermgr.exe -upload
MiniPlasma добивается того, что для системного контекста переменная %windir% начинает указывать не на C:\Windows, а на каталог PoC. После этого путь превращается в:
<каталог PoC>\System32\wermgr.exe -upload
То есть PoC создаёт собственный каталог System32 рядом с собой, копирует туда свой исполняемый файл под именем wermgr.exe , а затем заставляет штатный механизм WER запустить именно его.
Цепочка MiniPlasma выглядит так:
PoC использует Cloud Files/registry link abuse , чтобы добраться до .DEFAULT\Volatile Environment .
PoC использует Cloud Files/registry link abuse , чтобы добраться до .DEFAULT\Volatile Environment .
В .DEFAULT меняется значение windir: вместо C:\Windows оно указывает на каталог PoC.
В .DEFAULT меняется значение windir: вместо C:\Windows оно указывает на каталог PoC.
Рядом с PoC создается поддельный System32\wermgr.exe .
Рядом с PoC создается поддельный System32\wermgr.exe .
Запускается штатная задача Windows Error Reporting QueueReporting .
Запускается штатная задача Windows Error Reporting QueueReporting .
WER берет путь через %windir% и запускает поддельный wermgr.exe от SYSTEM.
WER берет путь через %windir% и запускает поддельный wermgr.exe от SYSTEM.
PoC запускает несколько стадий, чтобы разнести race condition и последующие действия по разным процессам. В одной стадии используется cldapi.dll и CfAbortOperation , параллельно поток постоянно ставит и снимает anonymous impersonation token.
Здесь PoC цепляется за логику Cloud Files, которая проверяет политики заблокированных приложений. Когда Windows работает с cloud placeholder-файлами, то есть локальными заглушками файлов из облачного хранилища, она обращается к CloudFiles\BlockedApps, чтобы понять, нужно ли блокировать доступ конкретному процессу. За счет гонки с impersonation token и registry symbolic link PoC добивается того, что эта логика начинает работать с перенаправленным путем в .DEFAULT, а не с обычной пользовательской веткой.
Дальше создается registry symbolic link:
\Registry\User\.DEFAULT\Software\Policies\Microsoft\CloudFiles\BlockedApps -> \Registry\User\.DEFAULT\Volatile Environment
После этого PoC записывает:
HKU\.DEFAULT\Volatile Environment\windir = <каталог PoC>
Затем создаёт файл:
<каталог PoC>\System32\wermgr.exe
И запускает штатную задачу:
\Microsoft\Windows\Windows Error Reporting\QueueReporting
Родителем процесса в телеметрии будет svchost.exe службы Schedule, а пользователь - NT AUTHORITY\SYSTEM.
На что смотреть
MiniPlasma оставляет очень интересную цепочку:
Изменениe CloudFiles\BlockedApps .
Изменениe CloudFiles\BlockedApps .
Запись HKU\.DEFAULT\Volatile Environment\windir в нетипичное значение.
Запись HKU\.DEFAULT\Volatile Environment\windir в нетипичное значение.
Создание поддельного System32\wermgr.exe вне C:\Windows .
Создание поддельного System32\wermgr.exe вне C:\Windows .
Запуск wermgr.exe от SYSTEM не из настоящего системного каталога.
Запуск wermgr.exe от SYSTEM не из настоящего системного каталога.
Родительский процесс svchost.exe со службой Schedule.
Родительский процесс svchost.exe со службой Schedule.
Командная строка wermgr.exe -upload .
Командная строка wermgr.exe -upload .
Основной сигнал - запуск wermgr.exe от SYSTEM из пути, который не начинается с C:\Windows\System32\ или C:\Windows\SysWOW64\ .
Пример условия для детекта:
Полезные события:
Что смотреть
Sysmon 1
Запуск wermgr.exe от SYSTEM из нестандартного пути
Sysmon 11
Создание <каталог PoC>\System32\wermgr.exe
Sysmon 13
Запись HKU\.DEFAULT\Volatile Environment\windir
Security 4688
Процессная цепочка svchost.exe -> wermgr.exe
Task Scheduler Operational
Запуск \Microsoft\Windows\Windows Error Reporting\QueueReporting
Cloud Files и BlockedApps могут встречаться в легитимной активности OneDrive, Office или MDM. Но запуск wermgr.exe от SYSTEM из пользовательского каталога - это уже не нормальное поведение.
Практические выводы
Первые три PoC Nightmare Eclipse показывают три разных уровня удобства для защитника.
YellowKey опасен, потому что работает вокруг WinRE и BitLocker, но почти не оставляет удобной телеметрии в загруженной Windows. Здесь важнее харденинг, физическая безопасность и контроль сценариев восстановления.
GreenPlasma показывает низкоуровневый примитив, который может быть развит в LPE. Его сложно ловить напрямую без хорошей EDR-телеметрии по Object Manager, но можно искать сопутствующие изменения Cloud Files, registry symbolic link abuse и необычные CTF/Winlogon-артефакты.
MiniPlasma уже является практичной цепочкой повышения привилегий. Он меняет .DEFAULT\Volatile Environment\windir , создает поддельный System32\wermgr.exe и запускает его через штатную задачу Windows Error Reporting от SYSTEM.
Nightmare Eclipse / YellowKey: https://git.projectnightcrawler.dev/NightmareEclipse/YellowKey
Nightmare Eclipse / YellowKey: https://git.projectnightcrawler.dev/NightmareEclipse/YellowKey
Nightmare Eclipse / GreenPlasma: https://git.projectnightcrawler.dev/NightmareEclipse/GreenPlasma
Nightmare Eclipse / GreenPlasma: https://git.projectnightcrawler.dev/NightmareEclipse/GreenPlasma
Nightmare Eclipse / MiniPlasma: https://git.projectnightcrawler.dev/NightmareEclipse/MiniPlasma
Nightmare Eclipse / MiniPlasma: https://git.projectnightcrawler.dev/NightmareEclipse/MiniPlasma
Google Project Zero issue 2051: https://project-zero.issues.chromium.org/issues/42451192
Google Project Zero issue 2051: https://project-zero.issues.chromium.org/issues/42451192
MSRC CVE-2020-17103: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2020-17103
MSRC CVE-2020-17103: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2020-17103
The Register: https://www.theregister.com/security/2026/05/13/disgruntled_researcher_releases_two_more_microsoft_zero_days/5239758
The Register: https://www.theregister.com/security/2026/05/13/disgruntled_researcher_releases_two_more_microsoft_zero_days/5239758
SecurityWeek: https://www.securityweek.com/researcher-drops-yellowkey-greenplasma-windows-zero-days/
SecurityWeek: https://www.securityweek.com/researcher-drops-yellowkey-greenplasma-windows-zero-days/