Как кэшированные учетные данные домена Active Directory хранятся на клиенте Windows? Хранятся ли они в локальной базе данных SAM, что делает их уязвимыми для тех же атак с использованием радужных таблиц, которым подвержены локальные учетные записи пользователей, или они хранятся по-другому? Обратите внимание, что я понимаю, что они засолены и хешированы, чтобы не храниться в виде обычного текста, но хешируются ли они так же, как локальные учетные записи, и хранятся ли они в том же месте?
Я понимаю, что, как минимум, они уязвимы для атак грубой силы, но это намного лучше, чем быть уязвимыми для радужных таблиц в случае кражи машины.
Кэшированные учетные данные для домена AD фактически представляют собой двойные хэши пароля с солью и хранятся в кусте HKLM \ Security. Расположение файла улья: %systemroot%\System32\config\SECURITY
Доступ к ключам реестра имеет только «системный» пользователь:
HKLM\Security\Cache\NL$n
где n
- это индекс от 1 до максимального количества кэшированных учетных данных.
WinNT to WinXP использовали хэши "Lan Manager" для местный учетные записи, которые легко взломать на современном оборудовании. Взлом обычно занимает несколько минут (недавно я ввел 3 пароля в 00:08:06) на "обычном" настольном компьютере. Хэши Lan Manager не соленые, поэтому есть и общедоступные радужные таблицы.
Vista и более поздние версии используют хэши NT для местный Счета. Windows 2000 и более поздние версии используют хэши NT для домен аккаунты. NT-хэши - это двойные хэши MD4 с солью. Соль для каждой записи предотвращает использование радужных таблиц, но MD4 может выполняться очень быстро на современном оборудовании: около 6 вычислительных лет для 60-битного пароля. Если повезет и кластер из 6 GPU, взломщик сможет взломать такой пароль примерно за 6 месяцев. Если взять это в облако, около 35 тысяч долларов на графический процессор Amazon EC2 - в зависимости от доступности, это могут быть часы.
Они обрабатываются Credential Manager, для которого есть Credential Manager API. Соленые хэши хранятся на диске в некоторой степени защищенным образом и доступны через HKLM \ Security. (К которому по умолчанию может получить доступ только LocalSystem, но его легко обойти, например, с помощью psexec -i -s regedit.exe.)
Однако в работающей системе Windows ситуация еще более ужасна, поскольку недавно использованные учетные данные можно получить и легко преобразовать в обычный текст, подключив DLL к Lsass. (См. Mimikatz.)
Так что да, вы найдете какой-то хеш (или хеш хеша, или «верификатор», или как хотите его назвать) в HKLM \ Security \ Cache на клиенте. Но я не думаю, что есть реальный способ атаковать хеш на диске. Это не тот старый вид хэша NTLM, который можно атаковать.
Учетные данные фактически не кэшируются на локальном компьютере. См. Этот отрывок из MS:
Безопасность кэшированных учетных данных домена
Термин кэшированные учетные данные не совсем точно описывает, как Windows кэширует информацию для входа в домен. В Windows 2000 и более поздних версиях Windows имя пользователя и пароль не кэшируются. Вместо этого система хранит зашифрованный верификатор пароля. Этот верификатор представляет собой соленый хеш MD4, который вычисляется дважды. Двойное вычисление фактически превращает верификатор в хэш пароля пользователя. Это поведение отличается от поведения Microsoft Windows NT 4.0 и более ранних версий Windows NT.