Электронная библиотека

Хакер


Хакер

Подари себе Интернет соседа!

Xakep Online -> Журнал, номер #003, стр. 003-034-1


Автор: Василий

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

Вступление

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

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

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

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

Интимные подробности

Где же хранятся пароли в Windows 95/98? Известно где, зашифрованные пароли в Windows 95/98 хранятся в основном каталоге, в файлах с расширением PWL. С учетом того, что не только "у нас здесь", но и "у них там" бывают персональные компьютеры коллективного пользования, да и сети локальные местами встречаются (правда, редко), на каждого пользователя заводится свой PWL. Кстати, название файла соответствует логину данного юзверя. Эти файлы, в принципе, зашифрованы достаточно прилично. Если кому-либо интересно, то, взяв в руки какой-нибудь дизассемблер (HIEW, QVIEW), можно посмотреть процедуру шифрования. Она находится в файле MSPWL32.DLL. Там все очень накручено. Имеется счетчик (назовем его N) от нуля до "сколько надо". Имеются три таблицы. В соответствии со счетчиком N берется байт из первой таблицы (X). По смещению X+N, урезанному до 8 бит, из второй таблицы берется другой байт (Y). Затем по адресу X+Y, опять же урезанному до 8 бит, из третьей таблицы берется третий байт (Z). После столь хитрых манипуляций командой XOR с байтом Z шифруется байт информации, после чего счетчик инкрементируется, и все повторяется сначала (как тебе, а?). Как формируются сами таблицы? Не знаю (мне было лень выяснять). Расшифровывается все это аналогично (той же процедурой), ибо команда XOR обратима. То, какие Винды у тебя стоят - значения не меняет. Не знаю уж, в чьих нездоровых мозгах могла появиться мысль использовать для шифрования команду xor byte ptr [eax+ebp],cl. Может, запутать хотели? Но команда уникальна, такие команды в обычных программах еще поискать надо. Стало быть, ищем соответствующую ей комбинацию 30h, 0Ch, 28h - и все дела. Дальше - просто. Берем MSPWL32.DLL и, со смещения 511h (или там, где найдем), ставим 90h, 90h, 90h - команды NOP (пустая операция). И все, команда не выполняется! Что при этом произойдет? Да ничего! Ничего страшного и даже не очень страшного. И даже никто ничего не заметит!!! Все останется как всегда, с одним лишь исключением: ВСЕ логины/пароли будут ВИДНЫ, так сказать, невооруженным глазом! Тут, правда, есть два неприятных момента. Во-первых, во время работы Windows тебе не удастся подобным образом надругаться над их "святая святых": писать в этот файл нельзя. Значит, придется перегружаться в режиме эмуляции MS-DOS, а это лишнее время, которого может не быть. Во-вторых, а это еще хуже, тебе надо будет стереть ВСЕ PWL'ы, иначе даже в Windows не пустят: а вот тут у законных пользователей могут возникнуть лишние вопросы и подозрения.

Содержание  Вперед на стр. 003-034-2