"Алекс Федченко. Описание механизма функционирования парольных кэшей Windows v4.xx" - читать интересную книгу автора

итого max 50 байтов гаммы, это позволит нам расшифровать max по 50 байтов
каждого ресурсного входа, абсолютно без всякого предположения о пароле
пользователя. Данную задачу решала программа Glide в свое время. Этот нюанс в
применении стойких криптоалгоритмов даже явился источником нескольких
журнальных статей в околокомпьютерной журналистике. В настоящее время это уже
история, так как только у нас еще используют чистую Windows v4.0 без
обновлений. Второй путь: ключ для RC4 шифрования короток, 2^32, полный перебор
может быть осуществлен за сутки (даже менее). А это значит, что парольные кэши
Windows v4.0 гарантированно _не_ защищают хранящуюся в них информацию.
Рассмотрим поближе формат канала ресурсов, именно в таком формате ресурсы
получает точка обратного вызова для WNetEnumCachedPasswords (по одному ресурсу
на вызов).
┌──────────┬──────┬───────────────────────────────────────────────────────────┐
│ Смещение │Размер│Значение │
╞══════════╪══════╪═══════════════════════════════════════════════════════════╡
│ 0 │ Word │ Общий размер ресурса │
│ 2 │ Word │ Размер описателя ресурса (имя соединения, сетевого │
│ │ │ диска, игрового сервера, и проч.) │
│ 4 │ Word │ Размер секретной информации ресурса (пароль на │
│ │ │ соединение и проч.) │
│ 6 │ Byte │ Hомер ресурса (абсолютный) │
│ 7 │ Byte │ Дескриптор ресурса (6 - DialUp, 6 - NetLink и проч.) │
└──────────┴──────┴───────────────────────────────────────────────────────────┘
Стоит добавить, что ресурсы далеко не всегда текстовые строки. MAPI хранит в
парольных кэшах свои бинарные данные, а Novell Network Provider хранит имя
пользователя и логин на сервер как 2 строки закрытые 0 в "секретном" поле
ресурса. Все желающие поисследовать файлы .PWL могут воспользоваться ключем
/LIST:E программы PWLHACK v4.02 Еще один момент: это процедура свертки пароля
в Windows v4.0 Очевидно, что такая свертка достаточно просто обратима
(возможна генерация некоторого множества паролей для отдельно взятого хеша).

; EDx - hash, EBx - Pointer to password.
W95_Hash_Pwd Proc
Xor EDx,EDx
W95_Hash_Next: MovZx EAx,Byte Ptr [EBx]
Add EDx,EAx
Rol EDx,7
Inc EBx
Or Al,Al
Jnz Short W95_Hash_Next
Ret
W95_Hash_Pwd EndP

Hаверное, мне больше нечего добавить в этом разделе, думаю, что пора
переходить к следующему. Micro$oft иногда прислушивается к мнению "прогрессив-
ной общественности", особенно в вышеописанном случае, иначе она не была бы
Micro$oft.


[2] Обзор реализации парольных кэшей Windows v4.0.1111 (a.k.a. 95 OSR2)