Перейти к основному содержимому
  1. Блог/

MiniPlasma: детектируем опасный эксплоит от Nightmare Eclipse

·2 минут·

Пример работы эксплоита
Одна из главных тем в ИБ-новостях последних дней — противостояние корпорации Microsoft и анонимного исследователя Nightmare Eclipse, который за два месяца опубликовал уже шесть серьёзных эксплойтов для Windows. Самый неприятный из них — MiniPlasma — с апреля используется в реальных атаках. Официального патча пока нет.

Как это работает:

Эксплоит основан на CVE-2020-17103 — уязвимости локального повышения привилегий в драйвере Windows Cloud Files Mini Filter Driver (cldflt.sys). Уязвимость была обнаружена ещё в 2020 году, и считалась уже закрытой. Однако Nightmare Eclipse показал, что она работает до сих пор, позволяя локальному пользователю поднять права до SYSTEM.

cldflt.sys — это системный драйвер, который реализует Cloud Files API (CFAPI) и используется для работы placeholder-файлов и механизмов синхронизации, включая OneDrive Files On-Demand.

Для взаимодействия с драйвером эксплойт использует недокументированный API CfAbortHydration, предназначенный для прерывания проверки облачного файла. Этот API, в свою очередь, вызывает внутреннюю функцию драйвера cldflt!HsmOsBlockPlaceholderAccess, которая по своей логике должна блокировать доступ к облачному файлу путём создания соответствующего служебного ключа в реестре.

Функция HsmOsBlockPlaceholderAccess выполняется в контексте привилегированного драйвера, но не проверяет, имеет ли вызывающий процесс права на запись в целевую ветку реестра. В результате эксплойт получает возможность создать произвольный ключ реестра в системной области HKEY_USERS\.DEFAULT, куда обычный пользователь не имеет доступа на запись.

MiniPlasma создаёт в ветке HKU\.DEFAULT\Software\Policies\Microsoft\CloudFiles\BlockedApps не обычный ключ, а символическую ссылку (registry symbolic link). Эта ссылка перенаправляет на другую область реестра — \Registry\User\.DEFAULT\Volatile Environment, которая содержит временные переменные окружения для системного профиля.

Через созданную символическую ссылку эксплойт изменяет значение переменной windir в Volatile Environment с C:\Windows на путь, контролируемый атакующим, например C:\Users\Public\FakeSystem (текущая директория + system32\wermgr.exe). В указанную атакующим директорию предварительно помещается поддельный исполняемый файл wermgr.exe.

Далее эксплойт обращается к планировщику задач Windows и активирует встроенную задачу \Microsoft\Windows\Windows Error Reporting\QueueReporting. Эта задача настроена на запуск с правами SYSTEM и по умолчанию выполняет команду %windir%\system32\wermgr.exe.

Благодаря ранее изменённой переменной windir система подставляет подконтрольный атакующему путь, и вместо легитимного системного файла запускается поддельный wermgr.exe — но уже с привилегиями NT AUTHORITY\SYSTEM (см. скриншот выше).

Как детектировать атаку:

  1. Отслеживайте создание SymbolLinks в ветке HKU\.DEFAULT\Software\Policies\Microsoft\CloudFiles\BlockedApps:
 category: registry_set 
    product: windows 
detection: 
    selection: 
        TargetObject|contains: 'Policies\Microsoft\CloudFiles\BlockedApps' 
        Details: 'SymbolicLinkValue' 
    condition: selection 
  1. Отслеживайте появление wermgr.exe вне стандартных путей:
category: process_creation 
    product: windows 
detection: 
    selection: 
        TargetFilename|endswith: '\wermgr.exe' 
    filter_system_locations: 
        TargetFilename|startswith: 
            - 'C:\Windows\System32\' 
            - 'C:\Windows\SysWOW64\' 
            - 'C:\Windows\WinSxS\' 
            - 'C:\Windows\servicing\' 
            - 'C:\$WINDOWS.~BT\' 
            - 'C:\Windows\SoftwareDistribution\' 
    condition: selection and not filter_system_locations 
  1. Отслеживайте запуск системных бинарников или их имитаций из нестандартных директорий.

  2. Данный PoC использует библиотеку .NET NtApiDotNet исcледователя James Forshaw для работы с реестровыми Native API, что также является индикатором.

Related