Здравствуйте, дорогие друзья. В этой статье мы повысим привилегии в 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
Далее нам придется включить защиту системы. Для этого перейдите в Панель управления->Система и безопасность->Система->Защита системы и настройте
Теперь установите флажок «Включить защиту системы», нажмите «Применить» и «ОК».
Когда Вы вернетесь в меню защиты системы сейчас, Вы увидите, что ранее неактивная опция «Создать», в настройках точки восстановления, теперь активирована. Нажмите «Создать», чтобы создать точку восстановления прямо сейчас.
Дайте ему любое имя. В качестве названия, я указал случайную дату.
Мы готовы двигаться дальше.
Способ эксплуатации 1: HiveNightmare.exe (эксплойт C++)
Теперь, чтобы воспользоваться этой уязвимостью, Кевин Бомонт создал для нее zero-day (и PoC). Этот эксплойт ищет теневую копию в системе и считывает ее для кустов SAM, SYSTEM и SECURITY.
Эксплойт написан на C++ и создан GossiTheDog. Он может быть найден здесь (https://github.com/GossiTheDog/HiveNightmare). Поскольку эксплойт запускается локально, мы загрузим его в систему, где была создана точка восстановления системы, и запустим его с помощью простой командной строки пользователя, без прав администратора. Как видите, подсказка ясно сообщила нам, что в случае успешного завершения выполнения, три файла будут сброшены в одну и ту же папку. Проверяем то же самое с помощью команды «dir» и следуем!
Способ эксплуатации 2: serioussam.ps1 (эксплойт Powershell)
Сценарий, созданный romarroca, можно найти здесь (https://github.com/romarroca/SeriousSam). Он создан в Powershell и более портативен, чем вариант exe, созданный Кевином Бомонтом. При этом кусты SAM и SYSTEM копируются из созданного дампа точки восстановления. Выполнение довольно простое, просто запустите скрипт, следующим образом:
Способ эксплуатации 3: hive.exe (эксплойт Go)
Кристиан Мельмауэр перевел тот же эксплойт в Go и создал готовый к запуску exe-файл, который можно найти здесь (https://github.com/FireFart/hivenightmare). Он сбрасывает святое трио в текущий каталог, просто выполняя exe-файл следующим образом:
Повышение привилегий
На данный момент мы получили дампы кустов 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
Как Вы можете видеть на скриншоте выше, мы получили 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
И это сотворило свое волшебство!
Выводы и смягчение последствий
Простота эксплуатации делает эту уязвимость критической угрозой для любой организации. Microsoft выпустила для этого исправления безопасности, однако есть еще один обходной путь — ограничить доступ к содержимому %windir%\system32\config, введя команду в командной строке cmd:
icacls %windir%\system32\config\*.* /inheritance:e
Спасибо за прочтение.