Взлом базы данных 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 символов, при условии, что пароль состоит лишь
из букв и цифр.
Текущее состояние процесса подбора пароля можно в
любой момент сохранить в файле с расширением .1с. Поэтому работа утилиты
L0phtcrack может быть безболезненно прекращена, а затем возобновлена
с того же места с помощью команды File>Open Password File.
Утилита L0phtcrack с графическим пользовательским интерфейсом является
лучшим средством взлома файла паролей системы NT из всех имеющихся
на рынке как по скорости работы, так и по простоте использования.
Однако имеется и один недостаток: наличие графического интерфейса
не позволяет использовать эту утилиту в сценариях и командных файлах.
Для применения в командной строке на Web-узле http://www.atstake.com
можно найти лишь устаревшую версию 1.5 (lc_cli.exe), которая распространяется
вместе с исходным кодом. Так что, если говорить об утилитах взлома
паролей, использующих интерфейс командной строки, лучше обратить внимание
на продукты других разработчиков.
Рис. 5.6. Утилита L0phtcrack за работой. Менее надежные пароли LanMan
взломать гораздо легче, что делает ненужным подбор хорошо защищенных
паролей NT
John-потрошитель
John — это программа взлома паролей с использованием
словаря. Ее можно получить по адресу http://www.false.com. Первоначально
эта утилита командной строки была создана для взлома файлов паролей
системы UNIX, а теперь ее можно использовать для подбора хэш-кодов
LanMan системы Windows NT. Помимо того, что John совместима с несколькими
платформами и позволяет применять несколько разных алгоритмов шифрования,
эта утилита отличается также высокой скоростью работы и тем, что распространяется
бесплатно. С другой стороны, ее широкие возможности и, соответственно,
большой набор параметров командной строки, делают эту утилиту более
сложной в освоении, чем L0phtcrack. Кроме того, поскольку утилита
John может взламывать лишь пароли LanMan, то полученные результаты
необходимо проверять на соответствие прописных и строчных букв (пароли
LanMan всегда переводятся в верхний регистр, тогда как в паролях NT
используются как прописные, так и строчные буквы).
Crack 5 с расширением для NT
Утилита crack, написанная Алеком Маффетом (Alec Muffet),
изначально предназначалась для взлома файлов паролей системы UNIX.
Однако со временем для нее было создано расширение, которое позволило
использовать эту утилиту и для взлома паролей NT (http://www.sun.rhbnc.ac.uk/~phacl07/c50a-nt-0.20.tgz).
Самое большое преимущество использования утилиты crack состоит в очень
широком разнообразии проверяемых ею вариаций возможных паролей (включая
более 200 вариантов, основанных на имени пользователя). Однако все
преимущества утилиты crack будут сведены на нет, если у вас отсутствует
опыт работы в системе UNIX, необходимый для ее установки и запуска.
Контрмеры: защита от взлома пароля
Строгие правила выбора пароля
Никакие технические средства не смогут обеспечить
гарантированную защиту от взлома пароля. Они необходимы для создания
эффективной защиты, но одних лишь технических средств недостаточно.
Самым эффективным и вместе с тем трудно реализуемым средством был
и остается правильный выбор пароля. Пользователи, выбирающие легко
угадываемые пароли или записывающие их на обратной стороне клавиатуры,
по-видимому, еще долго будут оставаться источником головной боли администраторов.
Надеемся, что приведенное ниже описание некоторых скрытых недостатков,
имеющихся в алгоритмах защиты паролей NT, сможет помочь вам в разъяснении
пользователям необходимости строгого соблюдения ваших требований.
Как мы уже неоднократно упоминали, в системе NT применяется два разных
алгоритма шифрования пользовательских паролей: совместимый с LanManager
(LMH — LanManager Hash) и созданный специально для NT (NTH — NT Hash)
. Оба представления зашифрованного с помощью этих алгоритмов пароля
хранятся в базе данных SAM. Как уже упоминалось, значение LMH вычисляется
с помощью алгоритма, имеющего внутренние недостатки (в данном случае
не стоит ругать Microsoft — алгоритм LanManager изначально был разработан
компанией IBM).
Самым большим недостатком алгоритма LMH является разделение пароля
на две части, каждая из которых состоит из семи символов. Другими
словами, пароль, имеющий длину 8 символов разделяется на два пароля,
первый из которых состоит из 7 символов, а второй — из 1 символа.
Подобные утилите L0phtcrack средства используют этот недостаток, проверяя
одновременно обе половины пароля именно так, как если бы они были
независимыми друг от друга паролями. Рассмотрим, например, 12-символьный
пароль, который полностью соответствует требованиям библиотеки Passfilt
— l23456Qwerty. Во-первых, когда пароль шифруется по алгоритму LM,
его символы преобразуются в верхний регистр— 123456QWERTY. Затем к
паролю добавляются нулевые символы (т.е. символы с кодом 0, чтобы
получить строку, состоящую из 14 символов): 123456QWERTY_. Перед шифрованием
эта строка делится на две части — 123456Q и WERTY_. После этого каждая
строка шифруется независимо от другой, а полученные результаты объединяются.
Зашифрованное значение ДЛЯ 123456Q — 6BF11E04AFAB197F, а ДЛЯ WERTY_—
1E9FFDCC75-575В15. Таким образом, полученный в результате хэш-код
будет иметь следующее значение: 6BF11E04AFAB197F1E9FFDCC75575B15.
Поскольку первая половина пароля, представленного хэш-кодом, содержит
и буквы, и цифры, то на ее взлом путем перебора всех возможных вариантов
с помощью утилиты L0phtcrack уйдут сутки или около того, в зависимости
от вычислительной мощности используемого компьютера. Однако вторая
половина пароля содержит только символы, поэтому на ее взлом понадобится
всего лишь 60 секунд при использовании компьютера с процессором Pentium.
На рис. 5.7 показано, как за считанные секунды с использованием утилиты
L0phtcrack была взломана вторая половина пароля пользователя waldo
(полный пароль —строка 123456qwerty).
Каждая взломанная половина пароля отображается в соответствующей строке
окна утилиты LOphtcrack. В рассматриваемом примере была идентифицирована
вторая половина пароля пользователя waldo. Теперь можно сделать некоторые
предположения о том, какой может быть первая половина пароля. Строка
WERTY говорит о том, что в качестве пароля пользователь выбрал символы
из верхнего ряда клавиш клавиатуры. Следовательно, имеет смысл проверить
такие пароли, как QWERTYQWERTY, POIUYTQWERTY, ASDFGHQWERTY, YTREWQQWERTY
И, наконец, 123456QWERTY. Эти варианты можно добавить в словарь, подготовленный
для утилиты LOphtcrack, а затем приступить к очередному штурму. Менее
чем через 5 секунд в окне LOphtcrack появляются и пароль LanMan, и
пароль NT, как показано на рис. 5.8.
Рис. 5.7. Утилита L0phtcrack взломала половину пароля пользователя
waldo менее чем за минуту на компьютере с процессором Pentium
Рис. 5.8. Утилита L0phtcrack с помощью обновленного словаря справилась
с подбором правильного пароля за считанные секунды
Данный пример наглядно демонстрирует, как относительно
просто угадать казалось бы довольно сложный пароль LMH, зная его вторую
половину. Таким образом, мы получаем парадокс: при данном подходе
12- и 13-символьные пароли могут оказаться менее надежными, чем 7-символьные,
так как взломщик, зная вторую половину длинного пароля, может догадаться
о том, из каких символов состоит первая половина, как это было показано
в рассмотренном примере. Пароль, состоящий из восьми символов, вряд
ли даст взломщику много информации, однако он, пусть только теоретически,
не столь надежен, как 7-символьный пароль.
Для снижения вероятности успешного взлома выбирайте пароли в точности
длиной 7 или 14 символов. (Не забывайте, что длинные 14-символьные
пароли пользователи, скорее всего, будут записывать и держать эти
записи под рукой. Поэтому предпочтительнее использовать 7-символьные
пароли.)
Если же вы хотите поставить в тупик взломщика, вооруженного утилитой
L0phtcrack, используйте в каждой половине пароля хотя бы один управляющий
символ ASCII. Такие символы (например, символы с кодом 255 или 129)
не отображаются на экране утилитой L0phtcrack. Конечно, ежедневный
ввод таких паролей, требующих дополнительных нажатий клавиш для ввода
символа по его коду (<Аlt>+код символа на цифровой вспомогательной
клавиатуре в режиме <NumLock>), связан с некоторым неудобством
и, по-видимому, будет использоваться только профессиональными пользователями,
имеющими широкие полномочия по администрированию рабочих групп и учетных
записей обычных пользователей. Что касается администраторов, то для
них использование в паролях как можно большего количества неотображаемых
символов должно стать обыденной практикой.
Наконец, не забывайте о необходимости установить с помощью библиотеки
Passfilt минимальную длину пароля, как это описано в приведенном выше
разделе "Контрмеры: Защита От Подбора Пароля".
Защита базы данных SAM
Ограничение доступа к файлу SAM — это также один
из важнейших методов зашиты. Физическое ограничение доступа к серверу
является единственным методом воспрепятствовать злоумышленнику скопировать
файл SAM, загрузившись с дискеты, или скопировать резервную копию
этого файла из папки Repair. Надеемся, что о том, чтобы контролировать
все случаи регистрации на сервере под именем Administrator, напоминать
не нужно.
Шифрование SYSKEY
Расширенное SYSKEY-шифрование данных SAM было разработано
вскоре после выхода сервисного пакета Service Pack 2. Такой алгоритм
позволяет установить шифрование паролей с помощью 128-битового ключа
(по умолчанию используется 40-битовый ключ). Для включения режима
шифрования необходимо выбрать команду Starts Run и ввести в поле ввода
появившегося диалогового окна Run команду syskey. Режим шифрования
SYSKEY можно настроить с использованием нескольких основных параметров,
как показано на следующих двух рисунках.
При включении режима SYSKEY ключ шифрования паролей,
в свою очередь, кодируется с помощью системного ключа, который может
храниться как локально (защищенный паролем), так и на гибком диске.
Если вы чрезвычайно обеспокоены обеспечением безопасности, выберите
второй вариант, но учтите при этом, что в большой сети это потребует
дополнительных затрат на сохранение всех ключей на гибких дисках.
Кроме того, как мы увидим несколько позже, существуют средства, позволяющие
обойти и режим шифрования SYSKEY. Однако даже небольшой барьер, оказавшийся
на пути взломщика, повышает безопасность сети. По крайней мере злоумышленнику
придется хорошо потрудиться, чтобы взломать пароли.
Группа исследователей RAZOR обнаружила изъян в реализации
алгоритма шифрования SYSKEY, описание которого можно найти по адресу
http://razor.-bindvi6w.com/publish/advisories/adv_WinNT_syskey.htinl.
Если вы решили воспользоваться этим алгоритмом, то установите также
модуль обновления, который можно получить по адресу http://wvw.microsoft.com/teohnet/
security/bulletin/ms99-056.asp.
Если взломщики имеют безнадзорный физический доступ
к компьютеру с системой NT/2000, то они без проблем могут загрузиться
с использованием другой операционной системы и аннулировать пароль
учетной записи администратора, удалив файл SAM, либо добавить пароль
для любой имеющейся учетной записи. Этот прием позволяет полностью
обойти алгоритм шифрования SYSKEY. Лишь при использовании режима защиты
с использованием пароля или при хранении системного ключа на гибком
диске можно несколько повысить уровень защиты. Более подробная информация
по этому вопросу содержится в разделе главы 6, который посвящен утилите
chntpw.
Аудит доступа к базе данных SAM
Зачастую бывает довольно трудно выявить факт извлечения
информации о паролях с вашего узла NT. Одной из возможностей, призванных
помочь в решении этой проблемы, является аудит системы NT, обеспечивающий
наблюдение за доступом к параметрам реестра, связанных с SAM. Однако
на практике это средство мало что может сделать, поскольку к этим
параметрам имеют доступ очень многие служебные процессы (например,
диспетчер пользователей). Но несмотря на то, что само по себе решение
не очень хорошее, некоторые технические аспекты настройки контроля
доступа к SAM заслуживают внимания.
Прежде всего, убедитесь, что в диспетчере пользователей установлен
флажок Success для событий File and Object Access (Policies^Audit).
Затем нужно включить режим контроля доступа к определенным параметрам
системного реестра. К сожалению, параметры, которые необходимо контролировать,
недоступны ни простому пользователю, ни даже администратору. Для обхода
данного ограничения нужно открыть окно редактора системного реестра,
воспользовавшись контекстом учетной записи Local System.
Запустите агигст Services панели управления, а затем в появившемся
диалоговом окне выберите службу Schedule (на рабочей станции — Task
Scheduler). Щелкните на кнопке Startup и в открывшемся окне свойств
установите режим System Account, а также Флажок Allow Service to Interact
with Desktop. Затем введите в командной строке следующую ком;нпу soon
regedt32 /I
Утилита soon, входящая в состав NTRK, предназначена для взаимодействия
с командой AT и запуска той или иной программы в текущий момент. Параметр
, : npri писывает запускаемой программе (в данном случае редактору
системного peecn.w), выполняться в интерактивном режиме.
Сразу же после выполнения команды будет открыто окно редактора системного
реестра. Однако на этот раз параметры SAM и Security станут доступными
обычному пользователю. Будьте очень осторожны при работе с этими параметрами
— даже минимальные изменения могут нарушить нормальное функционирование
операционной системы вашего компьютера.' Найдите параметр HKLM/Security/SAM/Domains/Account/Users
и щелкните на нем, а затем выберите из меню команду Security ^Auditing.
Установите параметр Audit Permissions on Existing Subkeys, а затем
щелкните на кнопке Add и добавьте учетную запись SYSTEM. Наконец,
для события Query Value установите режим Success, a затем щелкните
на кнопке ОК. Выйдите из редактора системного реестра и убедитесь
в том, что служба Schedule отключена. Теперь можно контролировать
доступ к параметрам реестра, осуществляемый, например, с помощью утилиты
pwdump.
Вскоре журнал безопасности будет заполнен сообщениями с идентификаторами
560 и 562, которые связаны с обращением к параметрам SAM. При аудите
сложнее всего выбрать среди многочисленных записей те. которые связаны
с получением информации о диспетчере SAM с помощью различных утилит
семейства pwdump, поскольку с точки зрения системы между такими событиями
и событиями, связанными с легитимным доступом к параметрам SAM, нет
никакой разницы. Кроме того, журнал, в который будут заносится все
соответствующие операции, очень быстро достигнет чудовищных размеров,
а регистрация событий повлечет за собой дополнительный расход ресурсов.
Более эффективный метод решения данной проблемы, по-видимому, состоит
в отслеживании вызовов утилиты pwdump на уровне интерфейса API. Однако
пока данная задача не реализована на практике, контроль доступа к
параметрам SAM остается хоть и низкоэффективным, но все же единственным
средством.