К
вопросу о
бесплатном
Интернете
Все
изложенное
ниже предназначено
только для
ознакомления
с возможной
опасностью и
ни в коем
случае не
должно быть
использовано,
если это
причинит
ущерб каким
либо
физическим
или
юридическим
лицам, так
как это
может
повлечь за
собой
администрати
вную или
уголовную
ответственность
в
соответствии
с
действующим
законодательством.
Для начала
небольшой
экскурс в
историю.
Во все
времена
были люди,
которые
старались
что-либо
утаить от
других. Но
были и
другие: те,
которые с
этим были
не согласны
и поэтому
всячески
старались
тайны
первых
узнать -
такова уж
человеческая
сущность. И
вот,
придумали
первые вход
в Интерне т
с паролем,
ибо денег
стоит, а
вторые
сразу
начали этот
пароль
отыскивать
всеми
возможными
и
невозможными
способами.
Итак,
стадия
первая.
Были
времена,
когда
пароль
пользователь
мог
выбирать
сам.
Безусловно,
с одной
стороны,
это было
удобно:
если сам
слово это
заветное
придумал,
то уж не
забудешь
никогда (если
только
пребывал в
этот момент
в здравом
уме и
твердой
памяти, но
это уже к
дел у не
относится).
Пароль же
выбирался
не просто
так: для
указанного
пользователя
он, обычно,
нес
определенную
смысловую
нагрузку. И
в этом было
слабое
место
данного
метода.
Теперь
только в
дешевых
фильмах
увидишь
некоего
гражданина,
копающегося
в мусорной
корзине
своей
будущей
жертвы, в
надежде
узнать
имена,
фамилии,
даты
рождения
всех
родственников
таковой
вплоть до
десятого
колена, а
также всех
их собак,
кошек, крыс,
хо мяков и
прочей
живности. И
не без
успеха! А
как же еще: а
что вам,
например,
первым
приходит на
ум? -
Конечно:
имя вашей (или
не вашей)
подруги или
кличка
вашей
собаки, ну,
или слово
какое,
непотребное
(но это уже
от
воспитания
зависит)!
Наиболее
про
двинутые
хакеры
начали даже
составлять
специальные
словари с
учетом
наиболее
часто
встречающихся
в паролях
слов.
Все это, в
конце
концов,
положило
конец
первой
стадии, и
началась
вторая:
теперь
пароль
выдает
компьютер,
то есть
генерирует
некоторую
псевдослучайную
последовательность
букв, цифр и
разных
знаков
препинания.
Хорошо-то
как стало:
"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,
которая
спокойно
показывает
вам "всю
подноготную"
вашей (или
не вашей)
машины. В
том числе и Dial
Up, и сетевые
пароли.
Формат
выдаваемой
информации
таков:
*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, заходим
в Сообщение
& reg;
Параметры ®
Сервер.
Запускаем
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).
Назад
|