Получаем пароль локального Администратора из GPO (Groups.xml)

Все-таки архитектурные решения Windows довольно странные.
Даже в групповых политиках есть критические уязвимости, которые никто не закрывает годами.
Например в AD, основанной на Windows 2008 и выше (в том числе и Windows 2012R2) есть параметр политики, которым можно задать пароль для локального администратора на компьютерах, которые входят в домен. Но данный параметр хранится практически в открытом виде. Точнее он зашифрован, причем с помощью AES256, только вот ключ шифрования хранится в открытых источниках, да и сам файл доступен почти всем.

А теперь попробуем проэксплуатировать эту уязвимость.

Для начала создадим политику, в которой будет задаваться пароль локального администратора для членов домена.
Далее в политике перейдем по адресу:
Конфигурация компьютераНастройкаПараметры панели управленияЛокальные пользователи.
И создадим нового пользователя.
Как это сделать — видно на скриншоте.
После нажатия ок, нас предупредят, что это все не безопасно (но кто на это смотрит…).

Политика создана. Теперь попробуем получить пароль. Для этого нам потребуется любой ПК, который имеет авторизацию в домене.
Войдем на сервер AD (10.XX.XX.2) в расшаренные папки и увидим там общую папку sysvol.
Увидим там папку нашего домена: xxxxx.ru
А в ней папку: Policies
Теперь остается просмотреть все папки политик на файлик Groups.xml по адресу \Machine\Preferences\Groups\.

У меня этот файл лежал в папке:
\\10.xx.xx.2\sysvol\xxxxx.ru\Policies\{B10C9C84-078D-445D-A321-C67ADBDF444C}\Machine\Preferences\Groups\Groups.xml

Теперь открываем этот файл:

< ?xml version="1.0" encoding="utf-8"?>


И находим в нем строчку:

cpassword="qXwoEIcqMbQNUxJrQnGUp1jh90pNEYWFIv60CCLtPqs"

где qXwoEIcqMbQNUxJrQnGUp1jh90pNEYWFIv60CCLtPqs и есть хэш нашего пароля.

Остается его только расшифровать. Теоритически AES256 тажело расшифровать, но только не в нашем случае.
Для расшифровки качаем CrypTool — очень полезную утилиту для работы с хэшами.
https://www.cryptool.org/en/

Запускаем его и добавлем в него наш хэш.
особенности Base64 в том, что его длина должна быть кратна 4. Поэтому считаем блоки по 4, и если в последнем блоке не хватает символов, то недостающие дописываем символами =.
В моем случае это был один символ =.

cpassword="qXwoEIcqMbQNUxJrQnGUp1jh90pNEYWFIv60CCLtPqs"

cpassword="qXwoEIcqMbQNUxJrQnGUp1jh90pNEYWFIv60CCLtPqs="
Теперь декодируем его из Base64

Indiv. ProceduresToolsCodesBase64 Encode/DecodeBase64 Decode

Полученный код зашифрован AES256 и ситуация кажется безисходной, только вот ключ расшифровки Microsoft сама выложила в открытые источники (MSDN 2.2.1.1.4 Password Encryption).
И этот код (hex):
4e9906e8fcb66cc9faf49310620ffee8f496e806cc057990209b09a433b66c1b

Теперь можно запустить расшифровку:

Для этого выбираем AnalysisSymmetric Encryption (modern)AES (CBC)…

В длине ключа (Key length:) выбираем 256 bits, вводим ключ, официально полученный от Microsoft и нажимаем Start.

Через секунду получаем наш код:

Итого нам остается только удалить из ключа лишние точки, которыми разделены символы, и у нас есть пароль локально администратора всех компьютеров, к которым применяется эта политика безопасности (сам пароль 123QAZwsx).

Добро пожаловать в систему.

P.S. На заметку администраторам: если данным методом все-таки необходимо воспользоваться, то отключите политику сразу после того как она была выполнена.

Заказать Аудит Безопасности или Пентест Вашей IT-инфраструктуры

Быть уверенным в своей IT-инфраструктуре — это быть уверенным в завтрашнем дне.

Для того, чтобы сделать заказ:

Заполните форму обратной связи и мы обязательно с вам свяжемся:
Форма обратной связи
Позвоните нам по телефону:
+7(909)952-44-33
Напишите нам на электронную почту:
order@blackdiver.net
Напишите нам в Telegram:
Telegram
Другие способы связи Вы сможете найти в разделе Контакты.

3 мысли о “Получаем пароль локального Администратора из GPO (Groups.xml)”