Защита паролей Windows-платформ
Сетевая аутентификация пользователей
Извлечение хэш-функций из данных SAM
Использование сетевых снифферов
Как ни странно, но пользователи, а нередко и системные администраторы с трудом представляют себе, насколько просто можно взломать их компьютеры или проникнуть в локальную сеть. Причем в подавляющем большинстве случаев виновниками того, что компьютеры оказываются взломанными, являются сами пользователи. Впрочем, давайте прежде всего определимся с терминологией и в дальнейшем под словом «взлом» будем понимать получение учетной записи пользователя и его пароля. В принципе, пароль это тот самый «золотой ключик», который позволяет открыть любую дверцу.
ряд ли кого-то из пользователей обрадует осознание того факта, что его компьютер, на котором может содержаться частная переписка либо быть установлена «аська» для общения с друзьями на личные темы, находится под пристальным контролем со стороны другого пользователя или системного администратора. И пристальный контроль в данном случае заключается в том, что все то, что отображается на мониторе вашего компьютера, может дублироваться на монитор того, кто за вами наблюдает. А ведь все, что для этого требуется, это знание вашего сетевого пароля для входа в систему. И даже если ваш компьютер для обеспечения безопасности отключен от локальной сети и защищен паролем на вход в систему, это вовсе не означает, что в ваше отсутствие пароль кто-нибудь не вскроет и не получит доступ к конфиденциальной информации, хранящейся на вашем ПК.
Следует иметь в виду, что абсолютной защиты на сегодня вообще не существует. И если уж вас «заказали», то взлом вашего компьютера это лишь вопрос времени. Единственное, что в данном случае можно сделать, значительно усложнить задачу злоумышленнику, будь то злостный хакер или послушный системный администратор, который, строго выполняя директивы начальства, пытается поставить вас на контроль.
В этой статье мы рассмотрим основные приемы, которые используются для взлома компьютеров и для получения сетевых (доменных) паролей и локальных паролей пользователей. Кроме того, мы расскажем о том, как именно можно значительно усложнить задачу злоумышленнику и заставить его потерять всякий интерес к взлому вашего компьютера. Однако для того, чтобы понять, как взламываются пароли, вам сначала придется усвоить, каким образом происходит аутентификация пользователей, где и в каком виде хранятся их пароли и как вообще их можно подобрать. В дальнейшем мы будем основываться на операционной системе Windows 2000/2003/XP, хотя вскрытие паролей таких операционных систем, как Windows 95/98/Mе, еще проще.
Хэш-функции пароля
сли речь идет о локальном пароле пользователя для входа в систему (то есть без подключения к локальной сети), то такой пароль в зашифрованном виде хранится на самом компьютере. Зашифрованный пароль именуется хэшем (hash) или хэш-функцией пароля. Алгоритм хэширования это алгоритм одностороннего шифрования, когда исходному паролю независимо от его длины ставится в соответствие числовое значение фиксированной длины (16 байт), полученное в результате обработки пароля по специальному алгоритму шифрования. Впрочем, в данном случае нас не интересуют алгоритмы шифрования как таковые отметим лишь, что зашифрованный таким образом пароль невозможно восстановить. Сам по себе процесс шифрования является односторонним, и, даже зная хэш-функцию пароля, вычислить сам пароль принципиально невозможно.
И здесь возникает закономерный вопрос: если знание хэш-функции не позволяет выяснить пароль пользователя, то как же в таком случае происходит процесс аутентификации? Дело в том, что при аутентификации сравниваются не сами пароли, а их хэш-функции. В процессе аутентификации пользователь вводит пароль в привычном для него виде, а операционная система рассчитывает его хэш-функцию и сравнивает с хэшем, хранящимся в компьютере. В случае их совпадения аутентификация считается успешной. Процесс взлома пароля происходит примерно аналогично. Для этого нужно только знать хэш-функцию пароля, хранимую в компьютере, и уметь вычислять хэш по паролю. Тогда, перебирая различные варианты паролей и сравнивая расчетные хэши с тем, что хранится в компьютере, можно подобрать правильный пароль.
Казалось бы, такой перебор может затянуться на бесконечно долгое время вариантов паролей существует бесконечное множество. Однако не стоит торопиться с выводами. Во-первых, количество возможных паролей все-таки конечно, а во-вторых, современные компьютеры позволяют перебирать миллионы паролей в секунду. Кроме того, имеются различные методы атак на пароли (об этом мы расскажем чуть позже), которые в большинстве случаев приводят к положительным результатам в считаные минуты. И прежде чем описывать дальнейшие (практические) шаги по взлому паролей, немного углубимся в смысл самого понятия «хэш» и выясним, сколько вариантов паролей реально существует.
В операционных системах Windows NT/2000/2003/XP существует два типа хэш-функций паролей: LM-хэш (LanMan-хэш) и NT-хэш. LM-хэш достался нам в наследство от сетей Lan Manager, и потому, хотя все современные операционные системы поддерживают новый тип хэш-шифрования (NT-хэш), операционная система вынуждена хранить вместе с новым хэш-кодом (NT-хэш) и тот хэш-код, который вычисляется по старому алгоритму Lan Manager, чтобы обеспечить совместимость с клиентами Windows 9x. Для входа в систему можно использовать любой их этих двух типов хэшей, а поскольку LM-хэш имеет ряд уязвимых мест и менее надежен, чем NT-хэш, то атаки проводятся, как правило, на него.
Самым большим недостатком алгоритма получения LM-хэша является разделение пароля на две части, каждая из которых состоит из 7 символов. Если вводимый пользователем пароль менее 14 символов, то при преобразовании к паролю добавляются нулевые символы, то есть символы с кодом 0, чтобы получить строку, состоящую из 14 символов. Если же пароль пользователя превышает 14 символов, то LM-хэш соответствует пустому паролю. Каждая из 7-символьных половин пароля шифруется независимо от другой по алгоритму DES (бывший федеральный стандарт США), причем поскольку сам процесс шифрования каждой из 7-символьных половин пароля независим, то и подбор этих половин можно производить независимо, что значительно упрощает и ускоряет процесс вскрытия пароля. Другой серьезный недостаток LM-хэша связан с тем, что в процессе шифрования все буквенные символы пароля переводятся в верхний регистр. А поскольку LM-хэш содержит информацию о пароле без учета регистра, то LM-хэши для паролей ALLADIN, alladin, Alladin и aLLadin будут совершенно одинаковыми. Это существенно ограничивает количество возможных комбинаций пароля и, как следствие, ускоряет процесс вскрытия.
Как мы уже отмечали, размер самих хэш-функций (и LM, и NT), независимо от длины вводимого пароля, составляет 16 байт. Если длина пароля менее 14 символов, то для каждого пароля имеется и LM-, и NT-хэш. Поэтому NT-хэш лишен недостатков, присущих LM-хэшу. При NT-хэшировании используется алгоритм шифрования MD4. Кроме того, NT-хэш является регистрозависимым, то есть NT-хэши для паролей ALLADIN и alladin будут совершенно разными. Следовательно, подобрать правильный пароль к известному NT-хэшу значительно сложнее, чем к LM-хэшу. И если известен и LM-, и NT-хэш, то сначала осуществляется подбор пароля по LM-хэшу, а после нахождения LM-пароля (все буквы верхнего регистра) используется NT-хэш для определения NT-пароля с учетом регистра. Правда, в данном случае есть одна тонкость, так как не всегда для пароля существует LM-хэш. Для этого, как минимум, нужно, чтобы длина пароля была меньше или равной 14 символам. Но даже тогда, когда длина пароля меньше 14 символов, LM-хэш можно удалить из базы. О том, как это сделать, мы еще расскажем, а пока приведем практические примеры LM- и NT-хэшей различных паролей.
Рассмотрим для начала 7-символьный пароль alladin, которому соответствует 16-байтный LM-хэш a01fad819c6d001aaad3b435b51404ee, записанный в шестнадцатеричной системе исчисления. Далее рассмотрим 14-символьный пароль alladinalladin, для которого LM-хэш будет таким: a01fad819c6d001aa01fad819c6d001a. Обратите внимание, что первая половина (8 байт: a01fad819c6d001a) этого хэша полностью совпадает со второй половиной. Кроме того, первая половина данного кэша совпадает и с первой половиной LM-хэша пароля alladin. Такое совпадение отнюдь не случайно, если вспомнить, что каждые 7 символов пароля кодируются независимо и определяют 8 байт итогового LM-хэша.
Интересно также отметить, что вторая половина LM-хэша пароля (aad3b435b51404ee) должна соответствовать символам с кодом 0, поскольку в том случае, если пароль меньше 14 символов, к нему добавляются пустые символы. То есть ad3b435b51404ee это шифрование 7 пустых символов. Поэтому можно предположить, что для любого другого 7-символьного пароля вторая половина LM-хэша окажется точно такой же. Действительно, для пароля tornado хэш LM равен 1e1e25e2f871d8dfaad3b435b51404ee, и, как нетрудно заметить, вторая половина этого хэша точно такая же, как и для пароля alladin. Для пароля ALLADIN значение LM-хэша точно такое же, как и для пароля alladin. Учитывая, что при LM-кодировании все буквы переводятся в верхний регистр, слово ALLADIN называют LM-паролем.
Если же рассмотреть NT-хэши для различных вариантов паролей (alladin, alladinalladin, tornado), то невозможно обнаружить никакой закономерности (табл. 1). Кроме того, как уже отмечалось, NT-хэш является регистрозависимым, а сам NT-пароль соответствует истинному паролю.
Таблица 1. Пароли и соответствующие им хэш-функции
Количество возможных паролей
авайте попробуем сосчитать, сколько вообще возможно различных комбинаций паролей. В операционных системах Windows 2000, 2003 и XP длина пароля может достигать 127 символов. При этом в качестве парольного символа можно использовать любой из 256 кодов ASCII. Несложно рассчитать, что в этом случае при длине пароля n-символов количество возможных комбинаций будет равно 256n (табл. 2). Общее количество возможных паролей при этом составит 2561 + 2562 + ... + 256127 7,05·10305.
Таблица 2
Забегая вперед, отметим, что современные компьютеры способны подбирать пароли со скоростью порядка 1,9·106 единиц в секунду. Нетрудно рассчитать, что для перебора всех паролей потребовалось бы порядка 10289 тысячелетий! Для справки укажем, что возраст планеты Земля оценивается всего-навсего в 4,5 млрд. лет, что пренебрежимо мало в сравнении с указанным временем. Практически это означает, что взломать пароль методом перебора просто невозможно!
Однако не стоит торопиться с выводами. Мы уже говорили, что для аутентификации используются не сами пароли, а их хэш-функции. Длина хэш-функции составляет 16 байт или 128 бит. Соответственно и количество возможных вариантов хэш-функций равно 2128 3,4·1038. Фактически это означает, что одна и та же хэш-функция может соответствовать огромному количеству различных паролей и что для успешной аутентификации можно использовать любой из них. Поэтому более корректно считать, что количество возможных вариантов паролей составляет всего 3,4·1038. Такое количество возможных комбинаций паролей можно получить, используя не 127, а всего 16 символов. Поэтому на деле нет никакого смысла задавать пароль длиннее 16 символов. Для перебора всех возможных 3,4·1038 комбинаций потребовалось бы аж 5,8·1015 млрд. лет, что сводит на нет все шансы на успех. Впрочем, и в данном случае не будем спешить с выводами.
Как мы уже отмечали, основную угрозу представляют не NT-, а LM-хэши. Количество доступных символов в данном случае уже не 256, а всего 197, поскольку необходимо учесть то, что все буквенные символы в пароле приводятся к верхнему регистру и что 26 символов строчных букв латинского алфавита и 33 символа строчных букв русского алфавита надо исключить из 256 вариантов ASCII-символов. Поэтому при длине пароля в 14 символов количество возможных вариантов составляет всего 1,33·1032. Однако и эта цифра явно завышена.
Вспомним, что при LM-кодировании пароль разбивается на две 7-символьные части, каждая из которых кодируется независимо. Поэтому в действительности количество возможных комбинаций определяется всего 7 символами и составляет 1977 11,5·106. При скорости перебора 1,9·106 паролей в секунду для перебора всех возможных комбинаций потребуется 6·109 с, или 197 лет. Конечно, и эта цифра внушает уважение и заставляет усомниться в том, что пароль в принципе можно расшифровать. Но здесь есть одно «но» так называемый человеческий фактор. Все знают, что пароли нужно запоминать, а значит, в большинстве случаев они представляют собой осмысленные слова. Кроме того, никто из пользователей не любит перенапрягаться, и чем короче пароль, тем для них лучше: если минимальная длина пароля устанавливается равной 8 символам, то можно с уверенностью сказать, что в 90% случаев длина пароля будет именно такой. А попробуйте найти такого пользователя, который при наборе пароля переключает раскладку клавиатуры. А это значит, что реальное количество символов не 197, а 64. В этом случае количество возможных вариантов уменьшается уже до значения 4,4·1012, а для перебора всех паролей потребуется всего 27 дней!
Отсюда следует очень важный вывод: чаще всего подобрать пользовательский пароль труда не составляет это вопрос времени. Далее на конкретном примере мы покажем вам, как можно быстро подобрать пароли пользователей по известным хэш-функциям, а пока рассмотрим, где хранятся хэш-функции и каким образом их можно заполучить.
Сетевая аутентификация пользователей
о сих пор мы рассматривали ситуацию локальной аутентификации пользователей, когда хэш-коды паролей хранятся на локальном компьютере. При сетевой аутентификации регистрация пользователей происходит не локально, а на сервере как правило, на контроллере домена.
Механизм сетевой аутентификации заключается в том, что клиент передает запрос на подключение к серверу, который, в свою очередь, возвращает служебный пакет с указанием передать пароль либо в открытом, либо в зашифрованном виде. Если пароль передается в зашифрованном виде, то сервер в служебном пакете посылает клиенту 8-байтовую последовательность, сгенерированную случайным образом. Клиент же вычисляет хэш-функцию пользовательского пароля и к 16-байтовому значению хэш-функции добавляет еще пять нулей, в результате чего получается 21-байтовая последовательность. Далее полученная последовательность делится на три части длиной по 7 байт и каждая из этих частей используется как ключ в алгоритме DES-шифрования. C использованием полученных ключей три раза шифруется 8-байтовая случайная последовательность, а в итоге получается три зашифрованные 8-байтовые последовательности, что в сумме дает 24-байтовую последовательность. Данный алгоритм выполняется как для LM-хэша, так и для NT-хэша, поэтому получаются две 24-байтовые последовательности, которые и посылаются серверу в качестве зашифрованного пароля.
Сервер, на котором хранятся LM- и NT-хэш-функции клиентов, в свою очередь, выполняет аналогичную процедуру с 8-байтовой случайной последовательностью и тоже рассчитывает две 24-байтовые последовательности. Получив от клиента отклик, сервер сравнивает 24-байтовые последовательности клиента с расчетными, и если их значения совпадают, то аутентификация считается успешной.
Как видите, сетевая аутентификация пользователей в основе своей тоже опирается на хэш-функции, и потому знание самих хэш-функций позволяет подобрать пароль. Принципиальная разница заключается лишь в месте хранения самих хэш-функций: при сетевой аутентификации хэш-функции хранятся на сервере, при локальной на самом компьютере.
Доступ к хэш-функциям паролей
о сих пор мы рассматривали процесс восстановления паролей по известным хэш-функциям. Возникает естественный вопрос как эти самые хэш-функции получить. Все учетные записи пользователей вместе с соответствующими им хэш-функциями паролей хранятся в так называемой базе SAM (Security Accounts Manager), поэтому осуществление любых попыток взлома начинается с получения файла паролей SAM. Данный файл (он, кстати, не имеет расширения), являющийся составной частью реестра, содержится в каталоге %systemroot%\system32\config (под %systemroot% понимается каталог с операционной системой, по умолчанию соответствующий каталогу C:\WINDOWS). Кроме того, резервная копия этого файла имеется на диске аварийного восстановления системы, а также в каталоге %systemroot%\repair.
Получение файла SAM
При загруженной операционной системе доступ к файлу SAM заблокирован его невозможно ни скопировать, ни просмотреть. Поэтому для копирования файла SAM необходимо прежде загрузить компьютер не с жесткого диска, а с дискетки, компакт-диска или флэш-памяти с использованием копии операционной системы или вообще другой операционной системы. К примеру, можно подготовить системную дискету DOS, но если на жестком диске компьютера установлена файловая система NTFS, то на эту дискету необходимо поместить соответствующий драйвер NTFS, называемый NTFSDOS. C помощью этого драйвера все разделы NTFS будут смонтированы в качестве логических дисков DOS, после чего можно будет легко скопировать файл SAM.
Другим способом получения файла SAM, не требующим перезагрузки компьютера, является копирование его из каталога %SystemRoot%\repair или с диска аварийного восстановления. Недостатком этого способа является то, что с момента последнего сеанса создания резервной копии пароли могут измениться.
Рассмотренные способы получения файла SAM применяются в тех случаях, когда имеется локальный доступ к компьютеру. В то же время отметим, что все современные программы взлома паролей поддерживают возможность удаленного получения файла SAM из реестра. Естественно, что для реализации такого способа нужно обладать правами доступа к реестру удаленного компьютера. Кроме непосредственного получения файла SAM, существуют и другие способы получения хэш-функций паролей, которые будут рассмотрены ниже.
Извлечение хэш-функций из данных SAM
Существует множество программ, которые можно найти в Интернете и которые позволяют извлечь хэш-функции паролей из файла SAM (о некоторых из этих программ мы расскажем в нашей статье). Отметим, что для усиления безопасности компания Microsoft в свое время добавила в операционную систему утилиту SYSKEY, которая первоначально входила в Service Pack 3 для Windows NT 4.0. Данная утилита позволяет дополнительно зашифровывать хэши паролей учетных записей пользователей с использованием 128-битного ключа, что делает невозможным процесс извлечения хэшей из файла SAM некоторыми программами, существовавшими на тот момент (например, программой SAMDump). В операционных системах Windows 2000, 2003 и XP утилита SYSKEY (рис. 1) активирована по умолчанию, а дополнительное шифрование не может быть заблокировано.
Рис. 1. В операционной системе Windows XP автоматически используется дополнительное шифрование учетных записей пользователей
с помощью утилиты SYSKEY
При активированном режиме SYSKEY ключ шифрования паролей, который кодируется с помощью системного ключа, может храниться как локально (при этом возможна его дополнительная защита паролем), так и отдельно на дискете (рис. 2).
Рис. 2. Настройки утилиты SYSKEY позволяют задать опции хранения ключа шифрования
Впервые способ преодоления защиты SYSKEY был предложен Тоддом Сабином (Todd Sabin) в его программе pwdump2. Для создания дампа паролей методом pwdump2 необходимо иметь права администратора. Кроме того, данный способ может быть реализован только на локальной машине. Работа утилиты pwdump2 основана на внедрении библиотеки samdump.dll, посредством которой она записывает свой код в пространство другого процесса (lsass.exe), обладающего более высоким уровнем привилегий. Загрузив библиотеку samdump.dll в процесс lsass (системная служба Local Security Authority Subsystem, LSASS), программа использует те же самые внутренние функции интерфейса API, чтобы обратиться к хэшам паролей. Это означает, что утилита получает доступ к зашифрованным паролям, минуя необходимость их расшифровки.
Кроме метода внедрения библиотеки, существуют и другие способы обойти ограничения защиты SYSKEY. К примеру, если имеется доступ к самому ключу, который может храниться на локальной машине, то ничто не мешает расшифровать данные файла SAM. Поэтому сегодня утилита SYSKEY не является серьезным препятствием для получения хэш-функций.
Использование сетевых снифферов
Еще один способ получения хэш-функций использование сетевых снифферов (sniffing вынюхивание), которые позволяют перехватывать аутентификационные пакеты. Снифферы это программы-анализаторы сетевых пакетов. Перехват пакетов, передаваемых в локальной сети, является одним из наиболее эффективных способов проникновения в сеть. В настоящее время имеется множество средств перехвата пакетов, причем с некоторыми из них совмещаются программы для взлома паролей по их хэш-функциям. В то же время необходимо отметить, что использование сетевых снифферов имеет и ряд ограничений. Дело в том, что если локальная сеть построена на базе коммутатора, то сетевой компьютер принимает только те пакеты, которые предназначены только ему, и ничего не знает о пакетах, которыми обмениваются друг с другом другие узлы сети. Следовательно, использование сетевого сниффера на отдельном компьютере позволяет захватывать или анализировать только те пакеты, которыми данный узел обменивается с другими узлами сети.
Другое дело беспроводные сети, в которых используется общая среда для передачи пакетов и имеется возможность «подслушать» переговоры любых узлов беспроводной сети. Но в проводных сетях на основе коммутаторов использование снифферов может оказаться неэффективным. Правда, нужно иметь в виду следующее обстоятельство: если у злоумышленника имеется доступ к настройкам коммутатора (в случае управляемого коммутатора), то можно реализовать функцию перенаправления портов коммутатора и продублировать входящие и исходящие пакеты с одного порта коммутатора на другой. В этом случае использование сниффера может оказаться очень действенным средством.
Существуют сетевые снифферы, которые могут устанавливаться незаметно для пользователей на удаленном ПК и управляться с командной строки.
Практические примеры
осле небольшого теоретического вступления перейдем к практическим примерам и рассмотрим три программы, которые позволяют эффективно восстанавливать пароли пользователей по известным хэш-функциям.
Утилита LCP 5.04
Утилита LCP 5.04 (http://lcp.da.ru/) (рис. 3) является очень мощным средством восстановления паролей по LM- и NT-хэшам. Кроме того, эта утилита бесплатная и поддерживает русскоязычный интерфейс. LCP 5.04 поддерживает импорт учетных записей пользователей с локального и удаленного компьютера, импорт файла SAM, импорт Sniff-файлов, а также импорт файлов, созданных другими утилитами (в частности, файлов LC, LCS и PwDump).
Рис. 3. Главное окно утилиты LCP 5.04
с импортированными данными учетных записей пользователей
После того как одним из перечисленных способов будет произведен импорт в программу LCP 5.04 учетных записей пользователей, содержащих имя пользователя, LM- и NT-хэш, можно приступать непосредственно к процедуре восстановления паролей. Утилита поддерживает подбор как по LM-, так и по NT-хэшу. Понятно, что при наличии LM-хэша атака производится именно на него.
В утилите LCP 5.04 реализовано три типа атак для подбора паролей по их хэшам: атака по словарю, гибридная атака по словарю и атака методом последовательного перебора.
При атаке по словарю последовательно вычисляются хэши для каждого из слов словаря или для модификаций слов словаря и сравниваются с хэшами паролей каждого из пользователей. Если хэши совпадают, то пароль найден. Преимуществом данного метода является его высокая скорость, а недостатком большая вероятность отсутствия пароля в словаре. Для увеличения эффективности атаки по словарю утилита позволяет производить дополнительные настройки (рис. 4). В частности, к словарю можно добавлять имена пользователей, возможность использования соседних клавиш (типа последовательностей qwert и др.), проверять записанное слово дважды (например, useruser), проверять обратный порядок символов в словах (например, resu), проверять конкатенацию с обратным порядком символов (в частности, userresu), проверять усеченные слова, слова без гласных, транслитерацию букв (типа parol). Кроме того, имеется возможность проверять замену латинской раскладкой (слово «пароль» в латинской раскладке будет выглядеть так: «gfhjkm») и замену локализованной раскладкой (слово «password» в русской раскладке «зфыыцщкв»).
Рис. 4. Настройка атаки по словарю в утилите LCP 5.04
При восстановлении паролей методом гибридной атаки по словарю к каждому слову или к модификации слова словаря добавляются символы справа и/или слева. Для каждой получившейся комбинации вычисляется хэш, который сравнивается с хэшами паролей каждого из пользователей. С помощью настроек программы LCP 5.04 можно указать количество символов, добавляемых слева и справа (рис. 5).
Рис. 5. Настройка гибридной атаки в утилите LCP 5.04
При атаке методом последовательного перебора (brute force) случайные слова составляются из указанного набора символов и потом для этих слов (точнее, для последовательностей символов) вычисляются хэш-функции. При использовании данного метода пароль всегда будет определен, если, конечно, символы, используемые в пароле, имеются в указанном наборе символов. Однако этот метод отнимает очень много времени, и чем больше символов содержится в выбранном наборе, тем дольше будет длиться перебор комбинаций. При использовании данного метода имеется возможность указывать набор символов, используемых для подбора из нескольких предопределенных наборов (рис. 6), задавать набор символов вручную. Кроме того, можно указывать длину пароля и ограничивать минимальную и максимальную длину. Если известны некоторые символы пароля или хотя бы регистр символов, то можно дополнительно указывать, какие символы должны присутствовать в пароле (и их местоположение), а также определять для каждого неизвестного символа его регистр (верхний, нижний, неизвестно).
Рис. 6. Окно настройки атаки методом последовательного перебора в утилите LCP 5.04
Еще одной интересной особенностью утилиты LCP 5 является возможность разбиения атаки последовательным перебором на части (с последующим объединением частей). Каждая часть задачи может независимо от других частей выполняться на отдельном компьютере. Соответственно чем больше задействуется компьютеров для перебора, тем выше скорость выполнения задачи.
Утилита LCP 5 поддерживает экспорт результатов (найденных паролей) в текстовый файл и добавление паролей в словарь, что в дальнейшем позволяет более эффективно подбирать пароли пользователей.
В заключение описания данной программы покажем на конкретном примере, как просто восстанавливаются с ее помощью пользовательские пароли. Для эксперимента мы выбрали реальную локальную сеть, насчитывающую около ста пользователей. Импортировав с контроллера домена (воспользовавшись для этого привилегиями администратора) базу учетных записей пользователей, мы прежде всего смогли выяснить, что практически все пользовательские пароли имели длину менее 14 символов, поскольку для всех паролей пользователей существовал LM-хэш. Кроме того, нам было известно, что правилами безопасности, определенными в этой локальной сети, минимальная длина пароля была ограничена 8 символами.
Далее мы провели атаку по словарю (предварительно отметив все возможные опции настройки) и гибридную атаку с возможностью подстановки двух символов в начале и в конце слова). На эти два типа атак на LM-хэш в общей сложности потребовалось не более 10 минут. Атака по словарю позволила вычислить порядка 10% всех паролей, а после проведения гибридной атаки примерно 40% всех паролей. Выяснилось, во-первых, что большинство пользователей локальной сети используют только цифровые символы для пароля, а во-вторых, что большинство паролей имеют длину 8 символов.
Для проведения эффективной атаки методом последовательного перебора мы разложили задачу на восемь компьютеров. Задав длину пароля от 8 до 14 символов и выбрав подходящий набор символов (латинский алфавит, цифры и спецсимволы (!@#$%^&*()_+-=[]{};’\:”|,./<>?), мы запустили атаку последовательного перебора. Буквально спустя день работы нашего стенда нам было доступно порядка 70% всех паролей. Кроме того, стало понятно, что практически 90% всех паролей имеют длину 8 символов. Через трое суток работы программы атака последовательным перебором была завершена и были подобраны все сетевые пароли пользователей, кроме одного, который имел длину более 14 символов и для которого существовал только NT-хэш.
Утилита LC5
Еще одной мощной и функциональной утилитой по вскрытию паролей Windows NT, 2000, 2003 и XP является LC5 (рис. 7) от компании Astake. Раньше эту программу можно было свободно скачать с официального сайта компании www.atstake.com, но после приобретения Atstake компанией Symantec утилита LC5 исчезла с официального сайта. Это, конечно, не означает, что данную программу нельзя скачать ее можно легко найти в Интернете.
Рис. 7. Главное окно утилиты LC5 с импортированными учетными записями пользователей
Программа имеет англоязычный интерфейс и по своим функциональным возможностям во многом напоминает уже рассмотренную нами утилиту LCP 5.04. Так, LC5 поддерживает импорт учетных записей пользователей с локального и удаленного компьютера, импорт файла SAM, импорт Sniff-файлов (программа совместима с известным сниффером WinPcap), импорт pwdump-файла, а также импорт файлов, созданных утилитой LC4 (предыдущая версия программы). Кроме того, в отличие от программы LCP 5.04, утилита LC5 может использоваться для взлома компьютеров на платформе UNIX.
При импорте хэш-функций паролей с локального или удаленного компьютера необходимо иметь права администратора на данном ПК. Если удаленный или локальный компьютер является контроллером домена, то в программу автоматически будет импортирован список всех пользователей домена с хэш-функциями их паролей.
В утилите LC5 реализовано четыре типа атак для подбора паролей по их хэшам: атака по словарю, гибридная атака по словарю, атака методом последовательного перебора и атака с предварительно вычисленными хэшами.
При атаке по словарю в качестве паролей прежде всего проверяются имена пользователей, и только после этого задействуется сам словарь. В словаре, используемом утилитой LC5, все слова ограничены максимальной длиной в 14 символов, а всего в словаре имеется 25 тыс. английских слов.
При восстановлении паролей методом гибридной атаки по словарю утилита позволяет указать количество символов, добавляемых слева и справа от словарного слова.
При выполнении атаки с предварительно вычисленными хэшами заранее вычисляются хэши и сохраняются пары «парольхэш» для всех возможных комбинаций выбранного набора символов. Этот метод обладает самой высокой скоростью, однако требует длительного подготовительного периода и большого количества дискового пространства для хранения предварительно рассчитанных хэшей.
При атаке методом последовательного перебора (brute force) случайные слова составляются из указанного набора символов. При использовании brute force имеется возможность указывать набор символов, используемых для подбора, из нескольких предопределенных наборов или задавать набор символов вручную (рис. 8).
Рис. 8. Окно настройки атаки в утилите LC5
Следует отметить, что возможности по настройке атаки методом последовательного перебора сильно уступают возможностям по настройке аналогичной атаки в утилите LCP 5.04. Однако скорость реализации этого метода в данной программе примерно в два с лишним раза выше, чем в программе LC5.
Выводы
ак показывает практика, уязвимость паролей пользователей в локальных сетях на платформах Windows NT/2000/2003/XP обычно связана с беспечностью пользователей. Операционные системы Windows NT/2000/2003/XP предоставляют в распоряжение пользователей и системных администраторов достаточно средств для построения мощной системы безопасности нужно только не пренебрегать этими возможностями.
Максимум внимания необходимо уделить невозможности получения учетных записей пользователей как с локального компьютера, так и с контроллера домена. Для этого необходимо запретить в настройках BIOS возможность загрузки с дискеты и других носителей, кроме жесткого диска, и защитить BIOS паролем. Кроме того, следует запретить удаленное управление реестром, остановив соответствующую службу. Рекомендуется также запретить использовать право отладки программ, для чего в оснастке безопасности нужно выбрать элемент Computer Configuration\Security Settings\Local Policies\User Right Assignment, а в свойствах политики Debug programs удалить из списка всех пользователей и все группы.
Эффективным средством повышения безопасности является отмена использования разделяемых ресурсов и специальных общих папок ADMIN$, C$ и т.д., предназначенных для нужд операционной системы, но позволяющих пользователю с административными правами подключаться к ним через сеть. Для блокирования данных разделяемых ресурсов необходимо в разделе реестра HKEY_LOCAL_MACHINE \SYSTEM\Current-ControlSet\Services\ LanmanServer\Parame-ters добавить параметр AutoShareWks (для версий Windows NT, 2000 Professional и XP) или AutoShareServer (для серверных версий) типа DWORD и установить его значение равным 0.
К тому же можно заблокировать анонимный сетевой доступ, позволяющий при анонимном подключении получать информацию о пользователях, о политике безопасности и об общих ресурсах. С этой целью нужно добавить в раздел реестра HKEY_LOCAL_MACHINE\SYSTEM\ Current-ControlSet\Control\Lsa параметр Restrict-Anonymous типа DWORD, установив его равным 2.
Еще одна настройка, которая позволяет запретить сетевой доступ нежелательных пользователей к вашему ПК, производится через оснастку безопасности в разделе Computer Configuration\Security Settings\Local Policies\User Right Assignment. В свойствах политики Access this computer from the network откорректируйте список пользователей, которым разрешен сетевой доступ к компьютеру. Дополнительно в политике Deny Access to this Computer from the network можно указать список пользователей, которым запрещен удаленный доступ к данному компьютеру.
Чтобы усложнить процесс восстановления паролей по их хэш-функциям, можно запретить хранение уязвимых LM-хэшей. Для этого в раздел реестра HKEY_LOCAL_MACHINE\SYSTEM\ Current-ControlSet\Control\Lsa следует добавить параметр NoLMHash типа DWORD. При значении этого параметра равном 1 LM-хэши не хранятся.
Кроме того, рекомендуется выбирать пароли с минимальной длиной 10 символов и не использовать для паролей исключительно цифровые символы. Целесообразно выбирать символы из возможно большего символьного набора. Как показывает практика, плохо поддаются подбору русские слова и предложения, которые набираются при латинской раскладке клавиатуры. К примеру, пароль «Gjitkyfabu» выглядит полной абракадаброй на английском языке, но если написать его при русской раскладке клавиатуры, то получим хорошо знакомую всем фразу «Пошелнафиг». Еще более эффективным средством является использование пароля, одна часть которого набирается при английской раскладке клавиатуры, а другая при русской. Как правило, такие пароли подобрать невозможно. Вот как выглядит пароль, если часть его набирать русскими буквами, а часть английскими: «Пошелyfabu».
Для проверки устойчивости вашего компьютера ко взлому паролей вы можете воспользоваться программами, размещенными на нашем CD-ROM.