2 июня 1998, #27
Новость от 4 июня: crack'нутый da.ru. Неуспевшие заценить могут посмотреть сохраненную версию.
Я опять вынужден начать этот обзор с клубной темы. Надеюсь им ее исчерпать - писать об этом надоело уже самому.
С общедоступной клубной доской происходит неприятная вещь - половина прошедших тест обсуждает его и взлом доски, половина спрашивает, чего же дальше делать. При этом процесс как бы подменяет содержание. Ведь тест сам по себе не очень-то и ценен. Он сознательно сделан достаточно простым, чтобы его прохождение не требовало напряжения всех душевных сил, Он играет чисто прикладную роль - обеспечить некоторый минимальный уровень знаний у людей, желающих писать на клубной доске. Проходить его только ради самоутверждения - так себе удовольствие.
Для желающих пройти дальше, получить логин с паролем и доступ в закрытую зону, готовятся более сложные задания. То задание, которое предлагается сейчас - лишь временная мера, то, что оказалось в тот момент под рукой.
Приглашаю всех сомневающихся в истинности соотношения IE/NN на нашей главной странице посмотреть независимую статистику по сайту. Она оценивает заходы на несколько страниц за день, мои же счетчики обсчитывают только главную страницу и последний раз сбрасывались пару месяцев назад, так что возможны небольшие расхождения, но общая картина та же - существенный перевес IE. Схожие результаты дает и общая статистика Ranker'а, в которой фигурирует гораздо больше сайтов. IE:NS=57:43%. Пишу здесь, потому как надоели регулярные обвинения в подсуживании IE.
Ну а личные пристрастия я никогда не скрывал. С точки зрения web-мастера мне гораздо симпатичнее программа, чье творческое переосмысление html-кода не мешает ей делать в точности то, что сказано. Программа, которая, к примеру, не бросается менять явно прописанные размеры фрейма на несколько пикселей в ту или иную сторону в зависимости от того, максимизировано ли ее окно или нет, от размера экрана, от размера окна и вообще от желания своей несуществующей левой ноги.
Такие дела.
Вам никогда не хотелось написать свой дебаггер ? Задачка, между прочим, сугубо практическая. Представим такую чисто гипотетическую ситуацию, когда вам в руки попала во всех отношениях приятная программка, обладающая одним ма-аленьким недостатком - ну не хочет она общаться с вами более 30 дней, а поиск по Astalavist'е не дает никакого результата. Программка достаточно умная, отслеживающая банальный перевод даты, причем записывающая критическую информацию в зашифрованном виде в реестр, Связываться с расшифровкой лень, после удаления информации программа просто отказывается работать, переустановка ничего не дает - видимо в многостраничном логе NTRegMon и NTFileMon была пропущена строчка, а переустанавливать все это хозяйство по нескольку раз тоже как-то ломает. (Кстати, NT Internals, где лежали эти очень полезные утилиты, переименовались в System Internals. Зайдя туда, нашел много нового - например, драйвер fat32 для NT, утилитку, представляющую собой текстовый шелл для NT, который можно загрузить с дискетки. Правда предлагается версия с ограниченными возможностями).
Но вот неожиданно обнаруживается приятная вещь - код программы настолько прост, что искомый байт, который отделяет вас от счастливого момента работы, находится не то, что с помощью тяжелой артиллерии типа SoftIce или W32Dasm, но просто с помощью встроенного отладчика от Visual C. Радостно правим заветный байт в файле и запускаем... Приходит почему-то This program has performed.... Что за черт ? Может, байт не тот ? Проверяем - тот. Тут приходит понимание, что программа считает свою контрольную сумму, причем быстро выясняется, что она не просто проверяется, а фигурирует в вычислениях. Можно попробовать обойти и это, но обидно - в отладчике же все работает. Впору плюнуть и просто запускать программу из дебаггера.
А почему бы и нет ? Берем справочник по Win32 API и обнаруживаем, что все необходимые функции там прямо таки на блюдечке. Далее алгоритм простой. Загружаем в suspended mode, правим нужный байт, и запускаем ее. И все ? Все!
#include <windows.h> int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory (&si, sizeof(si)); si.cb = sizeof(si); //Загружаем... CreateProcess(NULL, "XXX.exe", NULL, NULL, FALSE, DEBUG_PROCESS|CREATE_SUSPENDED, NULL, NULL, &si, &pi); BYTE n = 0xeb; DWORD nn; //Подправляем... WriteProcessMemory(pi.hProcess, LPVOID(0x408a7a), &n, 1, &nn); //Запускаем... ResumeThread(pi.hThread); DEBUG_EVENT de; while(1) { WaitForDebugEvent(&de, 0); if(de.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT) { break; } ContinueDebugEvent(de.dwProcessId, de.dwThreadId,DBG_CONTINUE); } return 1; }
Сердце "дебаггера" - цикл с вызовом WaitForDebugEvent. В нашем случае нас интересует только момент завершения приложения, но можно отслеживать и breakpoint'ы, всякие исключительные ситуации, запуск новых процессов, потоков и т.п. А ведь можно прицепиться и к уже запущенному процессу... В общем, есть где развернуться.
Наводку на следующую новость получил в процессе написания обзора. Спасибо тезке, подкинувшему ссылку. Counterpane Systems, консалтинговая компания, специализирующаяся в компьютерной безопасности и криптографии (в одном из писем, обсуждавших эту новость, ее специалистов просто назвали "хакерами в костюмах и галстуках"), 1 июня опубликовала пресс-релиз с информацией о проведенном криптоанализе Microsoft'овской реализации протокола PPTP и о дырках, при этом найденных. Вкратце, о чем, собственно речь.
PPTP расшифровывается как point-to-point tunneling protocol - средство организации виртуальных сетей путем безопасного соединения локальных сетей, скажем, через Internet. Грубо говоря, межсетевой трафик шифруется и упаковывается внутрь пакетов, пересылаемых открыто через Internet (причем внутренний протокол этих сетей - вовсе не обязательно tcp/tp, им может быть, например, ipx). Довольно удобная и теоретически безопасная система. Misrosoft очень гордилась, когда ее реализация впервые появилась в NT 4.0.
В отчете подчеркивается, что найденные дырки относятся исключительно к реализации. Обнаружено пять серьезных недостатков реализации и куча более мелких. Специалисты отмечают, что подобные ошибки нельзя назвать иначе как любительскими, и что компетентная криптографическая экспертиза предотвратила бы выпуск продукта в этом виде.
Ну и напоследок - еще одно упражнение на сравнение. "По WWW - без следов" номер раз и номер два. Лично меня умилил копирайт в конце второй страницы. Оригинал, кстати, уже успел пополниться новыми сведениями.
P.S. от 4 июня. События развивались очень быстро. Страница еще успела попасть на Доску Позора ЕЖЕй, после чего прожила менее суток.
« | » | |
|
|