Не знаю уж, в чьих нездоровых мозгах могла появиться мысль использовать для шифрования команду xor byte ptr [eax+ebp], cl. Может, запутать хотели? Но команда уникальна, такие команды в обычных программах еще поискать надо. Стало быть, ищем соответствующую ей комбинацию 30h, OCh, 28h – и все дела. Дальше – просто. Берем MSPWL32. DLL и со смещения 511 h (или там, где найдем) ставим 90h, 90h, 90h – команды NOP (пустая операция). И все! – команда не выполняется! Что при этом произойдет? Как ни странно, ничего страшного и даже не очень страшного. И даже никто ничего не заметит!!! Все останется как всегда, с одним лишь исключением: ВСЕ логины/пароли будут видны, так сказать, невооруженным глазом!
Тут, правда, есть два неприятных момента. Во-первых, во время работы Windows вам не удастся подобным образом надругаться над их «святая святых»: писать в этот файл нельзя. Значит, придется перегружаться в режиме эмуляции MS-DOS, а это лишнее время, которого может не быть. Во-вторых, а это еще хуже, вам надо будет стереть все PWL’bi, иначе даже в Windows не пустят: а вот тут у законных пользователей могут возникнуть лишние вопросы и подозрения.
А можно проще? Без дизассемблеров и «насильственных действий»? Можно! И вот здесь я скажу то, за что
(и за многое, увы, другое) Windows 95 иначе, как MustDie, по праву никто не называет. Вы, наверное, думаете, что пароли расшифровываются только тогда, когда это надо, а затем «выжигаются» из памяти «каленым железом»? Ну вот еще… Открытые пароли ПОСТОЯННО хранятся в системе – с момента ВХОДА в Windows данного пользователя и до момента его ВЫХОДА! Вот вам и безопасность. Но этого мало: они доступны ЛЮБЫМ приложениям через API Windows. И вот результат: появляется программа PWLVIEW, которая спокойно показывает вам «всю подноготную» вашей (или не вашей) машины. В том числе и DialUp, и сетевые пароли. Формат выдаваемой информации таков: *Rnal-e соедине-ние1-й логин 1-й пароль *Rna2-e соединение2-й логин 2-й пароль и т. д.
Да, это все хорошо, но она работает в окне DOS. Но есть еще одна штука, PEEPER называется. Эта идет еще дальше. Пароль, как вы можете заметить, не показывается, вместо него звездочки. Так вот: запускаем PEEPER, запускаем соединение, наводим мышь на звезды и в окне PEEPER видим… правильно, открытый пароль. Вы скажете: у меня нет ни времени, ни возможности ковыряться в чужой машине, нельзя ли стянуть у соседа этот самый PWL, а потом дома разобрать? Можно, только это вам ничего не даст: не будет он у вас работать. Вернее, он ОДИН не будет. Нужно унести еще и USER. DAT. После чего дома «создать» User’a с именем из PWL, заменить свой USER. DAT на цельнотянутый и еще добавить в Windows тянутый PWL. После чего войти в Windows под соответствующим именем и… Дальше в игру вступает PWLVIEW. Я все так и сделал, скажете вы, а вот тот User в Windows с паролем входил, а мне теперь не войти – пароля-то я не знаю. Что делать? Не беда! Уносим ТОЛЬ-
КО USER. DAT! А теперь еще раз: Windows‘95 – MustDie! Как вам известно, кроме интерактивного доступа в Интернет, провайдеры предлагают еще и e-mail. Так вот, чтобы залезть в ваш почтовый ящик, в тот, что у вас на лестнице, нужен ключ (или лом). Чтобы залезть в ваш e-mail, нужен пароль (или виртуальный лом). И тут я скажу откровенно: мало кто из отечественных провайдеров заслуживает доброго слова! Пароль к РОРЗ-ящику всегда и у всех тот же, что и DialUp! «Ну и что?» – спросите вы. А дело в том, что пароль e-mail находится не B’PWL’e, а в USER. DAT, и зашифрован он не так сильно, вернее, почти совсем не зашифрован!
Дело в том, что метод «шифрования» сильно UUE-кодирование напоминает, иначе говоря, из трех байтов делают четыре или из восьми битов – десять. Весь исходный пароль разбивается на части по три байта. В результирующей строке на один символ отводится 10 битов. Теперь к каждому байту исходной строки прибавляется ЗОН, если сумма больше, чем 7Ah, то он становится равен ЗОН, а к паре 9 и 10 битов добавляется единица.
Есть исключения. Если общая длина строки пароля не кратна трем, то она дополняется байтами 3Dh. Судя по всему, это ODh (конец строки)+30(1). В конце строки ODh, OAh: стандартное завершение. На мой взгляд подобрать пароль вручную проще, чем написать соответствующую программу: не каждый же день вы эти пароли подбираете! Где находится пароль – смотрите ниже, оттуда его и берем. А принцип прост: запускаем Internet Mail, заходим в Сообщение. Параметры. Сервер. Запускаем REGEDIT и переходим в HKEY_CURRENT_USER?Software?Microsoft?In-ternetMail and News?Mail?POP3?‹Bam сервер›: где и смотрим Password. (*) Удаляем пароль в Internet Mail. Первый подбираемый символ влияет на первый и вто-
рой байты, второй – на второй и третий, третий – на третий и четвертый. Теперь подбираем символ так, чтобы первый байт совпал с оригиналом, а второй или совпал, или был самый большой, но меньше оригинала. Аналогично для второго и третьего символов. С подбором третьего символа все четыре байта должны совпасть! Если нет – извините, вы ошиблись.
Естественно, после каждой замены символа нажимаем «Применить». Результат контролируем REGEDITOM, переходя выше/ ниже для обновления информации. Когда первые три символа подобраны, возвращаемся к (*) для следующих трех, и так далее до конца. Разумеется, байт(ы) 3Dh подбирать не нужно! После некоторой тренировки на все это уходит меньше 15 минут. А где это счастье хранится? И, кстати, ведь кроме логина и пароля еще многое нужно знать, а откуда? Не звонить же провайдеру? – не надо никому звонить! Все в нем, в USER. DAT.
HKEY_CURRENT_USER?RemoteAccess?Addresses: и мы имеем список подключений. Да, но там ничего не понятно. Правильно! Выбираем байт, которого больше всего, и дешифруем им все остальные (обычный XOR). В результате, в куче всякой ерунды получаем ASCII-строку с номером модемного телефона провайдера.
HKEY_CURRENT_USER?RemoteAccess?Profile -Хподключение›?1Р: со смещения ОСЬ четыре байта задом наперед – первичный DNS, затем еще четыре – вторичный и т. д.
HKEY_CURRENT_USER?RemoteAccess?Profile -› ‹подключение›?изег: логин. HKEYCURRENTUS-ER?Software?Microsoft?Windows -› CurrentVersion?In-ternetSettings?ProxyServer: Proxy- сервер и порт. Н К Е Y_CURRENT_USER?Software?Microso ft?Internct Mail and News? Mail: ?DefaultPOP3Ser-
ver: ?DefaultSMTPServer: ?SenderEMail: ?Name: ?Organi-zation: это все и так понятно.
7РОРЗ -г ‹РОРЗ-сервер›: ?Account: ЭТО ПОНЯТНО.
?Password: Ну вот и он!
А что делать, если пользователь – мазохист и не хранит пароли в компьютере, а вводит их каждый раз с клавиатуры? И этому горю можно помочь. Существуют программы типа SPYWIN или KEYBOARD SPY. Они записывают все действия, производимые на компьютере. Достаточно подсадить одну из них и… если вам потом не лень будет разбирать те десятки килобайт, которые будут порождены этими шпионами. Естественно, их можно использовать и для других целей.
Специально привожу пример с последовательностью действий для устаревшей «Винды». Поверьте, в новых версиях (2000 и ХР) тоже можно поломать и прочитать пароли.
ЧАСТЬ ВТОРАЯ. ЗАЩИТА
Глава 5. Защита от сетевых атак
Безопасность информации компьютерных сетей и отдельных компьютеров достигается проведением единой политики защитных мероприятий, а также системой мер правового, организационного и инженерно-технического характера.
При разработке необходимого уровня защиты информации в сети производится учет взаимной ответственности персонала и руководства, соблюдения интересов личности и предприятия, взаимодействия с правоохранительными органами. Обеспечение безопасности информации достигается правовыми, организационно-административными и инженерно-техническими мерами.
Защита корпоративных сетей отличается от защиты компьютеров домашних пользователей (хотя защита индивидуальных рабочих станций – неотъемлемая часть защиты сетей). И прежде всего потому, что этим вопросом занимаются (точнее, должны) грамотные специалисты по компьютерной безопасности. К тому же основа системы безопасности корпоративной сети – достижение компромисса между удобством работы для конечных пользователей и требованиями, предъявляемыми техническими специалистами.
Компьютерную систему можно рассматривать с двух точек зрения: видеть в ней лишь пользователей на рабо-
чих станциях, а можно учитывать только функционирование сетевой операционной системы. Можно считать компьютерной сетью и совокупность проходящих по проводам пакетов с информацией.
Существует несколько уровней представления сети. Точно так же можно подходить и к проблеме сетевой безопасности – на разных уровнях. Соответственно, методы защиты будут разными для каждого уровня. Чем больше уровней защищено, тем надежнее защищена и система в целом.
Первый, самый очевидный и самый трудный на практике, путь – обучение персонала поведению, затрудняющему сетевую атаку. Это вовсе не так просто, как кажется на первый взгляд. Необходимо вводить ограничения на использование Интернета, причем пользователи часто не представляют, чем эти ограничения обусловлены (у них нет такой квалификации), поэтому всячески пытаются нарушать существующие запреты. Тем более что запреты должны быть четко сформулированы. Например, совет не использовать клиентские приложения с недостаточно защищенным протоколом обычный пользователь вряд ли поймет, а вот указание не запускать на своем компьютере ICQ поймет почти наверняка и будет весьма бурно протестовать. Не случайно говорят, что ICQ – цветок на могиле рабочего времени.