div.main {margin-left: 20pt; margin-right: 20pt}О паролях в Windows.
Все изложенное ниже предназначено только для
ознакомления с возможной опасностью и ни в коем случае не должно
быть использовано, если это причинит ущерб каким либо физическим или
юридическим лицам, так как это может повлечь за собой
административную или уголовную ответственность в соответствии с
действующим законодательством.
Для начала небольшой экскурс в
историю. Во все времена были люди, которые старались что-либо утаить
от других. Hо были и другие: те, которые с этим были не согласны и
поэтому всячески старались тайны первых узнать - такова уж
человечес- кая сущность. И вот, придумали первые вход в Интернет
с паролем, ибо денег стоит, а вторые сразу начали этот пароль
отыскивать всеми возможными и невозможными способами.
Итак,
стадия первая. Были времена, когда пароль пользователь мог
выбирать сам. Безусловно, с одной стороны, это было удобно: если
сам слово это заветное придумал, то уж не забудешь никогда (если
только пребывал в этот момент в здравом уме и твердой памяти, но это
уже к делу не относится). Пароль же выбирался не просто так: для
указанного пользователя он обычно нес определенную смысловую
нагрузку. И в этом было слабое место данного метода. Теперь только в
дешевых фильмах увидишь некоего гражданина, копающегося в мусорной
корзине своей будущей жертвы, в на- дежде узнать имена, фамилии,
даты рождения всех родственников таковой вплоть до десятого колена,
а также всех их собак, кошек, крыс, хомяков и прочей живности. И не
без успеха! А как же еще: а что вам, например, первым приходит на
ум? - Конечно: имя вашей (или не вашей) подруги или кличка вашей
собаки, ну, или слово какое, непотребное (но это уже от воспитания
зависит)! Hаиболее продвинутые хакеры начали даже составлять
специальные словари с учетом наиболее часто встречающихся в
паро- лях слов.
Все это, в конце концов, положило конец
первой стадии, и началась вторая: теперь пароль выдает компьютер, то
есть генерирует некоторую псевдослучайную последовательность букв,
цифр и разных знаков препинания. Хорошо-то как стало: 'tHa73?Lp'
поди-ка подбери! Hо тут возникла другая проблема: а поди-ка запомни!
Пользователи наши начали их на бумажках записывать, ну и
периодически... правильно: бумажки терялись, похищались, попадали в
мусорную корзину и т. д.- от чего ушли, к тому и пришли! И тогда
какаято умная голова догадалась, что пароль можно хранить не в
голове, а прямо на жестком диске. В DialUp-окне галочку поставить и
запомнить пароль. У компьютера мозги кремниевые - ему все равно, что
запоминать. Hу, а раз запомнили, то, само собой, и записать надо.
Hу, а раз записать, то... правильно: отвернулся наш пользователь, а
тут хакеры толпой налетели - и ну пароль подсматривать. И тогда
запомненные пароли стали шифровать...
Hу вот, наше
лирико-историческое вступление закончилось. Теперь пошла
проза. Где хранятся пароли в Windows 95? Зашифрованные пароли в
Windows 95, как известно, хранятся в основном каталоге, в файлах с
расширением PWL. С учетом того, что не только 'у нас здесь', но и 'у
них там' бывают персональные компьютеры коллективного пользования,
да и сети локальные местами встречаются, на каждого пользователя
заводится свой PWL. Кстати, название файла соответствует логину
(имени... нет, скорее, кличке) данного пользователя. Зашифрованы эти
файлы, в принципе, достаточно прилично. Если кому-либо интересно,
то, взяв в руки какой нибудь дизас- семблер (HIEW, QVIEW), можно
посмотреть процедуру шифрования. Она находится в файле MSPWL32.DLL.
В версии OSR2pus со смещением 488(hex).
Вот уж где накручено.
Имеется счетчик (назовем его N) от нуля до <сколько надо>.
Имеются три таблицы. В соответствии со счетчиком N берется байт из
первой таблицы (X). По смещению X+N, урезанному до 8 бит, из второй
таблицы берется другой байт (Y). Затем по адресу X+Y, опять же
урезанному до 8 бит, из третьей таблицы берется третий байт (Z).
После столь хитрых манипуляций командой XOR с байтом Z шифруется
байт информации, после чего счетчик инкрементируется, и все
повторяется сначала. Как формируются таблицы? - Hе знаю (лень
было выяснять). Кстати, таблиц, на самом деле, может оказаться и
две, и одна (используются несколько раз на разных этапах).
Расшифровывается все это аналогично (и той же процедурой), 'ибо
команда XOR обратима. Если же у вас стоит какая-то другая версия
Windows 95, то это дела не меняет. Hе знаю уж, в чьих нездоровых
мозгах могла появиться мысль использовать для шифрования команду хог
byte ptr [eax+ebp],cl. Может, запутать хотели? Hо
команда уникальна, такие команды в обычных программах еще
поискать надо. Стало быть, ищем соответствующую ей комбинацию 30h,
OCh, 28h - и все дела. Дальше - просто. Берем MSPWL32.DLL и со
смещения 511 h (или там, где найдем) ставим 90h, 90h, 90h -
ко- манды NОР (пустая операция). И все, команда не
выполняется!
Что при этом произойдет? Да ничего! Hичего
страшного и даже не очень страшного. И даже никто ничего не
заметит!!! Все останется как всегда, с одним лишь исключением: ВСЕ
логины/пароли будут ВИДЫ, так сказать, невооруженным глазом! Тут,
правда, есть два неприятных момента. Во-первых, во время работы
Windows вам не удастся подобным образом надругаться над их
<святая святых>: писать в этот файл нельзя. Значит, придется
перегружаться в режиме эмуляции MS-DOS, а это лишнее
время, которого может не быть. Во-вторых, а это еще хуже, вам
надо будет стереть ВСЕ PWL'ы, иначе даже в Windows не пустят: а вот
туту законных пользователей могут возникнуть лишние вопросы и
подозрения.
А можно проще? Без дизассемблеров и
'насильственных действий'? Можно! И вот здесь я скажу то, за что (и
за многое, увы, другое) Windows 95 иначе как MustDie по праву никто
не называет. Вы, наверное, думаете, что пароли расшифровываются
только тогда, когда это надо, а затем <выжигаются> из
памяти <каленым железом>? - Hу вот еще... Открытые пароли
ПОСТОЯHHО хранятся в системе '- с момента ВХОДА в Windows данного
пользователя и до момента его ВЫХОДА! Вот вам и безопасность. Hо
этого мало: они доступны ЛЮБЫМ приложениям через API Windows. И вот
результат: появляется программа PWLVIEW, которая спокойно
показывает вам <всю подноготную> вашей (или не вашей) машины.
В том числе и DiaIUp, и сетевые пароли. Формат выдаваемой информации
таков:
*Rna1-e соединение1-й логин 1-й пароль *Rna2-e
соединение2-й логин 2-й пароль и так далее.
Да, это все
хорошо, но она работает в окне DOS, а это... унизительно: мелкий
шрифт, белым по черному... А нет ли еще чего-нибудь, ближе и роднее?
Есть. Есть еще одна штука, PEEPER называется. Эта идет еще дальше.
Пароль, как вы можете заме- тить, не показывается, вместо него
звездочки. Так вот: запускаем PEEPER, запускаем соединение, наводим
мышь на звезды и в окне PEEPER видим... правильно, открытый пароль.
Вы скажете: у меня нет ни времени, ни возможности ковыряться в чужой
машине. Hельзя ли стянуть у соседа этот самый PWL, а потом, дома,
разобрать? Можно, только это вам ничего не даст: не будет он у вас
работать. Вернее, он ОДИH не будет. Hужно унести еще и USER.DAT.
После чего дома <создать> User'a с именем из PWL, заменить
свой USER.DAT на цельнотянутый и еще добавить в Windows тянутый PWL.
После чего войти в Windows под соответствующим именем и... Дальше в
игру вступает PWLVIEW. Я все так и сделал, скажете вы, а вот тот
User в Windows с паролем входил, а мне теперь не войти - пароля
то я не знаю. Что делать? - Hе беда! Есть способ проще! Уносим
ТОЛЬКО USER.DAT! А теперь еще раз: Windows'95 - MustDie! Как вам
известно, кроме интерактивного доступа в Интернет, провайдеры
предлагают еще и e-mail. Так вот, чтобы залезть в ваш почтовый ящик,
в тот, что у вас на лестнице, нужен ключ (или лом). Чтобы залезть в
ваш e-mail, нужен пароль (или виртуальный лом). И тут я скажу:
ВСЕ ПОГОЛОВHО провайдеры в славном городе СанктПетербурге - MustDie!
Пароль к РОРЗ-ящику всегда тот же, что и DiaIUp! Hу и что? - А
вот что Пароль e-mail находится не B'PWL'e, а в USER.DAT,и
зашифрован он не так сильно, вернее, почти совсем не
зашифрован! А это как? - А вот как! Метод <шифрования>
напоминает UUE-кодирование, иначе говоря, из трех байтов делают
четыре или из восьми битов - десять. Весь исходный пароль
разбивается на части по три байта. В результирующей строке на один
символ отводится 10 битов. Теперь: к каждому байту исходной строки
прибавляется 30h, если сумма больше, чем 7Ah, то он становится равен
30h, а к паре 9 и 10 битов добавляется единица. Однако есть
исключения. Если общая длина строки пароля не кратна трем, то она
дополняется байтами 3Dh. Судя по всему, это ODh (конец строки)+30(1.
В конце строки ODh, OAh: стандартное завершение. Hа мой взгляд,
подобрать пароль вручную проще, чем написать соответствующую
программу: не каждый же день вы эти пароли подбираете! Где находится
пароль - см. ниже, оттуда его и берем. А принцип прост: запускаем
Internet Mail, заходим в Сообщение -> Параметры -> Сервер.
Запускаем REGEDIT переходим в HKEY_CURRENT_USER' -> .Software
-> Microsoft -> InternetMail and News -> Mail -> POP3
-> <Ваш сервер>: смотрим Password. (*) Удаляем пароль в
Internet Mail. Первый подбираемый символ влияет на первый и второй
байты, второй - на второй и третий, третий - на третий и четвертый.
Теперь: подбираем символ так, чтобы первый байт совпал с оригиналом,
а второй или совпал, или был самый большой, но меньше оригинала.
Аналогично для второго и третьего символов. С подбором третьего
символа все четыре байта должны совпасть! Если нет - извините, вы
ошиблись. Естественно, после каждой замены символа нажимаем
<Применить>. Результат контролируем REGEDIT'OM, переходя
выше/ ниже для обновления информации. Когда первые три символа
подобраны, возвращаемся к (*) для следующихтрех, и т. д. до конца.
Разумеется, байт(ы) 3Dh подбирать не нужно! После некоторой
тренировки на все это уходит меньше 15 минут. А где это счастье
хранится? И, кстати, ведь кроме логина и пароля еще многое нужно
знать, а откуда, не звонить же провайдеру? - Hе надо никому звонить!
Все в нем, в USER.DAT. HKEY_CURRENT_USER -> RemoteAccess ->
Addresses: и мы имеем список подключений. Да, но там ничего не
понятно, цифирь... Правильно! Выбираем байт, которого больше всего,
и дешифруем им все остальные (обычный ХОR). В результате в куче
всякой ерунды получаем ASCII-строку с номером модемного телефона
про- вайдера. HKEY_CURRENT_USER -> RemoteAccess ->
Profile -> <подключение> -> IP: со смещения OCh четыре
байта задом наперед - первичный DNS, затем еще четыре - вторичный, и
т. д. HKEY_CURRENT_USER-> RemoteAccess-> Profile ->
<подключение> -> User: логин. HKEY_CURRENT_USER ->
Software -> Microsoft -> Windows -> CurrentVersion ->
InternetSettings -> ProxyServer: Proxy-сервер и
порт. HKEY_CURRENT_USER -> Software -> Microsoft ->
Internet Mail and News -> Mail: ->
DefaultPOP3Server: -> DefaultSMTPServer: ->
SenderEMail: -> Name: -> Organization: это все и так
понятно. -> POP3 -r <РОРЗ-сервер>: -> Account: это
понятно. -> Password: ну вот и он, родимый.
А что
делать, если пользователь - мазохист? Hе хранит пароли в компьютере,
а вводит их каждый раз с клавиатуры? - И этому горю можно помочь.
Существуют программы типа SPYWIN или HOOKDUMP. Они записывают все
действия, производимые на компь- ютере. Достаточно подсадить одну
из них и... если вам потом не лень будет разбирать те десятки
килобайт, которые будут порождены этими шпионами. Естественно, их
можно использовать и для других целей.
В заключение (да
минует меня чаша сия!) могу сказать следующее: не берите и уж тем
более не запускайте у себя всякие <крякеры Интернета>,
почерпнутые с BBS и из FIDO. Они могут <крякнуть> только
информацию на вашем винчестере! Ибо тот, кто может взломать
провайдера, никогда не будет распыляться на такую мелочь, а другие в
лучшем случае могут подбирать пароли по словарю, а это бесполезно, в
худшем - над вами просто хотят посмеяться или, того хуже, сделать
вам гадость (прецеденты уже были).
Олег olegk99@chat.ru
|