Что такое обратимое шифрование

ЗАПРЕТ ОБРАТИМОГО ШИФРОВАНИЯ

Когда пароль можно расшифровать — это не защита, а отложенная утечка

Обратимое шифрование паролей в Active Directory — артефакт эпохи совместимости. Функция Store password using reversible encryption существует не для безопасности, а для поддержки устаревших приложений 1990-х годов, требующих получения пароля в открытом виде.

Технически это не шифрование в современном понимании. Windows применяет алгоритм RC4 с фиксированным ключом, хранящимся локально на контроллере домена. Любой, получивший доступ к базе ntds.dit, может извлечь все пароли за минуты с помощью инструментов вроде Mimikatz или SecretsDump.

Фиксированный ключ шифрования хранится в реестре HKLMSECURITYPolicyPolSecretEncryptionKey. Доступ к нему получает любая учётная запись с правами локального администратора контроллера домена.

💀 Реальный сценарий компрометации

Атакующий получает права локального администратора на контроллере домена через уязвимость в службе печати (PrintNightmare). За 8 минут он:

  1. Извлекает ntds.dit и системный ключ SYSTEM
  2. Запускает secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL
  3. Получает 1 247 паролей в открытом виде за 94 секунды
  4. Переходит к горизонтальному перемещению по сети с правами учётных записей домена

🔑 Критическая деталь: атака возможна только потому, что политика Store password using reversible encryption была включена для совместимости с устаревшей системой распределения зарплаты.

Где встречается эта политика

  • Групповые политики домена: Computer Configuration → Policies → Windows Settings → Security Settings → Account Policies → Password Policy
  • Локальные политики безопасности (secpol.msc) на автономных серверах
  • Результат аудита безопасности через gpresult /h report.html

Что происходит при отключении

  • Существующие пароли остаются в обратимом формате до следующей смены
  • Новые пароли (смена/регистрация) хранятся только в виде хешей NTLM и Kerberos
  • Приложения, требующие обратимого шифрования, перестанут аутентифицировать пользователей

🛠️ Пошаговое отключение политики

  1. Откройте gpmc.msc на контроллере домена
  2. Перейдите к политике по пути: Group Policy Objects → [Имя политики] → Edit
  3. Разверните ветку: Computer Configuration → Policies → Windows Settings → Security Settings → Account Policies → Password Policy
  4. Найдите параметр Store password using reversible encryption for all users in the domain
  5. Установите значение Disabled
  6. Закройте редактор и выполните gpupdate /force на контроллерах

⚠️ Критические нюансы перед отключением

Обратимое шифрование иногда включено неявно через устаревшие механизмы аутентификации:

  • Службы CHAP в точках доступа Wi-Fi
  • Системы единого входа (SSO) без поддержки современных протоколов
  • Кастомные приложения с жёстко закодированными алгоритмами аутентификации

🔍 Перед отключением выполните аудит: Get-ADUser -Filter * -Properties 'msDS-UserPasswordExpiryTimeComputed' | Where-Object {$_.CannotChangePassword -eq $false} — это покажет учётные записи, которые могут зависеть от обратимого шифрования.

Что использовать вместо обратимого шифрования

Современные системы не требуют хранения паролей в обратимом виде. Для сценариев, где приложению нужен доступ к учётной записи пользователя:

Сценарий
Решение
Делегирование прав
Kerberos Constrained Delegation или Resource-Based Constrained Delegation
Хранение учётных данных
Windows Credential Manager или защищённые переменные в секретах (Azure Key Vault, HashiCorp Vault)
Аутентификация в устаревших системах
Сервисные учётные записи с ограниченными правами + строгий аудит через центральные логи

Хеширование с солью (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

Отключите политику и запланируйте массовую смену паролей для критичных учётных записей

Обратимое шифрование — не компромисс безопасности, а её полное отсутствие. Его отключение не «усложняет» работу — оно предотвращает гарантированную утечку при первой же компрометации контроллера домена.

Оставьте комментарий