Смекни!
smekni.com

Аудит и восстановление паролей в Windows (стр. 1 из 3)

Шевлюга Анна

Операционные системы Windows NT/2000/XP/2003 хранят пароли в зашифрованном виде, называемом хэшами паролей (hash (англ.) - смесь, мешанина). Пароли не могут быть получены непосредственно из хэшей. Восстановление паролей заключается в вычислении хэшей по возможным паролям и сравнении их с имеющимися хэшами паролей. Аудит паролей включает в себя проверку возможных путей получения информации об учетных записях пользователей, результатом восстановления паролей является их представление в явном виде с учетом регистра.

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

Существует несколько путей получения хэшей паролей, зависящих от их местонахождения и имеющегося доступа. Хэши паролей могут быть получены следующими способами: из файла SAM или его резервной копии, непосредственно из реестра операционной системы локального или удаленного компьютера, из реестра или Active Directory локального или удаленного компьютера внедрением DLL, посредством перехвата аутентификационных пакетов в сети.

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

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

К файлу SAM в каталоге %SystemRoot%system32config нельзя получить доступ, пока Windows NT/2000/XP/2003 загружена, так как он открыт операционной системой. Если имеется физический доступ к машине, необходимо скопировать файл, загрузив на этой машине другую копию операционной системы или другую операционную систему. Если Windows NT/2000/XP/2003 установлена на диске с файловой системой NTFS, то для MS-DOS и Windows 95/98/Me дополнительно нужны программы, обеспечивающие доступ к диску с NTFS из этих операционных систем. В MS-DOS могут быть использованы NTFSDOS и NTFSDOS Professional, в Windows 95/98/Me - NTFS for Windows 98 (авторами являются Mark Russinovich, Bryce Cogswell). Для доступа из операционной системы Linux требуется включение поддержки NTFS. Также можно загрузиться с дискеты и скопировать файл SAM, предварительно запустив обеспечивающую доступ к разделам с NTFS программу. После этого нужно выполнить импорт файла SAM. Извлечение хэшей паролей из файла SAM было разработано и впервые реализовано в программе SAMDump (автор Дмитрий Андрианов). При импорте файла SAM осуществляется получение списка учетных записей пользователей, содержащихся в файле SAM. Процесс импорта файла SAM подобен получению хэшей паролей методом pwdump за исключением того, что вместо функций Windows API, обеспечивающих работу с реестром Windows, используется их эмуляция. При выполнении импорта файла SAM из программы SAMDump все нелатинские буквы, имеющиеся в именах пользователей, будут искажены. Программа LCP лишена этого недостатка.

Способом получения файла SAM в операционной системе Windows NT, не требующим перезагрузки машины, является копирование его из каталога %SystemRoot% epair или с диска аварийного восстановления. Каждый раз, когда в Windows NT создается диск аварийного восстановления с помощью программы RDISK, файл SAM запаковывается и сохраняется в файл sam._, являющийся резервной копией файла SAM. Файл sam._ представляет из себя архив в формате cabinet. Этот файл может быть распакован командой "expand sam._ sam". Недостатком этого способа является то, что с момента создания диска аварийного восстановления пароли могли измениться и, возможно, файл sam._ содержит устаревшие данные. В программе LCP имеется встроенная возможность импорта файла SAM и из файла sam._, избавляющая от необходимости использования программы expand. При импорте списка учетных записей пользователей из файла sam._ он предварительно распаковывается, затем выполняется непосредственно импорт файла SAM.

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

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

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

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

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

По умолчанию используется хранение ключа запуска в реестре. Подробнее о программе SYSKEY можно прочитать в статье KB143475 Windows NT System Key Permits Strong Encryption of the SAM.

Служебная программа SYSKEY в операционной системе Windows NT для дополнительной защиты паролей учетных записей после установки Service Pack соответствующей версии должна быть активизирована вручную. В операционных системах Windows 2000/XP/2003 программа SYSKEY изначально присутствует и активизирована.

Импорт файла SAM, дополнительно зашифрованного SYSKEY, впервые был реализован в программе SAMInside (авторами являются PolASoft и Ocean). Алгоритм SYSKEY первым опубликовал FlashSky из Xfocus Team. Для выполнения импорта при хранении ключа запуска в реестре необходимо открыть файлы SAM и SYSTEM, предварительно скопировав их из каталога %SystemRoot%system32config. Если недостаточно места на дискете, файлы могут быть сжаты до копирования. Резервные копии файлов также могут находиться в каталоге %SystemRoot% epair, если ранее выполнялась архивация. При хранении ключа запуска на дискете кроме файла SAM нужен файл StartKey.Key для выполнения импорта.

Импорт файла SAM без дополнительного шифрования или с дополнительным шифрованием хэшей паролей при любом варианте хранения ключа запуска возможен в программе LCP.

Получение хэшей паролей из реестра операционной системы

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

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

Получение хэшей паролей внедрением DLL

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

Метод pwdump2 использует для создания дампа паролей способ, называемый внедрением DLL. Один процесс вынуждает другой процесс (lsass.exe), используя его идентификатор процесса, загружать DLL (samdump.dll) и выполнять некоторый код из DLL в адресном пространстве другого процесса (lsass.exe). Загрузив samdump.dll в lsass (системная служба LSASS - Local Security Authority Subsystem), программа использует тот же самый внутренний API, что msv1_0.dll, чтобы обратиться к хэшам паролей. Это означает, что она может получить хэши без выполнения таких действий, как перемещение их из реестра и дешифрование. Программа не заботится ни о том, каковы алгоритмы шифрования, ни каковы ключи.

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

Метод, использующийся в программе pwdump2, был доработан для получения хэшей паролей не только с локальной, но и с удаленной машины в программах pwdump3/pwdump3e (автор Phil Staubs). На удаленный компьютер копируются исполняемый файл службы и файл DLL. После копирования файлов на удаленном компьютере создается и запускается новая служба, выполняющая те же действия, что и программа pwdump2 на локальном компьютере. Далее выполняется удаление службы и файлов, ранее скопированных. Передача информации об учетных записях пользователей производится через раздел реестра на удаленном компьютере, временно создаваемый и уничтожаемый после завершения копирования данных. В программе pwdump3e выполняется дополнительное шифрование передаваемых данных по алгоритму Diffie-Hellman для сохранения конфиденциальности при их возможном перехвате при передаче по сети. Использование данного метода также требует административных прав на той машине, информацию об учетных записях пользователей с которой хочется получить.

При выполнении импорта информации этим способом с помощью программ pwdump3/pwdump3e имена пользователей, содержащие нелатинские буквы, будут искажены. Для получения хэшей паролей с удаленного компьютера внедрением DLL рекомендуется воспользоваться LCP.

Если административные права на локальном компьютере отсутствуют, можно воспользоваться уязвимостью операционных систем Windows NT/2000/XP/2003, заключающейся в замене экранной заставки, запускаемой при отсутствии регистрации пользователя операционной системы в течение некоторого времени (по умолчанию интервал времени составляет 15 минут для Windows NT/2000, 10 минут - для Windows XP/2003). Для этого файл %SystemRoot%system32logon.scr заменяется на требуемый исполняемый файл (например, cmd.exe), который будет запущен операционной системой вместо экранной заставки с правами системы. Замена может быть выполнена способом, используемым при копировании файла SAM. Доступ к диску с NTFS с возможностью записи осуществим с помощью NTFSDOS Professional или NTFS for Windows 98. Далее выполняются действия по получению хэшей методом pwdump2 или pwdump3/pwdump3e.