для этой цели трассировку зараженной программы с помощью отладчи-
ка. Определив сигнатуру, можно быстро выявить все зараженные про-
граммы, и тем самым, прекратить дальнейшее размножение вируса.
Имеется ряд программ этого типа (VL, VIRSCAN, NEADET). Например,
программа VL (прил.5) обеспечивает поиск в поддереве или файле до
50 строк длиной до 15 символов. Строки задаются пользователем в
текстовом или 16-ричном формате. Дамп программы, в которой найдена
строка, можно просмотреть на экране. Программа NEADET, написанная
И.В.Суворовым, позволяет использовать в качестве входных данных
приведенные в прил.1-4 таблицы и специальный алгоритм быстрого по-
иска строк. Дамп программы, в которой найдена строка, можно про-
смотреть на экране.
10.4.2.1. Использование Norton Utilities и PCTools
как универсальных детекторов вирусов
Как уже указывалось, обеспечиваемая PCTools и Norton Utilities
возможность выполнения контекстного поиска как по отдельным фай-
лам, так и по диску в целом, является полезным и надежным инстру-
ментом выявления зараженных файлов. В особенности полезна возмож-
ность выполнения глобального контекстного поиска по диску в целом.
При правильном выборе строки для контекстного поиска этот способ
является хотя и довольно медленным, но исключительно надежным ме-
тодом определения всех зараженных вирусом файлов. Следует отме-
тить, что Norton Utilities выполняет контекстный поиск примерно
вдвое быстрее, чем PCTools.
10.4.2.2. Поиск текстовых сигнатур
При поиске Т-сигнатур бывает полезна программа TS из версии 4.5
пакета утилит П.Нортона. Она позволяет искать заданный текст в
файле или по всему диску, например:
TS C:\*.COM vacsina /S /LOG
TS C:\*.EXE eddie /S /LOG
В программе можно использовать ряд ключей:
/LOG - печатать или выводить результаты в файл;
/S - просматривать также и подкаталоги;
/T - выводить только окончательные результаты;
/D - искать по всему диску (отменяет /S);
/E - искать по стертым файлам;
/CS - различать малые и большие буквы.
10.4.3. Методика применения фагов
Следует отметить, что программы-фаги, обеспечивающие возможность
восстановления исходного состояния программы, зараженной вирусом,
хотя и являются наиболее популярным типом антивирусных программ,
не являются основным средством защиты от вирусов. Наблюдаемое сей-
час повсеместная погоня за последними версиями фагов, не совсем
оправдана. Основные усилия должны быть направлены на предупрежде-
ние заражения (грамм профилактики стоит килограмма лекарств).
Отметим, что программы, которые мы для краткости называем "фага-
ми", по сути представляют собой комбинацию типа "детектор + фаг".
Поэтому при их работе возможны как ошибки, связанные с несовершен-
ством детектора, так и ошибки при "выкусывании" вируса из програм-
мы. Для фага неверное "выкусывание" вируса из зараженной программы
("больной умер на операционном столе") может быть обусловлено как
ложным срабатыванием детектора, так и недостаточным учетом возмож-
ных вариантов заражения программы. При этом фаг уничтожает работо-
способную программу (хотя с этим утверждением можно не соглашать-
ся, но по мнению автора зараженная программа все же лучше, чем ни-
какая). Поэтому, при применении фагов для файловых вирусов целесо-
образно разделять процесс диагностирования и процесс "лечения".
Кроме того, распространяющиеся сейчас комплексные фаги на не-
сколько вирусов (полифаги) являются несколько менее удачной идеей,
чем полидетекторы, поскольку жесткая привязка фага к конкретному
"встроенному" детектору делает его "заложником" качества последне-
го, а отсутствие параметров настройки на вирус - чувствительным к
мутациям вируса, затрагивающим используемую сигнатуру. Единствен-
ным фагом, где была сделана попытка преодолеть этот недостаток,
является полифаг NEATFAG В.В.Пономаренко. В нем фаг на каждый ви-
рус выполнен в виде отдельного загружаемого модуля, что позволяет
добавлять модули, "выкусывающие" новые вирусы отдельно, без пере-
делки уже имеющейся части фага. Однако возможность замены или до-
бавления сигнатур в существующей версии NEATFAG отсутствует.
Процесс дезактивации рекомендуется разделить на ряд этапов c
тем, чтобы не повредить файловую систему во время ее выполнения.
Можно рекомендовать следующие этапы указанного процесса:
загрузиться с защищенной от записи дискеты, используя "холодную"
(кнопкой RESET или выключением питания), а не "теплую" (нажатием
клавиш CTRL-ALT-DEL) перезагрузку;
найти хотя бы одну зараженную программу с помощью батареи детек-
торов;
проверить правильность идентификации типа вируса, визуально про-
смотрев дамп зараженной программы;
составить список зараженных программ и распечатать этот список;
выгрузить зараженные программы на дискету и обработать их фагом;
проанализировать результаты выкусывания;
проверить работоспособность "леченных" программ и выгрузить их.
Если COMMAND.COM заражен, то используйте его размер и дамп для
определения типа вируса. Если нет, то поиск зараженной программы
можно выполнить разными способами, но обязательно перегрузившись с
защищенной дискеты. Если используется программа-ревизор и ведется
архив каталогов файловой системы, то целесообразно воспользоваться
им. Если нет, то проще всего использовать рекомендованную выше ба-
тарею полидетекторов (только перегрузившись с защищенной дискеты
!), с помощью которой возможно удастся определить зараженные или
хотя бы "подозрительные" файлы (некоторые детекторы используют для
этой цели эвристические приемы).
Составьте список зараженных программ с помощью детектора и про-
верьте его полноту глобальным контекстным поиском (см. ниже). Все
зараженные программы выгрузите на дискету, сделайте ее копию и
экспериментируйте только на ней. Если имеется возможность, то вы-
грузите из архива оригинальные копии программ на другую дискету
или на винчестер. После прогона фага опять распечатайте оглавле-
ние, сравните длины зараженного и "вылеченного" файлов и визуально
просмотрите дампы программ. Для тех программ, данные о длинах ко-
торых сохранились (например, в базе данных ревизора) или ориги-
нальные копии которых имеются в архиве, проверьте, правильно ли
восстановлена длина. Если такой возможности нет, то предварительно
проверьте работоспособность "леченной" программы, а только после
этого сгрузите ее обратно на винчестер. Помните, что фаг может за-
портить программу. И наконец, с помощью детектора и глобального
контекстного поиска проверьте полученные результаты: не осталось
ли на диске зараженных программ.
Следует отметить, что предложенные шаги в полном объеме необхо-
димы только при работе с новым, еще недостаточно изученным вирусом
или "самодельным" фагом (например, изготовленным по методике, опи-
санной во второй части данной работы). Для хорошо изученных виру-
сов, для которых существуют достаточно надежные и проверенные фа-
ги, большинство из этих шагов можно опустить.
10.4.4. Методика использования резидентных сторожей
Современные программы-сторожа СHECK21, -D1, -D2, -D3 и др. эф-
фективны против практически всех типов файловых вирусов. Другими
устаревшими, но все еще распространенными сторожами являются
MaceVaccine и ANTI4US2. Возможности этих программ уже не соответ-
ствуют уровню написания современных файловых вирусов, поэтому при-
менять их не рекомендуется. Использование сторожей обязательно при
первых запусках нового программного обеспечения, когда возможно не
только заражение вирусом, но и немедленное срабатывание троянской
компоненты.
Следует отметить, что непрерывные ответы на запросы, выдаваемые
сторожами, не только снижают эффективность работы, но и подрывают
саму обеспечиваемую ими защиту (это относится, прежде всего, к
устаревшим сторожам типа FluShot Plus, MaceVaccine, ANTI4US2).
Частая выдача запросов на разрешение тех или иных действий неиз-
бежно приводит к тому, что пользователь начинает отвечать на них
механически, тем самым сводя на нет обеспечиваемую ими степень за-
щиты. Современные сторожа должны иметь "таблицу свойств" програм-
мы, позволяющую блокировать выдачу запросов на разрешение тех или
иных операций от соответствующих программ. Например, если програм-
ма FORMAT пытается выполнять форматирование диска A, то запрос на
разрешение этого действия следует блокировать.
Степень обеспечиваемой сторожами защиты не стоит переоценивать.
Некоторые типы вирусов обходят сторожей, непосредственно обращаясь
к BIOS или используют сплайсинг для получения управления по преры-
ванию 21. Поэтому их применение должно сочетаться с применением
других средств защиты. Например, при использовании сторожей
VIRBLK, MaceVaccine, ANTI4US2, не контролирующих целостность сис-
темных файлов, в AUTOEXEC.BAT следует включить соответствующую
программу контроля (например, VACINE, СП 1-2).
Следует отметить, что сторожа могут интерферировать с резидент-
ными программами, а также вызывать срабатывание фагов, проверяющих
содержимое оперативной памяти. Последние часто принимают сторожа
за вирусы.
10.4.5. Методика использования ревизоров
Программы-ревизоры должны входить в арсенал каждого пользователя
и регулярно запускаться в каждом сеансе работы с ЭВМ. Существуют
два основных типа программ-ревизоров: пакетные (например, DLI) и
резидентные. Последние выполняют подсчет контрольных сумм "на ле-
ту", т.е. при загрузке программ на выполнение. Несколько устарев-
ший сторож FluShot Plus очень полезен тем, что включает резидент-
ный ревизор, позволяющий "на лету" подсчитывать контрольную сумму
для загружаемых файлов. К сожалению, отдельного резидентного реви-
зора, обеспечивающего подсчет контрольной суммы "на лету", перед
передачей файлу управления, пока нет.
Помимо специальных программ, в качестве ревизоров могут приме-
няться обычные программы сравнения файлов, например входящие в MS
DOS программы FC и COMP. Этот способ полезен для контроля целост-
ности наиболее важных файлов и предполагает наличие переименован-
ной и "хорошо спрятанной" эталонной копии, которую желательно раз-
мещать в защищенном от записи разделе винчестера.
Ревизоры являются единственным средством, позволяющим следить за
целостностью системных файлов и изменениями в используемых катало-
гах. Их использование особенно важно при работе на "персональных
ЭВМ коллективного пользования", которые в СССР сейчас явно преоб-
ладают. В этих условиях важно, чтобы ревизор создавал файл, кото-
рый можно было бы записать на дискету или в собственный каталог, а
затем перед началом следующего сеанса работы, выявить произошедшие
изменения. Такое использование ревизоров должно сочетаться с "то-
тальной" проверкой целостности файлов, которую целесообразно про-
водить централизованно, не реже одного раза в день (например, при
включении ЭВМ), причем протоколы проверки целесообразно периоди-
чески печатать и сохранять в специальной папке.
Следует отметить, что получаемая с помощью ревизоров информация
существенно облегчает ориентировку в лабиринте каталогов и "ново-
введениях" среди трансляторов и используемых утилит. Поэтому их
нельзя рассматривать только в контексте защиты от вирусов - в на-
стоящее время они должны являться рабочим инструментом каждого
уважающего свой труд программиста.
10.4.6. Вакцинирование
"Притворяясь, будто мы попали в расставленную
нам ловушку, мы проявляем поистине утонченную
хитрость, потому что обмануть человека легче
всего тогда, когда он хочет обмануть нас."
Франсуа де Ларошфуко