Найти в Дзене

Повышение привилегий Windows: HiveNightmare.

Здравствуйте, дорогие друзья. В этой статье мы повысим привилегии в Windows, с помощью уязвимости: CVE-2021-36934.

Введение

CVE-2021-36934 (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-36934), также известная как уязвимость SeriousSAM и HiveNightmare, была обнаружена Йонасом Ликкегором в июле 2021 года. Из-за неправильной конфигурации ACL в Windows 10, после сборки 1809 и Windows 11, пользователям, не являющимся администраторами, предоставляется доступ для чтения к трио Файлам: SAM, SYSTEM и SECURITY в каталоге %windir%\system32\config. Однако для этого необходимо включить защиту системы и создать теневую копию тома. Название «HiveNightmare» происходит от общего названия «ульи», которое относится к файлам, в которых хранятся данные реестра.

Содержание

· Защита системы и создание точек восстановления

· Способ эксплуатации 1: HiveNightmare.exe (эксплойт C++)

· Способ эксплуатации 2: serioussam.ps1 (эксплойт Powershell)

· Способ эксплуатации 3: hive.exe (эксплойт Go)

· Повышение привилегий

· Выводы и смягчение последствий

Защита системы и создание точек восстановления

Защита системы в Windows: эта функция доступна после выхода Windows ME и XP, и позволяет пользователю создавать резервные копии, снимки или точки восстановления в своей системе Windows. Если Вы чувствуете необходимость восстановить окна до предыдущего момента времени, Вы можете это сделать. Microsoft упоминает, какие файлы, настройки и конфигурации сохраняются здесь (https://learn.microsoft.com/en-gb/windows/win32/sr/system-restore-portal).

Теневое копирование тома: после Windows 7 и Win Server 2003 служба VSS (служба теневого копирования томов), сопровождает пользователей в их стремлении правильно создавать резервные копии своих серверов, общих папок и точек восстановления в локальных или удаленных системах, в формате NTFS или ReFS. В нашем случае теневая копия тома относится к локальной точке восстановления, созданной пользователем.

Чтобы продемонстрировать использование этой уязвимости, мы сначала создадим собственную лабораторию. После чистой установки нашей собственной Windows 10, мы активировали учетную запись администратора в системе и установили простой пароль 1234.

net user administrator /active:yes

net user administrator 1234

-2

Далее нам придется включить защиту системы. Для этого перейдите в Панель управления->Система и безопасность->Система->Защита системы и настройте

-3

Теперь установите флажок «Включить защиту системы», нажмите «Применить» и «ОК».

-4

Когда Вы вернетесь в меню защиты системы сейчас, Вы увидите, что ранее неактивная опция «Создать», в настройках точки восстановления, теперь активирована. Нажмите «Создать», чтобы создать точку восстановления прямо сейчас.

-5

Дайте ему любое имя. В качестве названия, я указал случайную дату.

-6

Мы готовы двигаться дальше.

Способ эксплуатации 1: HiveNightmare.exe (эксплойт C++)

Теперь, чтобы воспользоваться этой уязвимостью, Кевин Бомонт создал для нее zero-day (и PoC). Этот эксплойт ищет теневую копию в системе и считывает ее для кустов SAM, SYSTEM и SECURITY.

Эксплойт написан на C++ и создан GossiTheDog. Он может быть найден здесь (https://github.com/GossiTheDog/HiveNightmare). Поскольку эксплойт запускается локально, мы загрузим его в систему, где была создана точка восстановления системы, и запустим его с помощью простой командной строки пользователя, без прав администратора. Как видите, подсказка ясно сообщила нам, что в случае успешного завершения выполнения, три файла будут сброшены в одну и ту же папку. Проверяем то же самое с помощью команды «dir» и следуем!

-7

Способ эксплуатации 2: serioussam.ps1 (эксплойт Powershell)

Сценарий, созданный romarroca, можно найти здесь (https://github.com/romarroca/SeriousSam). Он создан в Powershell и более портативен, чем вариант exe, созданный Кевином Бомонтом. При этом кусты SAM и SYSTEM копируются из созданного дампа точки восстановления. Выполнение довольно простое, просто запустите скрипт, следующим образом:

-8

Способ эксплуатации 3: hive.exe (эксплойт Go)

Кристиан Мельмауэр перевел тот же эксплойт в Go и создал готовый к запуску exe-файл, который можно найти здесь (https://github.com/FireFart/hivenightmare). Он сбрасывает святое трио в текущий каталог, просто выполняя exe-файл следующим образом:

-9

Повышение привилегий

На данный момент мы получили дампы кустов SAM, SECURITY и SYSTEM, и теперь мы будем использовать эти файлы для извлечения хешей и проведения хэш-атаки. Во-первых, мы используем скрипт secretsdump.py пакета Impacket Toolkit для дампа хэшей. Сценарий таков: злоумышленник (мы) успешно получил ульи с машины жертвы.

Для этого загрузите набор инструментов impacket здесь (https://github.com/fortra/impacket).

Secretsdump — это скрипт Python без агента, используемый для получения различных хэшей из разных типов файлов, включая NTLM из трио (формат хэша паролей Windows по умолчанию).

Скачать можно здесь: (https://github.com/SecureAuthCorp/impacket/blob/master/impacket/examples/secretsdump.py).

Для этого мы скопируем три файла в текущий каталог и введем:

python3 secretsdump.py -sam /root/SAM -system /root/SYSTEM -security /root/SECURITY LOCAL

-10

Как Вы можете видеть на скриншоте выше, мы получили NTLM-хеш для учетной записи администратора. Очевидно, что в этом случае мы знали пароль (1234), но в идеале злоумышленник теперь взламывает этот хэш, используя John или другие подобные инструменты для взлома хеша, или он проводит атаку «pass the hash».

PassTheHash (PtH): В этом типе атаки злоумышленник может обойти механизмы аутентификации, предоставив хэш пароля, а не сам пароль. Эта слабость наиболее распространена в системах Windows. Во время входа в сетевую службу в Windows серверная часть, в конечном итоге, преобразует обычную текстовую строку в хэш, и сравнивает ее с существующим хешем в базе данных (ульями); Аналогичным образом, при атаке PtH внутренний код из-за присущей ему уязвимости обманывается, когда пользователь вводит хеш вместо строки пароля и разрешает аутентификацию.

Теперь, на основе хэшей, полученных на предыдущем шаге, мы проведем PtH-атаку, используя скрипт psexec.py из набора инструментов Impacket (можно найти здесь: https://github.com/SecureAuthCorp/impacket/blob/master/examples/psexec.py).

Обратите внимание, что после Windows 10, Microsoft изменила принцип работы хеширования NTLM. Хэши LM больше не используются, но используемый инструмент существует еще со времен NT и LM. Итак, здесь мы будем использовать строку из 32 нулей, вместо LM-хеша.

PsExec — в Windows PsTools используются для ряда различных функций, связанных с процессами, таких как составление списков, ведение журнала, мониторинг и т. д. PsExec используется для удаленного выполнения процессов. По данным Sysinternals (здесь: https://learn.microsoft.com/en-us/sysinternals/downloads/psexec), «самые мощные возможности использования PsExec включают запуск интерактивных командных строк в удаленных системах и инструменты удаленной активации, такие как IpConfig, которые в противном случае не имеют возможности отображать информацию об удаленных системах».

Impacket разработал PsExec на основе Python, который можно использовать для удаленного вызова CLI, с использованием учетных данных. Однако здесь мы будем передавать хэш следующим образом:

python3 psexec.py -hashes 00000000000000000000000000000000:7ce21f17c0aee7fb9ceba532d0546ad6 administrator@192.168.1.145

-11

И это сотворило свое волшебство!

Выводы и смягчение последствий

Простота эксплуатации делает эту уязвимость критической угрозой для любой организации. Microsoft выпустила для этого исправления безопасности, однако есть еще один обходной путь — ограничить доступ к содержимому %windir%\system32\config, введя команду в командной строке cmd:

icacls %windir%\system32\config\*.* /inheritance:e

Спасибо за прочтение.