Как программно получить параметр групповой политики Enforce Password History?
Как я могу программно получитьИспользовать историю паролей настройка групповой политики?
Исследования усилийВы можете найти параметр групповой политики в разделе:
** Конфигурация компьютера \ Параметры Windows \ Параметры безопасности \ Политики учетных записей \ Политика паролей **
Использовать историю паролей
Этот параметр безопасности определяет количество уникальных новых паролей, которые должны быть связаны с учетной записью пользователя, прежде чем старый пароль можно будет повторно использовать. Значение должно быть от 0 до 24 паролей.
Эта политика позволяет администраторам повышать безопасность, обеспечивая постоянное повторное использование старых паролей.
Как и все параметры групповой политики, он хранится в реестре. К сожалению, он хранится в недокументированном месте реестра:
HKEY_LOCAL_MACHINE \ SAM \ SAM \ Domains \ Account \ F
Внедокументированный двоичный формат двоичных объектов.
Тамявляется класс WMIRSOP_SecuritySettingBoolean, но без какого-либо контекста, это просто имя висит там - что я понятия не имею, как читать через COM / native.
NetValidatePasswordPolicyWindows действительно обеспечиваетNetValidatePasswordPolicy
API это позволит ему подтвердить ваш пароль для таких вещей, как:
и он будет выполнять все эти действия в соответствии с действующей на компьютере групповой политикой. И все это прекрасно работает, за исключением истории паролей.
Функция требует, чтобы вы передавали список хэшей паролей, например:
$2aявляетсяmACnM5lzNigHMaf7O1py1OLCBgGL4tYUF0N/4rS9CwDsI7ytwL4D6
$2aявляетсяmACnM5lzNigHMaf7O1py1O3vlf6.BA8k8x3IoJ.Tq3IB/2e7g61Km
$2aнедокументированный двоичный формат двоичных объектов.TtQJ4Jr6isd4Hp.mVfZeuh6Gws4rOQ/vdBczhDx.19NFK0Y84Dle
$2aнедокументированный двоичный формат двоичных объектовRo0CUfOqk6cXEKf3dyaM7OhSCvnwM9s4wIX9JeLapehKK5YdLxKcm
а также хеш нового пароля-кандидата, например:
$2aHKEY_LOCAL_MACHINE \ SAM \ SAM \ Domains \ Account \ F1JsBs47iuMNsV166PKV.u.56hlT5/tRe9V5t5FIdfA0axpDSQuNN
Это вызоветNetValidatePasswordPolicy чтобы проверить, соответствует ли ваш текущий хеш любому из существующих хешей. К сожалению, вся концепция проверки предыдущих хэшей паролей работает только при использовании алгоритма слабого пароля (такой как PBKDF2, который использует Windows).
Потому что я использую современный,дорого, соленый, алгоритм хэширования паролей (BCrypt / SCrypt), хеш не может быть детерминированно сгенерирован из одного пароля - я не могу просто проверить старый список. Я должен был бы перефразировать новый пароль пользователя противкаждый предварительно хранится соль.
это не только дорогая операция; потенциально требуется 12 секунд, чтобы проверить все 24 сохраненных хэшая не знаю, когда остановиться, потому что я не знаю значения групповой политики истории паролей (например, я проверял бы все 24 сохраненных хэша, когда мне нужно только проверить ноль).Я подумал позвонитьNetValidatePasswordPolicy
с фиктивным списком из 24 сохраненных хэшей паролей, например:
a
b
c
d
...v
w
x
Затем API сообщит мне, что пароль не соответствует ни одному изn
история. Но API также разработан, чтобы вернуть вам то, что вы должны сохранить. Этоможет быть затем вернитесь:
$2aHKEY_LOCAL_MACHINE \ SAM \ SAM \ Domains \ Account \ F1JsBs47iuMNsV166PKV.u.56hlT5/tRe9V5t5FIdfA0axpDSQuNN
a
b
c
И из этого я мог бы заключить, что его парольчетыре.
Но я еще не добрался там.
Я три дня на это и теряю терпение.
почему Microsoft запутывает групповую политику?почему Microsoft не позволяет людям читать это?почему это недокументировано?как мне все это получить?