Hacker-friendly-авторизация
 
23.03.2004
Андрей Васильков


 
<< стр. 1
стр. 2

Истина где-то рядом…

По поводу точного минимально достаточного для перебора количества паролей, с учетом всех вышесказанных особенностей хэширования по LM, единого мнения нет7. Например, Крис Касперски в декабре 2000 года писал, что у него получились следующие результаты для LM challenge/response (расчеты можно найти в его статье): F = 680+681+682+683+684+685+686+687 = 6 823 331 935 125 » 7х1012 комбинаций. Однако его данные верны только в том случае, если в качестве парольных символов могут быть использованы лишь цифры от 0 до 9, 26 заглавных букв латинского алфавита и 32 спецсимвола (итого 68 знаков). Так было в WinNT 4.0, но в WinNT 5.0 появилась возможность брать в качестве парольного любой из 256 ASCII-кодов. Как я уже писал, из-за нечувствительности LM-хэша к регистру используются лишь 197 символов. Таким образом, в WinNT 5.0 (и более старших версиях) количество парольных комбинаций, необходимых для перебора, рассчитывается так: F = 1970+1971+1972+1973+1974+1975+1976+1977 = 11 573 740 428 311 158 » 1,16х1016.

Бесполезный импорт

Для усиления надежности Microsoft добавила в WinNT (начиная с NT 4.0 SP4) утилиту SYSKEY. Ее использование приводит к тому, что генерируется еще один хэш (ключ), который шифрует данные учетных записей пользователей и может храниться отдельно. В Windows NT 5.0 и старше SYSKEY активизирована по умолчанию, поэтому восстановление учетных записей из скопированного файла SAM невозможно. Точнее, почти невозможно.

Способ преодоления этого барьера впервые предложил Тодд Сабин (Todd A. Sabin). Вместо того, чтобы вытаскивать хэши напрямую из реестра, их можно взять сразу из памяти, где они находятся уже в расшифрованном виде. Способ был назван pwdump2, реализован в одноименной программе и в дальнейшем лег в основу других программ (pwdump3, LC+4).

Однако использование этих методов требует прав на отладку программ. Как быть, если их нет? Можно воспользоваться утилитой PWSEX от Elcomsoft. При наличии файлов SAM и SYSTEM (располагается в том же каталоге) она способна восстановить пароли даже при активной SYSKEY.
Вспомним одно из концептуальных отличий операционной системы Windows от Unix-подобных. Если в *nix-системах привилегии распределялись следующим образом: пользователи разных уровней > система > администратор, то в Windows иерархия иная — система обладает наивысшими правами. Этим и воспользуемся. Пусть система сама себя взломает.

По адресу %Системная_директория%\system32\ находится файл logon.scr. Это хранитель экрана, запускаемый при отсутствии авторизации в течение пятнадцати (Windows NT 4.0/2000) или десяти минут (Windows XP)8. Заменим его на выполняемый файл (cmd.exe, как вариант), загрузившись из-под другой ОС. Затем перезагрузимся в Windows NT/2K/XP, бросим лукавый взгляд на экран приветствия и пойдем пить чай. Когда бублики закончатся, у нас будут права системы.

Need For Speed

Сколько же времени понадобится, чтобы найти пароль из файла SAM?
Мой скромный ПК на базе процессора AMD Athlon XP с частотой 2,0 ГГц при помощи программы9 LC+4 подбирает пароли по LM-хэшам методом brute-force с использованием всех 197 символов ASCII со средней скоростью » 1,25х109 паролей в секунду. Следует отметить, что программа плохо оптимизирована. Отечественная утилита аналогичного назначения от компании Elcomsoft под названием Proactive Windows Security Explorer (или PWSEX для краткости) дает на процессорах Intel Pentium 4 примерно в тысячу раз большую скорость при работе с NT-хэшами.

От многопроцессорных конфигураций можно ожидать ускорения процедуры в разы, а от распределенных вычислительных сетей — на порядок-другой. Удобства ради примем скорость перебора равной 1010 паролей в секунду. Тогда на перебор всех паролей множества F нам потребуется 1,16х106 секунд, или тринадцать с половиной суток. Поскольку пароль может быть равновероятно найден как в первой, так и во второй части множества F, то, введя математическое ожидание 50%, логично предположить, что пароль длиной менее 14 символов может быть найден в результате аудита LM-хэша за срок вдвое меньший — примерно за неделю.

Но стоит помнить, что ограничить множество паролей (за счет отсекания паролей длиннее восьми символов) мы можем только в том случае, когда речь идет о сетевой аутентификации с 32-байтным хэшем. Если же для сетевой аутентификации используются протоколы NTLM, NTLMv2 или Kerberos, то определить, что пароль короче восьми символов, уже невозможно. Для локальной аутентификации это тоже неактуально.

Идем напролом

Если вам просто надо войти в систему с правами администратора (не заботясь о сохранности данных на EFS и личных ключах), то пароль знать вовсе не обязательно.

Способ первый, ласковый. Обычно администратор (или кто-то из пользователей) создает штатными средствами операционной системы дискету сброса пароля. Отыскиваете таковую, вставляете в дисковод и пытаетесь авторизоваться. После сообщения о неправильном пароле появится диалоговое окно «Забыли пароль?», в котором вам предложат его сбросить. Соглашайтесь!

Способ второй, грубый. Пошутили и хватит. Предыдущий абзац имеет мало общего с жизненными реалиями. Вряд ли дискета сброса паролей будет открыто лежать на столе… хотя всякое бывает. Чтобы не надеяться на случай, лучше подстраховаться и запастись утилитами заранее. Например, такой, как бесплатная Offline NT Password & Registry Editor10. Она запускается с загрузочной дискеты с ОС Linux, позволяет менять пароль любому пользователю и записывать измененный файл SAM обратно на винчестер. Есть и другие подобные программы, но большая часть из них стоит немалых денег.

Еще один вариант основан на замене динамической библиотеки MSV1_0.DLL (с помощью которой осуществляется процедура проверки пароля) ее модифицированным (пропатченным) вариантом. Для разных версий WinNT давно созданы готовые патчи, которые вы без труда найдете в Сети, равно как и «готовые к употреблению» библиотеки. Здесь я их не публикую, дабы не утомлять читателя строками HEX-кодов и ассемблерным языком. После замены (все тем же способом) оригинальной MSV1_0.DLL на пропатченную вход в систему будет возможен под любым пользователем (вплоть до администратора) и паролем. SYSKEY здесь уже не играет никакой роли.

Если ОС Windows 9х/Me позиционировались как «user-friendly» (дружественные к пользователю), то серия NT именовалась «administrator-friendly» (дружественной к администратору). На самом деле, и те и другие получились «hacker-friendly».

Для тех, кто поспешит обвинить меня в пропаганде хакерства, я приготовил очередную отговорку: все упомянутые способы и утилиты могут быть использованы для законных целей. Например, к LC+4 и PWSEX прибегают администраторы локальных сетей для аудита паролей пользователей. Таким образом выявляются уязвимые (короткие или словарные) пароли, которые вовремя заменяются более стойкими. Кроме того, описание различных методов атак позволяет знать на детальном уровне о существующих угрозах и принимать соответствующие меры по их предотвращению.

Редакция и автор выражают благодарность исполнительному директору компании Elcomsoft (www.elcomsoft.ru ) Владимиру Каталову за помощь в подготовке этой статьи.


7 Если я сам нигде не ошибся в рассуждениях, то, думаю, разногласия существуют потому, что Крис Касперски считал количество вариантов для WinNT 4.0 с ее ограничениями на допустимые в пароле символы; другие же просто копировали его текст при объяснении расчетов для WinNT более поздних версий (5.0 и 5.1 или 2000 и XP соответственно), в которых количество допустимых символов стало неограниченным в пределах 256-значной матрицы ASCII.
8 Время ожидания задается в секундах в ключе реестра: HKEY_USERS\.DEFAULT\Control Panel\Desktop\ScreenSaveTimeOut.
9 LC+4 — бесплатный отечественный клон LC4 от @stake.
10 www.home.eunet.no/~pnordahl/ntpasswd/bootdisk.html.



 
<< стр. 1
стр. 2

<<А счастье было так возможно
Все материалы номера
Internet Exploiter >>