Теория и практика взлома паролей WindowsNT


Nonfamous Hero

Программа L0phtCrack+, так же как и L0phtCrack, предназначена для взлома паролей Windows NT. Windows NT хранит пароли в зашифрованном виде, называемом хэшами паролей (hash (англ.) - смесь, мешанина). L0phtCrack+ расшифровывает и представляет пароли в явном виде с учетом регистра.

Пароль может быть определен различными методами. Первый из них использует для взлома файл словаря, указанный пользователем. Последовательно вычисляются хэши паролей для каждого из слов файла словаря и сравниваются с хэшами паролей каждого из пользователей. Когда хэши совпадают - пароль найден. Этот метод чрезвычайно быстр. Недостатком его является то, что таким образом могут быть найдены только очень простые пароли, которые имеются в словаре.

Второй метод - последовательный перебор комбинаций (brute force (англ.) - грубая сила (дословно), решение "в лоб"). Этот метод использует набор символов и вычисляет хэш для каждого возможного пароля, составленного из этих символов. При использовании этого метода пароль всегда будет определен, если составляющие его символы присутствуют в выбранном наборе. Единственный недостаток этого метода - большое количество времени, которое может потребоваться на определение пароля. Чем большее количество символов содержится в выбранном наборе, тем больше времени пройдет, пока перебор всех комбинаций не закончится.

Также может использоваться гибрид атаки по словарю и последовательного перебора. В этом случае к каждому слову словаря добавляются символы справа и/или слева. Для каждой получившейся комбинации вычисляется хэш, который сравнивается с хэшами паролей каждого из пользователей.

Доступ к хэшам паролей

Для того, чтобы определить пароли, надо получить хэши паролей. Имеется 3 основных способа получения хэшей паролей: из файла SAM на диске, создание дампа паролей из реестра и посредством перехвата аутентификационных пакетов в сети.

Получение хэшей паролей из файла SAM

Учетные записи пользователей, содержащие в том числе имя пользователя и его пароль, хранятся в реестре Windows NT, а именно в той его части, которая находится в файле SAM (Security Account Manager (англ.) - диспетчер защиты учетных записей). Этот файл можно найти на диске в каталоге %systemroot%\system32\config, на диске аварийного восстановления системы или на резервной магнитной ленте.

К файлу SAM в каталоге %systemroot%\system32\config нельзя получить доступ, пока Windows NT загружена, так как он открыт операционной системой. Если имеется физический доступ к машине, необходимо загрузиться, например, с дискеты и, предварительно запустив обеспечивающую доступ к разделам с NTFS программу, например, NTFSDOS или NTFS for Windows 98 (авторы Mark Russinovich, Bryce Cogswell), скопировать файл SAM. Затем нужно воспользоваться L0phtCrack+ для импорта файла SAM. Можно использовать и L0phtCrack или саму программу SAMDump (автор Дмитрий Андрианов) для извлечения хэшей паролей из файла SAM, но в этом случае все нелатинские буквы в полученном PwDump-файле будут искажены.

Другой способ получить файл SAM, причем этот способ не требует перезагрузки машины, - это копирование его из каталога %systemroot%\repair или с диска аварийного восстановления. Каждый раз, когда создается диск аварийного восстановления с помощью программы RDISK, файл SAM запаковывается и сохраняется в файл "sam._". Этот файл может быть распакован командой "expand sam._ sam". Недостатком этого способа является то, что с момента создания диска аварийного восстановления пароли могли измениться и, возможно, файл "sam._" содержит устаревшие данные. В программе L0phtCrack+ имеется возможность импорта файла SAM и из файла "sam._", избавляющая от использования программы expand.

Файл SAM также копируется на магнитную ленту, когда создается полная резервная копия. Если имеется доступ к резервной магнитной ленте, можно восстановить файл SAM из %systemroot%\system32\config на другую машину и затем извлечь из него хэши паролей. Недостатком и этого способа также является то, что с момента последнего сеанса создания резервной копии пароли могли измениться.

Существует служебная программа SYSKEY, входящая в Service Pack, начиная с Service Pack 3 по последний на настоящий момент Service Pack 6a. Если служебная программа SYSKEY активизирована, то файл SAM дополнительно шифруется и хэши паролей не могут быть извлечены вышеупомянутым способом. SYSKEY может использоваться в одном из 3х вариантов:

• сгенерированный ключ шифрования записывается на локальный жесткий диск в зашифрованном виде;
• сгенерированный ключ шифрования записывается на дискету, которая должна быть вставлена во время загрузки операционной системы;
• для получения ключа шифрования берется пароль, выбранный администратором и вводимый во время загрузки операционной системы.

Подробнее о программе SYSKEY можно прочитать Здесь. Создание дампа паролей

Если Вы имеете административные права, то можете получить хэши паролей из реестра методом pwdump как с помощью L0phtCrack+, так и с помощью L0phtCrack или самой программы pwdump (автор Jeremy Allison). Если удаленный доступ к реестру разрешен, то можно сделать это и по сети. В противном случае Вы должны физически присутствовать на локальной машине.

Если программа SYSKEY активизирована, хэши паролей дополнительно еще шифруются и поэтому не могут быть получены описанным выше способом.

В том случае, если программа SYSKEY активизирована, но Вы имеете административные права, то можете получить хэши паролей из реестра методом pwdump2 как с помощью L0phtCrack+, так и с помощью самой программы pwdump2 (автор Todd A. Sabin). Использование метода pwdump2 возможно только на локальной машине.

Перехват аутентификационных пакетов в сети

Даже если программа SYSKEY установлена и запущена, не имеется никакого доступа по сети к реестру или физического доступа, не стоит отчаиваться. Существует третий способ получения хэшей паролей - перехват аутентификационных пакетов в сети (sniffing (англ.) - вынюхивание). Дело в том, что клиентская машина обменивается с сервером аутентификационными пакетами каждый раз, когда требуется подтверждение прав пользователя. Нужно, чтобы Ваша машина находилась в сегменте пользователя или ресурса, к которому он обращается. Программа для перехвата аутентификационных пакетов (sniffer (англ.) - нюхатель), встроенная в L0phtCrack, работает только на машинах с Ethernet-адаптером, но зато и в Windows NT, и в Windows 95/98. L0phtCrack надо оставить запущенной на некоторое время, например на рабочий день, и она соберет достаточное количество хэшей паролей.

Для препятствования получения хэшей паролей этим способом фирмой Microsoft было разработано расширение существующего механизма аутентификации, называемое NTLMv2. Его использование становится возможным после установки Service Pack, начиная с Service Pack 4 по последний на настоящий момент Service Pack 6a. Подробнее об использовании NTLMv2 можно прочитать здесь.

Определение паролей

После того, как хэши паролей получены в виде PwDump- (passwords dump (англ.) - дамп паролей) или Sniff-файла, необходимо загрузить их в L0phtCrack+ и начать взлом паролей.

Каждая строка PwDump-файла имеет следующий формат:

"ИмяПользователя:RID:LanMan Hash:NT Hash:ПолноеИмя,Описание:ОсновнойКаталогПользователя:"
Каждая из 7-символьных половин пароля шифруется независимо от другой в LanMan Hash по алгоритму DES (федеральный стандарт США), NT Hash получается в результате шифрования всего пароля по алгоритму MD4 (фирмы RSA Security, Inc.). LanMan Hash содержит информацию о пароле без учета регистра (большими буквами), а NT Hash - с учетом регистра. Поэтому взлом сначала осуществляется по LanMan Hash, а после нахождения LanMan-пароля используется и NT Hash для определения NT-пароля.

Каждая строка Sniff-файла имеет следующий формат:
"ИмяПользователя:3:Server Challenge:LanMan Response:NT Response"
LanMan Response получается в результате шифрования LanMan Hash, NT Response - в результате шифрования NT Hash. Шифрование выполняется по алгоритму DES таким образом, что определить и LanMan-, и NT-пароль можно только при проверке всего пароля. Поэтому на определение паролей по Sniff-файлу потребуется значительно больше времени.

Дополнительные возможности получения информации о паролях

Если в сети есть машины с установленными на них операционными системами Windows for Workgroups или Windows 95/98, то имеются дополнительные возможности получения информации о паролях.
Во-первых, по умолчанию в этих операционных системах выполняется кэширование паролей пользователей на диск в файлы %windir%\<ИмяПользователя>.pwl (PassWords List (англ.) - список паролей). Пароли хранятся в зашифрованном виде, причем регистр букв игнорируется (всегда используются большие буквы). Следует учитывать, что алгоритм шифрования паролей начиная с Windows 95 OSR2 был изменен, так как была исправлена обнаруженная ошибка. Поэтому расшифровать старые PWL-файлы значительно проще. Для этого могут быть применены программы Glide (автор Frank Andrew Stevenson), PWL_Key (автор Артур Иванов), PwlHack (автор Hard Wisdom), PwlTool (авторы Vitas Ramanchauskas, Евгений Королев). Для взлома же новых PWL-файлов можно использовать уже упоминавшиеся PwlHack или PwlTool.

Во-вторых, также при разрешенном кэшировании паролей, с момента входа и регистрации пользователя в Windows и до момента выхода пароли можно определить, запустив программу PwlView (авторы Vitas Ramanchauskas, Евгений Королев). Она показывает кэшируемые пароли на локальной машине для текущего пользователя, используя стандартные, но недокументированные функции API.

Если пользователь Windows NT является одновременно пользователем Windows for Workgroups или Windows 95/98 и будет определен его пароль (как пользователя Windows for Workgroups или Windows 95/98), в котором, как уже упоминалось ранее, содержатся только большие буквы, то с помощью L0phtCrack+ пароль Windows NT может быть определен практически мгновенно.

Рекомендации администратору Windows NT
На машинах с Windows for Workgroups и Windows 95/98:
• отключить кэширование паролей в Windows for Workgroups. Для этого в файле %windir%\system.ini добавить следующий параметр:
[NETWORK]
PasswordCaching=no
• отключить кэширование паролей в Windows 95/98. Для этого с помощью REGEDIT (редактора реестра) найти в реестре двоичный параметр и установить его в 1 (создав его, если он не существовал):
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\
CurrentVersion\Policies\Network\DisablePwdCaching
• после отключения кэширования паролей удалить все PWL-файлы с диска и перезагрузить операционную систему.
На машинах с Windows NT 4.0:

• в Setup разрешить загрузку только с жесткого диска;
• установить пароль на вход в Setup;
• Windows NT должна быть единственной операционной системой, установленной на машине;
• использовать файловую систему NTFS;
• запретить или максимально ограничить доступ к компьютеру через сеть;
• установить Service Pack 6a и активизировать служебную программу SYSKEY;
• если в сети отсутствуют клиенты с Windows for Workgroups и Windows 95/98, то настоятельно рекомендуется отключить аутентификацию LanManager, так как это значительно затруднит взлом паролей. Если же такие клиенты присутствуют, то можно включить использование аутентификации только по запросу сервера. Это можно сделать, активизировав расширение механизма аутентификации NTLMv2. Для его активизации необходимо добавить в реестр следующие параметры:

• LMCompatibilityLevel типа DWORD к ключу
HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\LSA
Диапазон: 0-5, по умолчанию - 0.
0 - используется аутентификация LanMan и аутентификация Windows NT, никогда не используется аутентификация NTLMv2;
1 - используется аутентификация NTLMv2, если это необходимо;
2 - используется только аутентификация Windows NT;
3 - используется только аутентификация NTLMv2;
4 - контроллер домена отказывается от аутентификации LanMan;
5 - контроллер домена отказывается от аутентификации LanMan и от аутентификации Windows NT (допустима только аутентификация NTLMv2).

• NtlmMinClientSec или NtlmMinServerSec типа DWORD к ключу
HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\LSA\MSV1_0
Диапазон: объединенные по логическому ИЛИ любые из следующих значений:
0x00000010 - целостность сообщения;
0x00000020 - конфиденциальность сообщения;
0x00080000 - NTLMv2 защита сеанса;
0x20000000 - 128-битное шифрование.

Подробнее об использовании NTLMv2 можно прочитать здесь.

• при выборе паролей Windows NT соблюдать следующие правила:
• ни в коем случае не выбирать в качестве пароля или части пароля любое слово, которое может быть в каком-либо словаре, или его модификацию;
• пароль должен быть длиной минимум 7 символов, но желательнее 14 (максимально возможная длина пароля);
• каждая из 7-символьных половин пароля должна содержать символы из возможно большего символьного набора. Нельзя ограничиваться только символами A-Z, а желательнее использовать в пароле и буквы, и цифры, и какие-либо другие символы (причем в каждой из 7-символьных половин пароля);
• соблюдать прочие правила администрирования Windows NT (переименовать пользователя "Administrator" или "Администратор", периодически менять все пароли, установить блокировку учетных записей после определенного числа неудачных попыток входа, установить протоколирование неудачных входов и т.д.), помня о том, что существуют и другие методы взлома операционной системы.




 

Используются технологии uCoz