Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #48, НОЯБРЬ 2004 г.

Немой укор за компьютерный хардкор

Крис Касперски

Спецвыпуск: Хакер, номер #048, стр. 048-058-8


Более актуальным представляется вопрос распространения обновлений по интернету. Но почему бы просто не выкладывать обновления на такой-то сервер? Пусть удаленные приложения (например, те же черви) периодически посещают его, вытягивая свежачок… Ну и сколько такой сервер просуществует? Если он не рухнет под натиском бурно размножающихся червей, его закроет разъяренный администратор. Поэтому тут необходимо действовать строго по распределенной схеме.

Простейший алгоритм выглядит так: пусть каждый червь сохраняет в своем теле IP-адреса заражаемых машин. Тогда "родители" будут знать своих "детей", а "дети" помнить "родителей". Впрочем, обратное утверждение неверно. "Дедушки" и "бабушки" знают лишь своих непосредственных "детей", но не имеют никакого представления о «внуках», если, конечно, «внуки» явным образом не установят с ними соединение и не сообщат свои адреса… Главное – рассчитать интенсивность обмена информацией так, чтобы не сожрать весь сетевой трафик. Тогда, обновив одного червя, мы сможем достучаться и до всех остальных, причем противостоять этому будет очень и очень непросто. Распределенная система обновлений не имеет единого координационного центра и, даже будучи уничтоженной на 99,999%, сохраняет свою работоспособность.

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

Главное, иметь идеи и уметь держать компилятор с отладчиком в руках. Все остальное – вопрос времени.

Это все?

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

Самомодифицирующийся код возможен только на компьютерах Фон-Неймоновской архитектуры (одни и те же ячейки памяти в различное время могут трактоваться и как код, и как данные).

Представители процессоров племени Pentium в действительности построены по Гавардской архитектуре (код и данные обрабатываются раздельно) и Фон-Неймоновскую они только эмулируют, поэтому самомодифицирующийся код резко снижает их производительность.

Фанаты Ассемблера уверяют, что он поддерживает самомодифицирующийся код. Это неверно! У Ассемблера нет никаких средств для работы с самомодифицирующимся кодом, кроме директивны DB. Такая, с позволения сказать, "поддержка" есть и в Си!

Для написания самообновления по интернету необходимо иметь представление и о PHP. Знание функций wininet.dll тоже не повредит.

Исходники и иллюстрации из статьи ты можешь видеть и на диске.

Назад на стр. 048-058-7  Содержание