Парольный кэш Windows 9х

Бесплатно!

1. Необходимость создания, местоположение и содержание файла парольного кэша Windows 9х

Все началось в 1985 году, когда Microsoft выпустил первую версию Windows, тогда еще оболочки для DOS. ОС Windows задумывалась как максимально дружественная к пользователю, что называется «для домохозяек». Эта доктрина сохраняется во всей серии Windows 95/95OSR2/98/98SE/ME, где все сделано для того, чтобы пользователю было максимально удобно работать. Можно сказать, что безопасность была принесена в жертву удобству и простоте.

Именно по этим соображением был разработан и внедрен парольный кеш, который был призван хранить множество паролей пользователя для доступа к различным службам: Веб-почте, ICQ, IRC, чатам, общим ресурсам локальной сети и т.п. Достаточно было после однократного ввода пароля согласиться с предложением «Сохранить пароль в Windows?», как в дальнейшем пользователь избавлялся от запоминания разных паролей, поскольку все они считывались из парольного кеша.

Эти файлы размещается в папке %WinRoot% и имеют расширение *.PWL (PassWord List). Они создаются при первой регистрации пользователя на данном компьютере и имеют имя, которое по первым 8 символам совпадает с логином пользователя. После каждой регистрации на компьютере пользователь получает доступ к своему файлу парольного кеша, а с его помощью – ко всем своим паролям. Если логины пользователей совпадают по первым восьми символам, то имена их файлов парольных кешей будут также одинаковыми. Это значит, что пользователь, зарегистрировавшийся с таким же логином позже, уничтожит весь парольный кеш своего предшественника, заменив его  файл своим.

Таким образом, под парольным кешем мы понимаем механизм сохранения и повторного использования паролей в операционной системе. От обычной базы логинов данный механизм отличается именно хранением дополнительных парольных ресурсов и возможностью их использования по специальному запросу без участия пользователя. Перечень всех пользователей с указанием названий и размещения соответствующих файлов парольных кешей находится в конфигурирующем файле SYSTEM.INI в секции [Passwords Lists].

Если при регистрации пользователь не ввел правильный пароль, то доступ в среду Windows 9x ему все же не будет перекрыт, однако он не сможет пользоваться паролями, считанными из кеша. Для пущей важности вся информация в файле парольного кеша зашифрована с применением достаточно криптостойких алгоритмов RC4 и MD5.

Алгоритм RC4 является алгоритмом потокового шифрования и считается вполне устойчивым, MD5 — алгоритм создания дайджестов (сверток) сообщений, достаточно быстр в реализации, разработчик R.Rivest.

Процедура шифрования/дешифрования парольного кеша хранится в динамически подключаемой библиотеке MSPWL32.DLL. Кроме того, управлением локальными ресурсами машины, предоставляемыми в сеть, занимается VSERVER.vxd, а обменом информацией с удаленными серверами VREDIR.vxd Безусловно, в связке работают так же MSNET32.dll, MSNP32.dll и проч.

PWL файлы бывают двух совершенно разных типов: «старые» PWL файлы — созданные оригинальной Windows 95 (или Windows 3.11) и «новые» — созданные Windows 95 OSR2 или Windows 98.

Дело в том, что «старые PWL файлы имели довольно слабую систему защиты, что позволяло сразу же легко прочитать сохраненные пароли, даже если был неизвестен пароль входа в ОС Windows. Известная программа, glide.exe, показывает все пароли, сохраненные в старом PWL файле. Позднее, начиная с версии Windows OSR2, этот недостаток был устранен, но система защиты парольного кеша все равно осталась слабой. Для того, чтобы в этом убедиться, рассмотрим структуру файлов парольного кеша. Для сравнения в таблице приведены оба формата:

Смещение «Старый» формат PWL-файла

Windows 3.11, Windows 95 (безService Pack)

«Новый» формат PWL-файла

Windows 95 с SP, Windows OSR2, Windows 98

0000:0003 Сигнатура — B0 6 4D 4E («MFN«) Сигнатура – E3 82 85 96 («yВЕЦ«)
0004:0007 Счетчик пользователя Счетчик пользователя
0008:107 Resource Link Index, таблица из 256 байт
0008:0009 Указатель количества ресурсов в PWL-файле
000A:108 Resource Link Index, таблица из 255 байт
0108 Нулевой байт
0109:0207 Resource Key Entry, таблица из 255 байт Resource Key Entry, таблица из 255 байт
0208:021B Имя пользователя
0208:0250 Таблица указателей на начала ресурсов
021C:023D Таблица указателей на начала ресурсов
023E:025E Ресурс 0 … ресурс F
0251 Нулевой байт
052:02AF Ресурс 0 … ресурс F

2. Принципы шифрования, используемые в файле парольного кэша Windows

Вся информация в файле парольного кеша зашифрована с применением достаточно криптостойких алгоритмов RC4 и MD5. Алгоритм RC4 является алгоритмом потокового шифрования и считается вполне устойчивым, MD5 — алгоритм создания дайджестов (сверток) сообщений, достаточно быстр в реализации, разработчик R.Rivest. Процедура шифрования/дешифрования парольного кеша хранится в динамически подключаемой библиотеке MSPWL32.DLL. Кроме того, управлением локальными ресурсами машины, предоставляемыми в сеть, занимается VSERVER.vxd, а обменом информацией с удаленными серверами VREDIR.vxd Безусловно, в связке работают так же MSNET32.dll, MSNP32.dll и

В PWL-файле Windows 95 для шифрования используется простое гаммирование, где гамма генерируется алгоритмом RC4. Несмотря на кажущуюся надежность данного алгоритма расшифровка может быть выполнена достаточно легко даже теми, кто о нем не слышал.

Дело в том, что этим алгоритмом зашифровывается и  имя пользователя, которое размещается в PWL-файле в диапазоне адресов с 0208 по 021B. Имя же, в свою очередь, практически всегда известно либо из названия самого PWL-файла, либо из соответствующей секции конфигурирующего файла SYSTEM.INI.

Далее мы используем известное свойство обратимости логической операции XOR, по которой накладывается гамма:

(X XOR Y) XOR Y = X

3. Меры по защите парольного кэша Windows 9х

Для пущей важности вся информация в файле парольного кеша зашифрована с применением достаточно криптостойких алгоритмов RC4 и MD5.

Алгоритм RC4 является алгоритмом потокового шифрования и считается вполне устойчивым, MD5 — алгоритм создания дайджестов (сверток) сообщений, достаточно быстр в реализации, разработчик R.Rivest.

Процедура шифрования/дешифрования парольного кеша хранится в динамически подключаемой библиотеке MSPWL32.DLL. Кроме того, управлением локальными ресурсами машины, предоставляемыми в сеть, занимается VSERVER.vxd, а обменом информацией с удаленными серверами VREDIR.vxd Безусловно, в связке работают так же MSNET32.dll, MSNP32.dll и проч.

4. Методы и программные средства, используемые для взлома парольного кэша Windows

В PWL-файле Windows 95 для шифрования используется простое гаммирование, где гамма генерируется алгоритмом RC4. Несмотря на кажущуюся надежность данного алгоритма расшифровка может быть выполнена достаточно легко даже теми, кто о нем не слышал.

Дело в том, что этим алгоритмом зашифровывается и  имя пользователя, которое размещается в PWL-файле в диапазоне адресов с 0208 по 021B. Имя же, в свою очередь, практически всегда известно либо из названия самого PWL-файла, либо из соответствующей секции конфигурирующего файла SYSTEM.INI.

Далее мы используем известное свойство обратимости логической операции XOR, по которой накладывается гамма:

(X XOR Y) XOR Y = X

Это означает, что имея в распоряжении фрагмент файла с уже наложенной гаммой и зная имя пользователя, мы можем определить саму гамму. Правда мы узнаем лишь первые 20 байт гаммы, но это дает нам возможность расшифровать по 20 байт каждого ресурса, поскольку при их шифровании гамма не меняется и остается такой же.

Если повезет, то мы можем узнать большее числа байт, принадлежащих гамме. Дело в том, что PWL-файл имеет избыточную информацию — есть указатели на начала ресурсов (021E, 0220, 0222 и т. д.), но есть и длины записей в ресурсах, поэтому зная один из параметров, можно вычислить другой.

Если в ресурсах не более одной записи, то длина ресурса есть первое слово ресурса плюс два (длина первой записи ресурса плюс длина нулевого слова). Определяя по началу и длине данного ресурса начало следующего, рассчитывается вся таблица указателей на начала ресурсов в поле 21Ch-23Dh. В результате еще 2*17 = 34 байта добавляются к рассчитанной гамме. Если в ресурсах более одной записи, то начало следующего ресурса все равно можно найти с некоторой долей вероятности (после наложения гаммы второй байт ресурса будет равен второму байту гаммы, т.к. длина записей в ресурсе редко превышает 255, а 0 XOR X = X ). Этот алгоритм реализован в известной программе Glide, которая рассчитывает 54 первых байта гаммы и расшифровывает по 54 первых байта каждого ресурса.

В PWL-файле Windows 95OSR/OSR2/98 алгоритм расшифровки ресурсов, содержащихся в нем, более сложны, поскольку система защиты была усовершенствована с учетом «прорех» в Windows 95. Поэтому здесь используется подход, традиционный для всех программ парольных взломщиков, а именно перебор возможных комбинаций символов с проверкой каждой с помощью 16-байтных массивов CryptoSign (0x252) и CheckSign (0x262) до тех пор, пока не будет найден верный пароль.

Именно такой подход реализован в программах PWLTool, PWLInside.EXE, REPWL.EXE и других, эффективность которых исследуется в данной лабораторной работе.

Детали:

Тип работы: Шпоры/шпаргалки

Предмет: Компьютерные науки

Svg Vector Icons : http://www.onlinewebfonts.com/icon Из сборника: Шпора по Windows

Год написания: 2011

Добавить комментарий

Ваш email не будет показан.

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.