Архивы: по дате | по разделам | по авторам

К вопросу о бесплатном Интернете:

Архив
06.04.1998

Все изложенное ниже предназначено только для ознакомления с возможной опасностью и ни в коем случае не должно быть использовано, если это причинит ущерб каким либо физическим или юридическим лицам, так как это может повлечь за собой административную или уголовную ответственность в соответствии с действующим законодательством.

Для начала небольшой экскурс в историю.

Во все времена были люди, которые старались что-либо утаить от других. Но были и другие: те, которые с этим были не согласны и поэтому всячески старались тайны первых узнать - такова уж человеческая сущность. И вот, придумали первые вход в Интернет с паролем, ибо денег стоит, а вторые сразу начали этот пароль отыскивать всеми возможными и невозможными способами.

Итак, стадия первая.

Были времена, когда пароль пользователь мог выбирать сам. Безусловно, с одной стороны, это было удобно: если сам слово это заветное придумал, то уж не забудешь никогда (если только пребывал в этот момент в здравом уме и твердой памяти, но это уже к делу не относится). Пароль же выбирался не просто так: для указанного пользователя он, обычно, нес определенную смысловую нагрузку. И в этом было слабое место данного метода.

Теперь только в дешевых фильмах увидишь некоего гражданина, копающегося в мусорной корзине своей будущей жертвы, в надежде узнать имена, фамилии, даты рождения всех родственников таковой вплоть до десятого колена, а также всех их собак, кошек, крыс, хомяков и прочей живности. И не без успеха! А как же еще: а что вам, например, первым приходит на ум? - Конечно: имя вашей (или не вашей) подруги или кличка вашей собаки, ну, или слово какое, непотребное (но это уже от воспитания зависит)! Наиболее продвинутые хакеры начали даже составлять специальные словари с учетом наиболее часто встречающихся в паролях слов.

Все это, в конце концов, положило конец первой стадии, и началась вторая: теперь пароль выдает компьютер, то есть генерирует некоторую псевдослучайную последовательность букв, цифр и разных знаков препинания. Хорошо-то как стало: "tHa73?Lp" - пойди-ка подбери! Но тут возникла другая проблема: а пойди-ка запомни! Пользователи наши начали их на бумажках записывать, ну и периодически: правильно: бумажки терялись, похищались, попадали в мусорную корзину и т. д. - от чего ушли, к тому и пришли! И тогда какая-то умная голова догадалась, что пароль можно хранить не в голове, а прямо на жестком диске. В DialUp-окне галочку поставить и запомнить пароль. У компьютера мозги кремниевые - ему все равно, что запоминать. Ну, а раз запомнили, то, само собой, и записать надо. Ну, а раз записать, то: правильно: отвернулся наш пользователь, а тут хакеры толпой налетели - и ну пароль подсматривать.

И тогда запомненные пароли стали шифровать:

Ну вот, наше лирико-историческое вступление закончилось. Теперь пошла проза.

Где хранятся пароли в Windows 95? Зашифрованные пароли в Windows 95, как известно, хранятся в основном каталоге, в файлах с расширением PWL. С учетом того, что не только "у нас здесь", но и "у них там" бывают персональные компьютеры коллективного пользования, да и сети локальные местами встречаются, на каждого пользователя заводится свой PWL. Кстати, название файла соответствует логину (имени: нет, скорее, кличке) данного пользователя.

Зашифрованы эти файлы, в принципе, достаточно прилично. Если кому-либо интересно, то, взяв в руки какой нибудь дизассемблер (HIEW, QVIEW), можно посмотреть процедуру шифрования. Она находится в файле MSPWL32.DLL. В версии OSR2rus со смещением 488(hex).

Вот уж где накручено. Имеется счетчик (назовем его N) от нуля до "сколько надо". Имеются три таблицы. В соответствии со счетчиком N берется байт из первой таблицы (X). По смещению X+N, урезанному до 8 бит, из второй таблицы берется другой байт (Y). Затем, по адресу X+Y, опять же урезанному до 8 бит, из третьей таблицы берется третий байт (Z). После столь хитрых манипуляций командой XOR с байтом Z шифруется байт информации, после чего счетчик инкрементируется, и все повторяется сначала.

Как формируются таблицы? - Не знаю (лень было выяснять). Кстати, таблиц, на самом деле, может оказаться и две, и одна (используются несколько раз на разных этапах). Расшифровывается все это аналогично (и той же процедурой), ибо команда XOR обратима. Если же у вас стоит какая-то другая версия Windows 95, то это дела не меняет. Не знаю уж, в чьих нездоровых мозгах могла появиться мысль использовать для шифрования команду xor byte ptr [eax+ebp],cl. Может запутать хотели? Но команда уникальна, такие команды в обычных программах еще поискать надо. Стало быть, ищем соответствующую ей комбинацию 30h, 0Ch, 28h - и все дела. Дальше - просто. Берем MSPWL32.DLL и, со смещения 511h (или там, где найдем), ставим 90h, 90h, 90h - команды NOP (пустая операция). И все, команда не выполняется!

Что при этом произойдет? Да ничего! Ничего страшного и даже не очень страшного. И даже никто ничего не заметит!!! Все останется как всегда, с одним лишь исключением: ВСЕ логины/пароли будут ВИДНЫ, так сказать, невооруженным глазом! Тут, правда, есть два неприятных момента. Во-первых, во время работы Windows вам не удастся подобным образом надругаться над их "святая святых": писать в этот файл нельзя. Значит, придется перегружаться в режиме эмуляции MS-DOS, а это лишнее время, которого может не быть. Во-вторых, а это еще хуже, вам надо будет стереть ВСЕ PWL'ы, иначе даже в Windows не пустят: а вот тут у законных пользователей могут возникнуть лишние вопросы и подозрения.

А можно проще? Без дизассемблеров и "насильственных действий"? Можно! И вот здесь я скажу то, за что (и за многое, увы, другое) Windows 95 иначе как MustDie по праву никто не называет.

Вы, наверное, думаете, что пароли расшифровываются только тогда, когда это надо, а затем "выжигаются" из памяти "каленым железом"? - Ну вот еще: Открытые пароли ПОСТОЯННО хранятся в системе - с момента ВХОДА в Windows данного пользователя и до момента его ВЫХОДА! Вот вам и безопасность. Но этого мало: они доступны ЛЮБЫМ приложениям через API Windows. И вот результат: появляется программа PWLVIEW, которая спокойно показывает вам "всю подноготную" вашей (или не вашей) машины. В том числе и DialUp, и сетевые пароли. Формат выдаваемой информации таков:

*Rna\1-е соединение\1-й логин 1-й пароль

*Rna\2-е соединение\2-й логин 2-й пароль

и так далее.

Да, это все хорошо, но она работает в окне DOS, а это: унизительно: мелкий шрифт, белым по черному: А нет ли еще чего-нибудь, ближе и роднее? Есть. Есть еще одна штука, PEEPER называется. Эта идет еще дальше. Пароль, как вы можете заметить, не показывается, вместо него звездочки. Так вот: запускаем PEEPER, запускаем соединение, наводим мышь на звезды и в окне PEEPER видим: правильно, открытый пароль.

Вы скажете: у меня нет ни времени, ни возможности ковыряться в чужой машине. Нельзя ли стянуть у соседа этот самый PWL, а потом, дома, разобрать? Можно, только это вам ничего не даст: не будет он у вас работать. Вернее, он ОДИН не будет. Нужно унести еще и USER.DAT. После чего дома "создать" User'а с именем из PWL, заменить свой USER.DAT на цельнотянутый и еще добавить в Windows тянутый PWL. После чего войти в Windows под соответствующим именем и: Дальше в игру вступает PWLVIEW.

Я все так и сделал, скажете вы, а вот тот User в Windows с паролем входил, а мне теперь не войти - пароля то я не знаю. Что делать? - Не беда! Есть способ проще! Уносим ТОЛЬКО USER.DAT! А теперь еще раз: Windows 95 - MustDie!

Как вам известно, кроме интерактивного доступа в Интернет, провайдеры предлагают еще и e-mail. Так вот, чтобы залезть в ваш почтовый ящик, в тот, что у вас на лестнице, нужен ключ (или лом). Чтобы залезть в ваш e-mail, нужен пароль (или виртуальный лом). И тут я скажу: ВСЕ ПОГОЛОВНО провайдеры в славном городе Санкт-Петербурге - MustDie! Пароль к POP3-ящику всегда тот же, что и DialUp!

Ну и что? - А вот что. Пароль e-mail находится не в PWL'е, а в USER.DAT, и зашифрован он не так сильно, вернее, почти совсем не зашифрован!

А это как? - А вот как! Метод "шифрования" напоминает UUE-кодирование, иначе говоря, из трех байтов делают четыре, или из 8 битов - 10.

Весь исходный пароль разбивается на части по три байта. В результирующей строке на один символ отводится 10 битов. Теперь: к каждому байту исходной строки прибавляется 30h, если сумма больше, чем 7Ah, то он становится равен 30h, а к паре 9 и 10 битов добавляется единица. Однако есть исключения. Если общая длина строки пароля не кратна трем, то она дополняется байтами 3Dh. Судя по всему, это 0Dh (конец строки)+30h. В конце строки 0Dh, 0Ah: стандартное завершение.

На мой взгляд, подобрать пароль вручную проще, чем написать соответствующую программу: не каждый же день вы эти пароли подбираете! Где находится пароль - см. ниже, оттуда его и берем. А принцип прост: запускаем Internet Mail, заходим в Сообщение ® Параметры ® Сервер. Запускаем REGEDIT переходим в HKEY_CURRENT_USER ® Software ® Microsoft ® InternetMail and News ® Mail ® POP3 ® "Ваш сервер": смотрим Password.

(*) Удаляем пароль в Internet Mail. Первый подбираемый символ влияет на первый и второй байты, второй - на второй и третий, третий - на третий и четвертый. Теперь: подбираем символ так, чтобы первый байт совпал с оригиналом, а второй или совпал, или был самый большой, но меньше оригинала. Аналогично для второго и третьего символов. С подбором третьего символа все четыре байта должны совпасть! Если нет - извините, вы ошиблись. Естественно, после каждой замены символа нажимаем "Применить". Результат контролируем REGEDIT'ом, переходя выше/ниже для обновления информации. Когда первые три символа подобраны, возвращаемся к (*) для следующих трех, и т. д. до конца. Разумеется, байт(ы) 3Dh подбирать не нужно! После некоторой тренировки на все это уходит меньше 15 минут.

А где это счастье хранится? И, кстати, ведь кроме логина и пароля еще многое нужно знать, а откуда, не звонить же провайдеру? - Не надо никому звонить! Все в нем, в USER.DAT.

HKEY_CURRENT_USER ® RemoteAccess ® Addresses: и мы имеем список подключений. Да, но там ничего не понятно, цифирь: Правильно! Выбираем байт, которого больше всего, и дешифруем им все остальные (обычный XOR). В результате в куче всякой ерунды получаем ASCII-строку с номером модемного телефона провайдера.

HKEY_CURRENT_USER ® RemoteAccess ® Profile ® "подключение" ® IP: со смещения 0Ch четыре байта задом наперед - первичный DNS, затем еще четыре - вторичный, и т. д.

HKEY_CURRENT_USER ® RemoteAccess ® Profile ® "подключение" ® User: логин.

HKEY_CURRENT_USER ® Software ® Microsoft ® Windows ® CurrentVersion ® InternetSettings ® ProxyServer: Proxy-сервер и порт.

HKEY_CURRENT_USER ® Software ® Microsoft ® InternetMail and News ® Mail:

® DefaultPOP3Server:

® DefaultSMTPServer:

® SenderEMail:

® Name:

® Organization: это все и так понятно.

® POP3 ® "POP3-сервер":

® Account: это понятно.

® Password: ну вот и он, родимый.

А что делать, если пользователь - мазохист? Не хранит пароли в компьютере, а вводит их каждый раз с клавиатуры? - И этому горю можно помочь. Существуют программы типа SPYWIN или HOOKDUMP. Они записывают все действия, производимые на компьютере. Достаточно подсадить одну из них и: если вам потом не лень будет разбирать те десятки килобайт, которые будут порождены этими шпионами. Естественно, их можно использовать и для других целей.

В заключение (да минует меня чаша сия!) могу сказать следующее: не берите и уж тем более не запускайте у себя всякие "крякеры Интернета", почерпнутые с BBS и из FIDO. Они могут "крякнуть" только информацию на вашем винчестере! Ибо тот, кто может взломать провайдера, никогда не будет распыляться на такую мелочь, а другие в лучшем случае могут подбирать пароли по словарю, а это бесполезно, в худшем - над вами просто хотят посмеяться или, того хуже, сделать вам гадость (прецеденты уже были).

За сим позвольте с вами проститься. Надеюсь, ненадолго. Следующую статью я планирую посвятить вопросам защиты программ от несанкционированного копирования, в частности, тем, которые связаны с аппаратными средствами (конкретно: ключи HASP).

© Alex V. Grachev. The Hell Software Laboratory (HellSoft). 26.02.1998.

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.