2

У меня есть две машины MachineA и MachineB. Оба имеют две локальные учетные записи, которые имеют одинаковое имя пользователя. Обе учетные записи являются локальными администраторами на этих машинах.

Если у них одинаковый пароль, я могу получить доступ к \\MachineA\C$ из MachineB .

Но если я изменю какой-либо один пароль выше, не будет работать. И он запрашивает имя пользователя и пароль. Теперь, если я укажу MachineA\username и пароль, он подключится.

Почему нет запроса пароля, если пароли совпадают? Я ожидал, что пароли будут хэшироваться со случайной солью. Как Windows узнает, что пароли одинаковы и разрешают доступ?

Эти машины работают под управлением Windows Server 2008 R2.

PS. Я создал следующий ключ reg для включения доступа к диску HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy to 1

1 ответ1

2

После входа в систему Windows берет введенный вами пароль и сохраняет свои хэши LM и NT в памяти ядра, чтобы обеспечить эту функцию единого входа в рабочих группах и доменах NT4. (В доменах Active Directory также сохраняется TGT Kerberos, полученный при входе в систему.)

Программы пользовательского пространства не могут получить доступ к этим хэшам напрямую 1, но они могут попросить ядро подключиться к серверу SMB с помощью сохраненного пароля / билета или выполнить запрос-ответ NTLM или аутентификацию Kerberos от имени программы (для других протоколов, таких как как IMAP или HTTP).

Кроме того, Windows NT использует несоленые хеши MD4 как для локальной аутентификации, так и для NTLM, но это не важно - с таким же успехом она может сохранять простой текстовый пароль в памяти, если это необходимо.


1 Существует инструмент WCE, который, обладая достаточными привилегиями, может проверять память ядра и отображать сохраненные учетные данные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .