Расширение привилегий
Перезагрузка с помощью альтернативной операционной системы
Для того чтобы перезагрузиться с использованием другой операционной системы, достаточно подготовить системную дискету с DOS. Если на жестком диске интересующего вас компьютера установлена файловая система NTFS, то на эту дискету необходимо поместить соответствующий драйвер NTFS, называемый NTFSDOS, от компании Systems Internals (http://www.sysinternals.com/). С помощью этого драйвера все разделы NTFS будут смонтированы в качестве логических дисков DOS, после чего не останется никаких препятствий для копирования файла SAM.
Извлечение резервной копии файла SАМ из каталога Repair
При каждом запуске утилиты NT Repair Disk Utility (rdisk) с параметром /s, который активизирует режим резервного копирования важной системной информации, создается сжатая версия базы данных SAM, которая помещается в каталог %systemroot%\repair под именем Sam._. После завершения копирования важных данных на аварийную дискету многие системные администраторы не утруждают себя задачей удаления этого файла.
Для того чтобы воспользоваться сжатым файлом Sam._, его нужно сначала распаковать, как показано в следующем примере. (Последняя версия утилиты L0phtcrack позволяет выполнить эту операцию автоматически после выбора команды import.)
С:\> expand sam._sam Microsoft (R) File Expansion Utility Version 2.50 Copyright (C) Microsoft Corp 1990-1994. All rights reserved. Expanding sam._ to sam. sam._: 4545 bytes expanded to 16384 bytes, 260% increase.
Извлечение хэш-кодов из данных SAM
При наличии привилегий администратора кэш-коды паролей можно легко получить непосредственно из системного реестра в формате, подобном формату файла /etc/passwd UNIX. Для этого можно воспользоваться утилитой pwdump, написанной Джереми Аллисоном (Jeremy Allison). Исходный код этой утилиты и ее откомпилированные версии для Windows можно найти в архивах Internet. Новые версии утилиты LOphtcrack также имеют подобное встроенное средство. Однако ни pwdump, ни LOphtcrack не способны преодолеть расширенное шифрование файла SAM с использованием ключа SYSKEY, появившееся после выпуска сервисного пакета Service Pack 2 (для получения более подробной информации читайте раздел "Контрмеры: Защита От Взлома Пароля" ниже в этой главе).
Более поздняя версия утилиты pwdump, написанная Тоддом Сабином (Todd Sabin) и названная pwdump2 (http://razor.bindview.com/tools/desc/pwdump2_readme.html), может обойти SYSKEY-защиту. Работа pwdump2 основана на внедрении библиотеки DLL (см. выше описание утилиты getadmin), посредством чего она записывает свой код в пространство другого процесса, обладающего более высоким уровнем привилегий. После этого внедренный код вызывает внутренние функции интерфейса API, с помощью которых утилита получает доступ к зашифрованным паролям, минуя необходимость их расшифровки.
В отличие от pwdump утилита pwdump2 должна запускаться в пространстве процессов взламываемой системы. Причем в данном случае по-прежнему требуется процесс с привилегиями администратора, а также библиотека samdump.DLL (которая распространяется вместе с pwdump2).
Привилегированный процесс, используемый утилитой pwdump2,– это процесс lsass.exe подсистемы защиты (Local Security Authority Subsystem – LSASS). Утилита внедряет свой код в адресное пространство и пользовательский контекст процесса lsass.exe. Однако перед запуском утилиты необходимо вручную получить идентификатор процесса (PID – Process ID).
Тодд Сабин написал обновленную версию утилиты pwdump2, после установки которой идентификатор РID процесса LSASS можно получить автоматически. Поэтому пользователям обновленной версии выполнять этот шаг вручную не требуется. Однако сейчас мы сосредоточимся на обсуждении основной концепции получения идентификаторов процессов, которую потребуется использовать в тех случаях, когда обновленная версия утилиты pwdump2 отсутствует.
Воспользуемся утилитой pulist из NTRK и, объединив ее с утилитой find, получим идентификатор процесса lsass.exe, как показано в следующем примере.
D:\> pulist | find "lsass" lsass.exe 50 NT AUTHORITYXSYSTEM
Теперь можно запустить утилиту pwdump2, передав ей в качестве параметра полученный идентификатор PID 50. По умолчанию результаты выводятся на экран (в приведенном выше примере они показаны в сокращенной форме), однако их легко перенаправить в файл. Помните, что pwdump2 должна выполняться локально на удаленной системе. В противном случае вы получите дамп собственных паролей! Обсуждение методов удаленного запуска программ содержится ниже в разделе "Удаленное Управление и потайные ходы" данной главы.
D:\> pwdump2 50 A. Nonymous:1039:e52cac67419a9a22 4a3bl08f3fa6cb6d:8846f7eaee8fbll7.. ACMEPDC1$:1000: 922bb2aaaObc07334d9al 60a08db3a33: d2ad2ce86a7d90f d62.. Administrator: 500:48b48ef 5635d97b6f 513f 7c84b50c317: 8a6a398a2d8c84f.. Guest:501:aOel50c75al7008eaad3b435b51404ee: 823893adfad2cda6ela414f.. IUSR_ACMEPDC1:1001:cabf272ad9e04b24af3 f5fe8cOf 05078:e6f 37a4 69ca3f8.. IWAM_ACMEPDC1: 1038:3d5c22dObal7f25c2eb 8a6e701182677:d96bf5d98ec992..
Из данного примера видно, что выводятся такие поля, как имя пользователя, относительный идентификатор RID (см. главу 3), хэш-код LanMan и кэш-код NTI последний выведен только частично). Все поля отделяются друг от друга двоеточием. Направив вывод в файл, можно получить готовые исходные данные для многих средств взлома паролей системы NT.
Самая последняя версия утилиты pwdump2 позволяет также извлекать хэш-коды из базы данных активного каталога.
Перехват данных о пользовательских именах и паролях, передаваемых по сети
Одной из сильных сторон утилиты LOphtcrack является возможность извлекать хэш-коды паролей прямо из SMB-пакетов, передаваемых по сети. Этот подход уже рассматривался в одном из предыдущих разделов, посвященных подбору паролей.
Поскольку утилита LOphtcrack способна выполнить большую часть из описанных выше задач, давайте перейдем к обсуждению подробностей того, как это осуществить.