Уподобання групових політик (GPP - Group Policy Preferences) - потужне розширення технології групових політик Windows, яка спрощує роботу з налаштування і управління парком комп'ютерів, і є свого роду заміною скриптів в GPO. Однією з можливостей GPP - можливість управління паролями локальних і сервісних облікових записів, широко використовувана багатьма адміністраторами, які навіть не підозрюють про небезпеку цієї технології. У цій статті ми поговоримо, чому не варто використовувати можливості Group Policy Preferences з управління паролями.
У Group Policy Preferences існують 5 різних політик, що дозволяють задати пароль користувача / адміністратора.
- Локальні облікові записи (Local Users and Group) - за допомогою GPP адміністратор може створити / змінити локальну обліковий запис і задати її пароль (досить часто ця політика використовується для зміни пароля локального адміністратора на всіх ПК організації)
- Мережеві диски (Drive Maps) - GPP дозволяють підключити (СМАП) користувачу мережевий диск з певним ім'ям користувача і паролем
- джерела даних (Data Sources) - при створенні джерела даних можна задати ім'я користувача і пароль облікового запису, під якою потрібно з'єднатися.
- завдання планувальника Windows (Scheduled Tasks) - завдання планувальника можна запускати з-під певного користувача
- служби (Services) - GPP дозволяють вказати обліковий запис і її пароль, з під якої буде запускатися конкретна служба (замість наукового записи Local System)
Після того, як адміністратор зберігає пароль у будь-який з перерахованих вище політик GPP, він зберігається в каталозі відповідної GPO в спеціальному XML файлі і надалі зберігаючи на контролерах домену в папці SYSVOL. Пароль в XML файлі зберігається в зашифрованому вигляді, проте для шифрування / розшифрування пароля використовується вкрай нестійкий симетричний алгоритм AES 32 (це відзначає навіть сама Microsoft).
Припустимо, адміністратор за допомогою GPP налаштував політику, яка міняє пароль локального адміністратора на всіх ПК. Система в цьому випадку збереже зашифрований пароль в каталозі GPO в файлі groups.xml. Подивимося на вміст цього файлу (файл в нашому прикладі зберігається в каталозі \\ winitpro.ru \ SYSVOL \ winitpro.ru \ Policies \ POLICY_ID \ Machine \ Preferences \ Groups):
важливо. Доступ до файлів, що зберігаються в GPO, мають всі авторизовані користувачі домену. Це означає, що в зашифрованому вигляді переглянути пароль зможе будь-який користувач.Зашифрований пароль міститься в значенні поля CPASSWORD. Найцікавіше полягає в тому, що Microsoft сама на MSDN виклала в паблік 32 бітний AES ключ, який використовується для шифрування пароля (http://msdn.microsoft.com/en-us/library/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be. aspx # endNote2)
Відповідно, фахівця нічого не заважає написати скрипт, що дозволяє розшифрувати значення пароля, що зберігається в XML файлі (алгоритм AES симетричний і при наявності ключа шифрування без праці дозволяє отримати вихідний текст).
Примітка. Скрипт, що дозволяє розшифрувати пароль, що зберігається в GPP можна отримати тут: Get-GPPPassword. Природно, ми викладаємо цей скрипт в ознайомчими цілями і не в якому разі не варто його використовувати в корисливих цілях.У Windows Server 2012 / Windows Server 2012 R2 розробники Microsft додали попередження про небезпеку зберігання паролів в такому вигляді. При спробі вказати пароль через GPP з'являється попередження вікно:
This password is stored as part of the GPO in SYSOL and is discoverable, although obscured.Також важливо відзначити той файкт, що в MetaSploit-е модуль отримання і розшифровки паролів, що зберігаються в GPP присутній ще з 2012 року. Це означає, що зловмисники практично в автоматичному режимі можуть реалізувати це вектор атаки.
Ну що, ви і надалі плануєте використовувати Group Policy Preferences для управління паролями?
Порада. В якості вирішення по управління паролями локальних адміністраторів Microsoft пропонує LAPS. Детальніше про нього в статті MS LAPS - управління паролями локальних адміністраторів в домені