|
Заткни сквозняки в "форточках"
Xakep, номер #049, стр. 049-070-2 Как же быть? Допустим, что хэши паролей каким-то образом перехвачены (из файла SAM, из реестра, или отснифаны по сети). В таких случаях обычно рекомендуют выбирать надежные пароли длиной не менее семи символов, дабы получивший хэш-код взломщик не смог их расшифровать подбором "в лоб" (bruteforce) за приемлемое время. Но этого мало. Дело в том, что в WinNT пароли по умолчанию хранятся зашифрованными сразу по двум алгоритмам. Сделано это в целях все той же пресловутой совместимости. Первый алгоритм - так называемый LM-hash, существующий для совместимости с аутентификацией в сетях LanMan, второй - собственный NT'шный, алгоритм NT-hash. LM-алгоритм работает не просто криво, а очень криво. А именно, он разделяет полученный пароль на две части по семь символов каждая (т.е., например, если пароль состоит из десяти символов, то он преобразует его в два слова, из семи и из трех символов соответственно), переводит все символы в верхний регистр, шифрует каждую часть отдельно, и два полученных хэша объединяет вместе, получая тот самый LM-hash. Надо ли говорить, что подбор зашифрованных таким алгоритмом паролей значительно проще (очевидно, что легче расшифровать два пароля из семи и трех символов, чем один из десяти)? И все программы подбора паролей умеют пользоваться этой возможностью, взламывая две половины пароля одновременно. На скриншоте представлен процесс взлома паролей утилитой L0phtCrack, и видно, что последний, восьмой символ пароля пользователя winroot (переименованная учетная запись администратора) определился сразу, т.к. подобрать пароль из одной буквы не составляет труда. Учитывая, что многие пароли представляют собой простые слова или сочетания слов, из-за применения в винде LM-hash'а может сложиться ситуация, когда пароль из семи символов надежнее пароля из десяти. Ведь на основании быстро угаданных последних трех символов можно сделать вывод обо всем пароле в целом. А избавиться от недостатка очень легко. Через панель администрирования, оснастку Local Security Policy, в разделе Local Security Settings -> Security Options найти политику "Network Security: LAN Manager authentification level" и изменить дефолтовое значение (Send LM & NTLM responses) на что-то вроде Send NTLM response only (или использовать NTLMv2, если не нужна совместимость или в сети отсутствуют машины на NT4/Win9x). |