Все-таки архитектурные решения 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. Procedures – Tools – Codes – Base64 Encode/Decode – Base64 Decode
Полученный код зашифрован AES256 и ситуация кажется безисходной, только вот ключ расшифровки Microsoft сама выложила в открытые источники (MSDN 2.2.1.1.4 Password Encryption).
И этот код (hex):
4e9906e8fcb66cc9faf49310620ffee8f496e806cc057990209b09a433b66c1b
Теперь можно запустить расшифровку:
Для этого выбираем Analysis – Symmetric Encryption (modern) – AES (CBC)…
В длине ключа (Key length:) выбираем 256 bits, вводим ключ, официально полученный от Microsoft и нажимаем Start.
Через секунду получаем наш код:
Итого нам остается только удалить из ключа лишние точки, которыми разделены символы, и у нас есть пароль локально администратора всех компьютеров, к которым применяется эта политика безопасности (сам пароль 123QAZwsx).
Добро пожаловать в систему.
P.S. На заметку администраторам: если данным методом все-таки необходимо воспользоваться, то отключите политику сразу после того как она была выполнена.
Заказать Аудит Безопасности или Пентест Вашей IT-инфраструктурыБыть уверенным в своей IT-инфраструктуре – это быть уверенным в завтрашнем дне. Для того, чтобы сделать заказ:
|
Этот блог ищется в гугле, поэтому для страждущих добавлю, что подобное поведение было отключено в https://support.microsoft.com/en-us/kb/2962486/ru-ru” (KB 2919355 от 13 мая 2014)
В KB2919355 от 13 мая 2014 г. https://support.microsoft.com/en-us/kb/2962486/ru-ru
Спасибо за дополнение!