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

Нет приятней и полезней венерических болезней!

Dr.Klouniz

Спецвыпуск Xakep, номер #035, стр. 035-066-2


Например, интересен способ поиска доступных файлов с помощью… FAR the File Manager. Так вот, ты никогда не задумывался, зачем в корне диска находится файл «Tree.far»? А ведь это – обычный текстовый файл с полным списком всех директорий и поддиректорий текущего диска. Остается одно – открыть этот файл и построчно (процедуру ReadLn помнишь? :)) искать в каждой директории exe-файлы.

Слава богу, для этой цели в WinApi есть функции FindFirstFile/FindNextFile, возвращающие тебе указатель на файл, соответствующий критериям (c:\*.exe – чем не критерий?). Создатели языков программирования создали свои варианты этой функции, например, для Delphi это – FindFirst. Так, например, может выглядеть циклический поиск всех exe-файлов в заданной папке:

result:= FindFirst ('*.exe',faAnyFile,sr);

WHILE Result= 0 DO

begin

//Процедура заражения должна быть здесь ;)

FindNext (Sr);

end;

Ну, допустим, файл мы нашли Что дальше? А дальше - все зависит от алгоритма заражения, выбранного автором. Давай посмотрим на самые популярные из них.

Вирусы – оверрайтеры (high level language overwrite)

Можно ли назвать это заражением, я не знаю, потому что эти злодеи просто перезаписывают прогу-жертву своим телом. Как это делается? API- функция CreateFile или дельфийская ReWrite (var F: File, обнуляющая существующий файл) помогут тебе в этом. Размножение виря происходит обычно с помощью функции CopyFile, поскольку ничего большего там и не требуется.

В итоге - при попытке запуска «проги» юзер ловит сообщение в духе «stack overflow» или “seek error in drive C”. То есть – правдоподобное объяснение, почему прога работать не будет. А вот вирус – работает и с большим удовольствием портит другие файлы своим присутствием. Писали эти вири в основном злобные школьники, поэтому, помимо своей деструктивной деятельности, они выводили длинные и зачастую оскорбительные тексты. Больше ничего примечательного в них нет, сейчас они почти не встречаются, поэтому я советую тебе о них забыть :).

Вирусы – компаньоны (high level language companion)

Это более современный способ, существующий, однако, уже лет 15. В этом случае вирус переименовывает найденный файл, снабжает его атрибутами только чтение+скрытый+системный, а оригинальное имя присваивает себе. В итоге юзер, запуская, скажем, iexplore.exe, запускает вирус, который, сделав свое дело, запускает оригинальный файл, и юзер даже не замечает, что файл заражен. В старые времена эти вирусы поступали чуть по-другому – брали имя файла-жертвы и создавали свою копию, но с расширением .COM. Если юзер набирал в командной строке только имя файла (без расширения), то дос, который первым ищет com-фай, запускал сначала вирус.

«Почему же этот алгоритм жив до сих пор, раз все лечение заключается в обратном переименовании файла-жертвы?» - спросишь ты и будешь абсолютно прав.

Действительно, описанный мной способ легко обратим, но так никто и не делает :). Обычно вирус шифрует первые 512 байт или весь исходный файл – допустим, взаимообратимыми командами, вроде XOR/XOR, ADD/SUB, INC/DEC и т.п., но иногда встречаются и алгоритмы, способные вогнать в тоску самого И.Данилова :). Таким образом, этот способ является весьма эффективным и в плане надежности – нет необходимости читать и писать из работающего файла, что чревато очень подозрительными ошибками. А когда текстовый редактор на фоне полного здоровья вдруг жалуется на невозможность что-то куда-то записать, это наводит на соответствующие мысли.

Назад на стр. 035-066-1  Содержание  Вперед на стр. 035-066-3