ЗАПРЕТ ОБРАТИМОГО ШИФРОВАНИЯ
Когда пароль можно расшифровать — это не защита, а отложенная утечка
Обратимое шифрование паролей в Active Directory — артефакт эпохи совместимости. Функция Store password using reversible encryption существует не для безопасности, а для поддержки устаревших приложений 1990-х годов, требующих получения пароля в открытом виде.
Технически это не шифрование в современном понимании. Windows применяет алгоритм RC4 с фиксированным ключом, хранящимся локально на контроллере домена. Любой, получивший доступ к базе ntds.dit, может извлечь все пароли за минуты с помощью инструментов вроде Mimikatz или SecretsDump.
Фиксированный ключ шифрования хранится в реестре HKLMSECURITYPolicyPolSecretEncryptionKey. Доступ к нему получает любая учётная запись с правами локального администратора контроллера домена.
💀 Реальный сценарий компрометации
Атакующий получает права локального администратора на контроллере домена через уязвимость в службе печати (PrintNightmare). За 8 минут он:
- Извлекает
ntds.ditи системный ключSYSTEM - Запускает
secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL - Получает 1 247 паролей в открытом виде за 94 секунды
- Переходит к горизонтальному перемещению по сети с правами учётных записей домена
🔑 Критическая деталь: атака возможна только потому, что политика Store password using reversible encryption была включена для совместимости с устаревшей системой распределения зарплаты.
Где встречается эта политика
- Групповые политики домена:
Computer Configuration → Policies → Windows Settings → Security Settings → Account Policies → Password Policy - Локальные политики безопасности (
secpol.msc) на автономных серверах - Результат аудита безопасности через
gpresult /h report.html
Что происходит при отключении
- Существующие пароли остаются в обратимом формате до следующей смены
- Новые пароли (смена/регистрация) хранятся только в виде хешей
NTLMиKerberos - Приложения, требующие обратимого шифрования, перестанут аутентифицировать пользователей
🛠️ Пошаговое отключение политики
- Откройте
gpmc.mscна контроллере домена - Перейдите к политике по пути:
Group Policy Objects → [Имя политики] → Edit - Разверните ветку:
Computer Configuration → Policies → Windows Settings → Security Settings → Account Policies → Password Policy - Найдите параметр
Store password using reversible encryption for all users in the domain - Установите значение
Disabled - Закройте редактор и выполните
gpupdate /forceна контроллерах
⚠️ Критические нюансы перед отключением
Обратимое шифрование иногда включено неявно через устаревшие механизмы аутентификации:
- Службы
CHAPв точках доступа Wi-Fi - Системы единого входа (SSO) без поддержки современных протоколов
- Кастомные приложения с жёстко закодированными алгоритмами аутентификации
🔍 Перед отключением выполните аудит: Get-ADUser -Filter * -Properties 'msDS-UserPasswordExpiryTimeComputed' | Where-Object {$_.CannotChangePassword -eq $false} — это покажет учётные записи, которые могут зависеть от обратимого шифрования.
Что использовать вместо обратимого шифрования
Современные системы не требуют хранения паролей в обратимом виде. Для сценариев, где приложению нужен доступ к учётной записи пользователя:
Хеширование с солью (bcrypt, Argon2) делает невозможным восстановление исходного пароля даже при компрометации базы — в отличие от обратимого шифрования, где восстановление тривиально.
Проверка текущего состояния политики
Get-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSet ControlLsa' -Name 'NoLMHash','RestrictSendingNTLMTraffic' | Format-List # Для групповых политик: Get-GPOReport -Name "Default Domain Policy" -ReportType XML | Select-String "ReversibleEncryptionEnabled"
Значение 1 в параметре ReversibleEncryptionEnabled означает ВКЛЮЧЕННУЮ опасную политику
Итог: три действия сегодня
1
Проверьте политику через secpol.msc или командлеты PowerShell
2
Выявите приложения, зависящие от обратимого шифрования — протестируйте их работу после отключения
3
Отключите политику и запланируйте массовую смену паролей для критичных учётных записей
Обратимое шифрование — не компромисс безопасности, а её полное отсутствие. Его отключение не «усложняет» работу — оно предотвращает гарантированную утечку при первой же компрометации контроллера домена.