У вас может возникнуть вопрос: "Стоит ли читать, что может произойти, когда кто-то получит права администратора на моем компьютере? И так все ясно!" Не спешите с выводами — отформатировать жесткий диск и переустановить систему с установочных дисков вы всегда успеете. Гораздо важнее попытаться установить, какие ресурсы были использованы взломщиком и как далеко ему удалось продвинуться. Взломщик мог назначить привилегии администратора локальной системы какому-нибудь пользователю, не имеющему практически никаких прав для доступа к другим компьютерам сети. Поэтому ему, скорее всего, понадобится установить в сети дополнительные средства, с помощью которых он мог бы расширить свои полномочия. Выявить взломщика на этом этапе и остановить его проникновение не только возможно, но и жизненно необходимо. В данном разделе вы найдете подробное описание некоторых основных средств и методов, используемых в этой чрезвычайно важном "финальном поединке" взломщика и системного администратора.
Взлом базы данных SAM
Получив привилегии администратора, взломщик, скорее всего, сразу же направится к диспетчеру SAM системы NT (SAM — Security Accounts Manager). В базе данных SAM содержатся имена и зашифрованные пароли всех пользователей локального узла или домена, если взламываемая система является контроллером. Поэтому данные SAM — наиболее вожделенная цель для нанесения завершающего удара, подобная файлу /etc/passwd из мира UNIX. Даже если база данных SAM получена с автономной станции NT, существует шанс получения с ее помощью доступа к контроллеру домена. Таким образом, взлом диспетчера SAM — это один из наиболее мощных методов расширения привилегий и использования доверительных отношений.
Стоп, скажет внимательный читатель, а как же зашифрованные пароли? Неужели шифрование не сможет свести на нет все попытки хакеров? Теоретически — да, однако на практике дела обстоят не совсем так. К сожалению, для обеспечения обратной совместимости компания Microsoft значительно ослабила безопасность SAM, используя алгоритм хэширования (одностороннего шифрования), оставшийся в наследство NT от сетей Lan Manager. Хотя поддерживается и новый алгоритм NT, операционная система вынуждена хранить вместе с новым хэш-кодом и хэш-код, вычисляемый по старому алгоритму LanManager, чтобы обеспечить совместимость с клиентами Windows 9х и Windows for Workgroups. Более простой алгоритм хэширования LanManager уже давно был изучен, поэтому в большинстве случаев пароли сервера NT можно получить достаточно просто. Все зависит лишь от их длины и набора символов. Например, lOplncrack, одна из самых популярных утилит взлома файлов SAM, позволяет взломать любой буквенно-цифровой пароль за 24 часа на компьютере с процессором Pentium II 450 МГц (версия 2.5; подробнее см. http://www.10pht.com/10phtcrack). Техническое обоснование слабости подхода, применяемого при хэшировании паролей в NT, приведено по адресу http://www. l0pht.com/l0phtcrack/rant.html, а также содержится ниже в разделе "Строгие Правила Выбора Пароля" этой главы.
Утилиты взлома паролей, несмотря на кажущуюся сложность решаемой ими задачи, на самом деле не что иное, как быстрые и оптимизированные инструменты автоматизированного подбора паролей. Сначала по заданным входным данным (список слов из словаря или случайным образом генерируемые строки) и с использованием алгоритма шифрования они получают результат, а затем сравнивают его с хэш-кодом пользовательского пароля. Если оба значения совпадают, значит, пароль угадан, т.е. "взломан". Данный процесс обычно выполняется в автономном режиме с использованием перехваченного файла паролей, поэтому блокировки учетной записи в таких случаях вообще не возникает, а процесс подбора пароля может продолжаться сколь угодно долго. Как правило обработка зашифрованных данных оказывается весьма ресурсоемким процессом. Однако, как мы уже упоминали, знание тех или иных недостатков взламываемой системы, к каким, например, относится хорошо изученный алгоритм хэширования LanMan, позволяет значительно ускорить этот процесс. Таким образом, получение пароля — это лишь вопрос производительности процессора и размера словаря (некоторые примеры словарей и списков слов можно найти по адресу http://coast.cs.purdue.edu).
He хотите ли воспользоваться этими инструментами, чтобы проверить, насколько хороши выбранные вашими пользователями пароли? Что ж, тогда приступим.
Получение базы данных SAM
При осуществлении любых попыток взлома первый этап состоит в получении файла паролей, который в случае NT называется файлом данных SAM.
Система NT хранит данные SAM в файле с именем (ни за что не догадаетесь!) SAM, который содержится в каталоге %systemroot%\system32\config (во время работы операционной системы доступ к этому файлу заблокирован). Файл SAM является одним из пяти основных ульев системного реестра NT и представляет собой физическое место хранения данных из группы параметров системного реестра HKEY_LOCAL_MACHINE\SAM. Эта группа параметров недоступна для изменения, даже после регистрации в качестве администратора. (Однако, используя некоторые хитрости и службу Schedule, это все же можно осуществить. Для получения об этом более подробной информации читайте раздел "Аудит Доступа К Базе Данных SAM?" ниже в этой главе).
Существует четыре способа получения данных SAM: перезагрузка компьютера с помощью дискеты с альтернативной операционной системой и последующее копирование файла SAM на съемный носитель; копирование резервной копии файла SAM, созданной утилитой восстановления системы NT; извлечение хэшированных паролей непосредственно из SAM. Четвертый метод основывается на перехвате данных об именах пользователей и паролях, передаваемых по сети (такой подход уже рассматривался в разделе "Перехват паролей, передаваемых по сети" выше в этой главе).
Перезагрузка с помощью альтернативной операционной системы
Для того чтобы перезагрузиться с использованием другой операционной системы, достаточно подготовить системную дискету с 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, после установки которой идентификатор РЮ процесса 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 и кэш-код NT I последний выведен только частично). Все поля отделяются друг от друга двоеточием. Направив вывод в файл, можно получить готовые исходные данные для многих средств взлома паролей системы NT.
Самая последняя версия утилиты pwdump2 позволяет также извлекать хэш-коды из базы данных активного каталога.
Перехват данных о пользовательских именах и паролях, передаваемых по сети
Одной из сильных сторон утилиты LOphtcrack является возможность извлекать \эш-коды паролей прямо из SMB-пакетов, передаваемых по сети. Этот подход уже рассматривался в одном из предыдущих разделов, посвященных подбору паролей.
Поскольку утилита LOphtcrack способна выполнить большую часть из описанных выше задач, давайте перейдем к обсуждению подробностей того, как это осуществить.
Взлом паролей NT
В данном разделе вы познакомитесь с тремя утилитами, предназначенными для взлома паролей системы NT. Хотя наиболее известной является утилита L0phtcrack, здесь мы рассмотрим и некоторые другие средства.
L0phtcrack
Версию утилиты L0phtcrack с графическим интерфейсом, распространяемую исследовательской лабораторией компании ©stake по цене S100, можно найти по адресу http://www.atstake.com. Для сохранения душевного покоя системного администратора это совсем недорого. Во время написания этой книги была выпущена бета-версия 3 утилиты L0phtcrack — первое существенное обновление программы за последние два года.
Как уже упоминалось, утилита L0phtcrack может импортировать данные SAM из нескольких источников: из самого файла SAM, из его резервной копии SAM._, с удаленного компьютера (используя привилегии администратора и встроенную функцию, работающую по принципу утилиты pwdump), а также непосредственно из потока данных, передаваемых по сети. Ниже показано простое диалоговое окно утилиты, используемой для получения хэш-кодов паролей. Как видно из рисунка, требуется просто ввести IP-адрес взламываемой системы.
Еще раз обращаем ваше внимание на то, что встроенная утилита последней (на момент написания данной книги) версии L0phtcrack не обладает возможностью взлома расширенного SYSKEY-шифрования базы данных SAM (см. ниже раздел "Шифрование Syskey"). Поэтому, если на взламываемой системе используется SYSKEY-шифрование, необходимо пользоваться описанной выше утилитой pwd'jzr\p2.
Затем с помощью команды File>Open Wordlist File нужно указать используемый файл словаря (обширный словарь, содержащий часто употребляемые в качестве пароля слова английского языка, распространяется вместе с утилитой). И наконец, с помощью команды Tools>Options нужно установить некоторые параметры. Для взлома пароля путем перебора необходимо установить флажок Enabled, находящийся в группе параметров Brute Force Attack диалогового окна Tools Options. Затем нужно выбрать предполагаемый набор символов, из которого будут генерироваться пароли (чем больше набор, тем дольше придется перебирать все возможные комбинации). Утилита L0phtcrack сначала попытается подобрать пароль с помощью словаря и лишь после этого перейдет к перебору всех возможных вариантов. Прерванный сеанс подбора пароля можно продолжить позже с того же места, в котором произошла остановка. Поэтому в общем случае вопрос продолжительности работы не является критичным. Поддерживается также компромиссный режим Dictionary/Brute Hybrid, при использовании которого метод подбора пароля из словаря объединяется с перебором всех возможных вариантов. Действительно, учитывая, что многие пользователи выбирают пароли вида password!23, не утруждая себя задачей запоминания сложного пароля, имеет смысл попробовать применить в качестве пароля слова, содержащиеся в словаре, с добавлением к ним заданного количества символов. Пример выбора параметров в окне Tools Options показан на следующем рисунке.
Теперь просто выберите команду Tools>Run Crack, и утилита L0phtcrack возьмется за дело. В файле SAM, полученном из большого домена NT, практически всегда удается обнаружить нулевой пароль или слова из словаря (рис. 5.6). Кроме того, из данного рисунка видно, с какой легкостью угадываются пароли LanMan, что делает более надежную защиту с помощью алгоритма хэширования NT неэффективной. Даже в тех случаях, когда некоторые пароли остаются неразгаданными (как, например, пароль пользователя Malta), алгоритм LanMan позволяет узнать два последних символа таких паролей. Этого вполне достаточно, чтобы в течение суток подобрать остальные 7 символов, при условии, что пароль состоит лишь из букв и цифр.





