Определение, если учетная запись пользователя имеет пароль установлен / включен в Windows - PullRequest
0 голосов
/ 29 октября 2018

В моем приложении я проверяю, есть ли у пользователя установленный / включенный пароль в Windows как часть приложения безопасности (сканирование уязвимостей).

Я сам из области разработки программного обеспечения, поэтому я довольно новичок в области системного администрирования. До сих пор я знал о API LogonUsers , который работает, но при использовании этого API и попытке входа в систему пустые учетные данные учитываются в политике блокировки учетной записи, если это установлено, что делает использование API неосуществимым.

Команда cmd, которую я недавно обнаружил, net use \\%COMPUTERNAME% "/user:%USERNAME%", работает "иногда", но чаще всего она не сможет проверить, установлен ли пароль, поскольку она выдает тот же вывод.

В программе Bit defender Internet Security утилита сканирования уязвимостей имеет проверку, чтобы выполнить этот вопрос с высокой точностью без запуска / подсчета счетчика «неудачных попыток входа в систему» ​​при блокировке учетной записи групповой политики политика установлена. Я пытался использовать монитор процессов Sysinternals для обратного инжиниринга этой функции, но не смог ничего найти (возможно, я что-то пропустил). Еще одна загадка - выяснить, как Bit defender способен получить пароль «длины».

Мне было интересно, есть ли у кого-нибудь совет по проверке, установлен ли / включен ли пароль учетной записи пользователя?

1 Ответ

0 голосов
/ 03 ноября 2018

После изменения пароля даже Windows не знает, какова длина пароля. Пароль хранится в виде хэша фиксированной длины в базе данных SAM. Существуют недокументированные API-интерфейсы для запроса базы данных SAM для получения пароля, но по сути он возвращает только хэш пароля фиксированной длины.

Вы можете получить различную информацию о политике паролей с помощью NetUserModalsGet () api, но она будет возвращать только минимальную длину пароля и т. Д. Существует другой API для получения информации об учетной записи пользователя, который называется * 1005. * NetUserGetInfo () , и это вернет срок действия пароля, и, возможно, вы можете использовать его, чтобы проверить, когда пароль был изменен в последний раз, но это может не сильно помочь. Один из способов сделать это - вызвать LogonUser с пустым паролем и, если он не удался, сбросить bad_pw_count до того, что было до вашей попытки. В любом случае я гарантирую вам, что любая программа, которая утверждает, что знает длину пароля пользователя в Windows, является ерундой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...