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

Найди врага в своем доме!

Deeoni$

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


Размер паразита достигает десятков килобайт, поэтому его активность не должна пройти незамеченной у опытного пользователя. Можно сравнить файл с оригиналом или воспользоваться дисковыми ревизорами типа ADinf.

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

1. Найти второе вхождение символов MZ (первые будут в самом начале файла)

2. По смещению 3Ch от второго MZ проверить PE-сигнатуру

3. Уточнить еще несколько уникальных значений для PE-заголовка (например, названия секций, или сочетание NT Header Size, Object align, File align)

4. Скопировать участок от MZ до конца файла поверх кода вируса

5. Обрезать файл до его натурального размера, то есть до второго MZ

Выполнение третьего пункта не обязательно, но желательно, чтобы удостовериться в том, что ты нашел именно PE-заголовок. Рассказывать об особенностях виндового формата я не буду, так как этому можно посвятить целую книгу, но на диск мы постарались выложить несколько мануалов на эту тему. Как ты заметил, это был самый простой вариант, ну а более сложные вирусы надо основательно изучать, чтобы не искалечить .ехе’шники. Путь для тех, кто не любит трудностей, - это отослать паразита в антивирусную лабораторию.

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

Назад на стр. 048-074-5  Содержание  Вперед на стр. 048-074-7