Обзорная лекция доцента кафедры ИВТ ГрГУ Ливак Е.Н.

advertisement
Обзорная лекция
доцента кафедры ИВТ ГрГУ Ливак Е.Н.
для госэкзамена по специальности «Прикладная математика»
Компьютерные вирусы. Антивирусные средства
Основные понятия, факты
Классификация компьютерных вирусов. Методы внедрения компьютерных
вирусов в загрузочные секторы и исполняемые файлы. Макровирусы. Сетевые
вирусы. Профилактика заражения компьютера. Методы обнаружения
компьютерных вирусов. Антивирусные средства. Методика использования
антивирусных средств.
Навыки и умения
Обнаружение и удаление компьютерных вирусов с использованием
антивирусных средств. Обнаружение неизвестных вирусов. Организация
безопасной работы на компьютере.
Подробнее
1. Е. Касперский. Компьютерные вирусы // www.viruslist.com/viruslistbooks.html
2. Большая вирусная энциклопедия // www.viruslist.com/viruslist.html
3. Ливак Е.Н. Защита информации: Учеб. пособие: В 4 ч. Ч.1 – Компьютерные
вирусы. – Гродно, 1997 – 110 с.
4. Ливак Е.Н. Защита информации: Учеб. пособие: В 4 ч. Ч.2 – Как лечить
компьютер. – Гродно, 1998 – 95 с.
Компьютерный вирус - это набор команд, который производит и
распространяет свои копии в компьютерных системах и/или
компьютерных сетях и преднамеренно выполняет некоторые действия,
нежелательные для законных пользователей системы.
Подчеркнем. Программа-вирус способна к самораспространению. Это и есть
главный критерий, по которому отличается программа-вирус от остальных
программ.
Рассмотрим подробнее ключевые элементы определения.
Компьютерный вирус - набор команд. Тело вируса могут составлять
команды какого-либо языка программирования или нескольких сразу. Самым
распространенным случаем является язык ассемблера.
Компьютерный вирус распространяется. Вирус может создавать свои
копии и внедряться в исполняемые файлы программ, командные файлы,
системные области компьютера. При этом копии сохраняют способность к
дальнейшему распространению. Важно и то, что вирус может распространять
набор команд, отличный от оригинала.
Компьютерный вирус выполняет нежелательные действия. Попадая в
компьютерную систему, вирус производит в ней изменения. В лучшем случае это безобидные действия. Например, отображение на экране монитора
разнообразных надписей или рисунков, проигрывание на встроенном динамике
различных мелодий. В худшем случае - это разрушение файлов данных и
программного обеспечения компьютера.
Классификация компьютерных вирусов
Вирусы можно разделить на классы по следующим признакам:
 по среде обитания вируса,
 по способу заражения,
 по деструктивным возможностям,
 по особенностям алгоритма вируса.
По сpеде обитания виpусы можно pазделить на файловые, загрузочные и
файлово-загpузочные.
ФАЙЛОВЫМ называют вирус, который внедpяется в исполняемые файлы.
Это означает, что код программы-вируса находится в каком-то исполняемом
файле.
ЗАГРУЗОЧHЫМ (бутовым) называют вирус, который внедpяется в
загpузочный сектоp диска (Boot-сектоp), либо в сектоp, содеpжащий
системный загpузчик винчестеpа (Master Boot Record).
ФАЙЛОВО-ЗАГРУЗОЧHЫМ называют виpус, который внедряется как в файлы,
так и загpузочные сектоpы дисков.
По способам заpажения различают pезидентные и неpезидентные вирусы.
РЕЗИДЕHТHЫЙ виpус размещает себя или некоторую свою часть в
опеpативной памяти компьютера, получая возможность пеpехватывать
обpащения опеpационной системы к дискам и файлам. При обращении
операционной системы к этим объектам, вирус внедряется в них. Резидентный
виpус находится в опеpативной памяти и является активным вплоть до
выключения или перезагрузки компьютеpа.
Резидентными являются все загрузочные вирусы.
HЕРЕЗИДЕHТHЫЙ виpус не заpажает оперативную память компьютеpа, то
есть не размещает свой код в оперативной памяти. Он является активным
только во время работы зараженной программы.
По деструктивным возможностям вирусы можно разделить на неопасные
и опасные.
НЕОПАСНЫЕ виpусы - это те, которые либо совсем никак не влияют на
pаботу компьютеpа, кpоме того, что все-таки уменьшают свободную память на
диске в pезультате своего pаспpостpанения, либо ограничиваются видео- и
аудиоэффектами.
ОПАСHЫМИ виpусами являются все остальные. Это те вирусы, котоpые
наносят любой вред компьютеру: пpиводят к сеpьезным сбоям в pаботе,
уничтожают или изменяют данные, уничтожают информацию в системных
областях компьютера и т.п.
По особенностям алгоритма можно выделить следующие группы вирусов:
1) вирусы-«спутники»; файловые черви;
2) вирусы в структуре файловой системы;
3) стелс-вирусы (Stealth);
4) вирусы-призраки;
5) полиморфные и MtE-вирусы;
6) макровирусы;
7) скрипт-вирусы;
8) Java-вирусы;
9) сетевые черви и другие.
МЕТОДЫ ВНЕДРЕНИЯ ВИРУСОВ
Как вирус внедряется в загрузочный сектор?
Загрузочный вирус записывает себя в первый сектор диска, а его
содержимое переписывает в другой сектор, или, другими словами,
оригинальный загрузочный сектор диска вирус переносит в какой-либо
другой сектор диска, а себя записывает на его место.
Если длина вируса больше длины одного сектора, то в первый сектор
помещается начало вируса, а его продолжение - в другие секторы диска.
Существуют вирусы, которые не сохраняют старое содержимое загрузочного
сектора, а содержат в своем теле стандартный загрузчик. При заражении они
записываются поверх оригинального загрузочного сектора без его сохранения.
Существует несколько способов размещения на диске первоначального
загрузочного сектора и продолжения вируса:
1) в секторы свободных кластеров логического диска;
2) в неиспользуемые или редко используемые секторы;
3) в секторы, расположенные за пределами диска.
Если вирус собирается разместить оригинальный загрузочный сектор в
свободных секторах (блоках) диска, он выбирает свободные блоки диска,
записывает в них свою информацию, а эти блоки, как правило, помечает как
сбойные. Эти блоки называются псевдосбойными блоками.
Неиспользуемым или редко используемым сектором на винчестере
является один из секторов (если такие есть), расположенных между MBR и
первым Boot-сектором.
На дискете неиспользуемый или редко используемый сектор выбирается из
последних секторов корневого каталога.
Реже используется метод сохранения продолжения вируса за пределами
диска (метод нестандартного форматирования). Он заключается в том, что
вирус форматирует дополнительную дорожку и записывает на нее часть своего
кода и настоящий загрузочный сектор. Информация с этой дополнительной
дорожки не может быть считана или записана обычными средствами
операционной системы.
Какие повреждения могут вызывать загрузочные вирусы?
Вкратце рассмотрим повреждения, не связанные с деструктивными функциями
загрузочных вирусов, а связанные с внедрением такого вируса. Эти
повреждения могут произойти в результате ошибок вируса.
Заражая MBR, который, напомним, состоит из программы начальной
загрузки и таблицы разделов диска (Disk Partition Table), загрузочные вирусы
часто записывают свое тело вместо программы начальной загрузки. Поэтому
любая ошибка вируса может привести к потере этой программы. Очевидно, что
без правильной программы первоначальной загрузки невозможно произвести
загрузку компьютера.
При повреждении таблицы разделов диска некоторые или все логические
диски будут недоступны.
Вирус может внедряться в загрузочную запись (Boot Record) логического
диска. Напомним, что там располагается программа начальной загрузки
операционной системы, расположенной на данном диске, а также блок,
содержащий важную информацию о логическом диске. Вирус может записать
свое тело на место загрузочной записи и повредить данный блок. А отсюда
вытекают невозможность работы или ошибки при работе с данным логическим
диском.
Ошибка вируса при внедрении в загрузочный сектор дискеты чаще
приводит к недоступности информации, записанной на данной дискете.
Подчеркнем, что чаще всего для пользователя во всех только что описанных
случаях теряется только доступ к информации, сама информация остается
на диске и подлежит восстановлению. Только в результате грубых ошибок
вируса или специального уничтожения данных вирусом происходит полная
потеря информации.
Какие файлы заражают вирусы?
Файловые вирусы - это самая большая группа вирусов. Они заражают
любые исполняемые файлы.
1. Командные файлы. Это файлы, содержащие последовательность команд
операционной системы. (С другой стороны, это обычные текстовые файлы.)
2. Исполняемые файлы в формате COM. СОМ-формат - это один из
основных форматов исполняемых файлов. Размер СОМ-файла должен занимать
не более 64 Кб. Они состоят из команд центрального процессора, то есть
содержат машинные инструкции.
3. Исполняемые файлы в формате EXE. Такие файлы имеют расширение
имени EXE. Они имеют более сложную структуру и размер больший 64 Кб.
Кроме процессорных команд и данных эти файлы содержат специальный
заголовок, который находится в самом начале файла. Заголовок EXE-файла
начинается специальной двухбайтовой меткой (“MZ” или, реже “ZM”). По этой
метке загрузчик и определяет файл как EXE-файл, независимо от расширения
имени.
EXE-программы содержат несколько сегментов: сегмент кода, сегмент
данных и сегмент стека. Поэтому в заголовке EXE-файла также хранится
таблица настройки, которую использует загрузчик для инициализации
программы. Обычно заголовок имеет размер 512 байт, и значительная его часть
не используется (содержит нули).
4. Исполняемые файлы в формате PE (Potable Executable). Такие
файлы также имеют расширение имени EXE, однако внутренняя структура
файла отлична от формата EXE. Все исполняемые файлы Windows имеют такой
формат.
5. Системные драйверы.
6. Также могут быть инфицированы и файлы оверлеев, и динамически
загружаемых библиотек. Это файлы, содержащие исполняемые двоичные
коды, используемые основной программой по мере необходимости.
Внедрение вирусов в исполняемые файлы
Файловые вирусы записывают свой код в исполняемый файл и изменяют
его так, чтобы после запуска первым получил управление код вируса. Очевидно,
что вирус может записать свой код в начало, середину или конец файла. Вирус
может также разделить свой код на несколько частей и разместить их в разных
местах заражаемого файла.
Внедрение вируса в начало файла.
Известны три способа внедрения вируса в начало файла.
1. Запись с перекрытием (overwriting). При заражении вирус записывает свои
коды в начало файла, не сохраняя старого содержимого начала файла.
Естественно, что при этом программа перестает работать и не
восстанавливается. При запуске такой программы ничего не происходит, кроме
того, что вирус заражает другой файл. Такие вирусы легко обнаруживаются и,
следовательно, медленно распространяются.
2. Запись в начало программы.
Вирус может записаться перед исходным кодом программы (prepending), просто
сдвинув коды зараженной программы на число байт, равное длине вируса.
Вирус создает в оперативной памяти свою копию, дописывает к ней
заражаемый файл и сохраняет полученную конкатенацию на диск.
3. Вирус переписывает начало заражаемого файла в его конец, а сам
копируется в освободившееся место. Начало заражаемого файла вирус может
переписать и в любое другое место.
В подавляющем большинстве случаев внедрение вируса в начало файла
происходит при заражении СОМ - файлов.
Внедрение вируса в середину файла
Все случаи внедрения вирусов в середину файла можно считать
экзотическими, так как такой механизм реализовывает небольшое количество
вирусов. Перечислим такие алгоритмы.
1) Вирус может быть скопирован в таблицу настройки адресов EXE-файла.
2) Вирус внедряется в область стека файла.
3) Вирус как бы “раздвигает” файл для себя.
4) По аналогии с внедрением вируса в начало файла, при котором
переписывается содержимое начала файла в конец, возможен вариант, когда
вирус записывается в середину файла, сохраняя при этом часть файла в его
конец.
5) Достаточно сложный алгоритм компрессирования (сжатия) некоторых
участков файлов. В результате при заражении не увеличивается длина файла.
Внедрение вируса в конец файла
Наиболее распространенный случай (до 95%) - внедрение вируса в файл
дописыванием в конец этого файла (appending). При этом вирус обязательно
изменяет начало файла таким образом, чтобы управление сразу передавалось на
тело вируса.
У COM-файла вирус изменяет первые три байта
(иногда больше)
а) либо на коды инструкции “Jmp адрес вируса” (это команда перехода на тело
вируса);
б) либо на коды программы, передающей управление на тело вируса.
Оригинальные три байта начала файла вирус обязательно считывает и
сохраняет.
У EXE-файла
а) модифицируется его заголовок. В заголовке изменяются
 значение стартового адреса
 значение длины выполняемого файла
 регистры - указатели на стек ( редко )
 контрольная сумма файла ( редко );
б) иногда EXE-файл переводится в формат COM и затем заражается как COMфайл.
Способ, при котором вирус дописывается в конец файла и изменяет у COMфайла первые несколько байт, а у EXE-файла - несколько полей заголовка,
часто называется стандартным способом заражения файлов.
МАСКИРОВКА ВИРУСОВ
Основная задача вируса - распространение. И поэтому вирусу необходимо
как можно дольше скрывать свое присутствие в системе, ведь чем дольше он
будет оставаться незамеченным, тем дальше он сможет распространиться.
Вирусы скрывают свое присутствие по-разному.
Одни вирусы проявляются не сразу, а через некоторое время, давая
возможность самому себе как можно больше размножиться. Поэтому многие
вирусы ставят такие свои деструктивные действия в зависимость от каких-либо
определенных условий. Например:
а) многие вирусы проявляются в один или некоторые определенные дни;
б) другие вирусы ставят свое проявление в зависимость от случайностей
всевозможного рода. Например, только если значение минут таймера меньше N;
или проверяет отсутствие ввода с клавиатуры в течение N минут; vногие
загрузочные вирусы любят уничтожать секторы дисков, вычисляя вероятность
(1/8 или 1/16 );
в) иногда авторы вирусов ставят счетчики на количество нажатий на
клавиши, на количество зараженных файлов или секторов и в зависимости от их
значений обнаруживают свои вирусы.
Иногда авторы вирусов заменяют некоторые компоненты операционной
системы, например, прерывания, драйверы так, что программа-вирус становится
невидимой для других программ. Такие вирусы называются вирусаминевидимками, или стелс-вирусами (Stealth - невидимка ).
Stealth-вирусы всегда резидентны. Резидентный модуль перехватывает
обращение операционной системы к пораженным файлам или секторам
дисков и “подставляет” вместо них исходные объекты.
Так Stealth-вирусы скрываются от опытного пользователя и многих
антивирусных средств, которые осуществляют ранний поиск вирусов по
изменениям длин файлов контрольных сумм и содержимого загрузочных
секторов.
Необходимо заметить, что Stealth-вирус невидим только тогда, когда его
резидентный модуль находится в оперативной памяти компьютера.
Для того, чтобы затруднить обнаружение, некоторые вирусы шифруют
свой код.
С понятием компьютерного вируса тесно связано другое понятие сигнатура.
Сигнатура - это фрагмент кода, встречающийся во всех копиях вируса и
только в них. Сигнатура однозначно определяет наличие или отсутствие вируса.
Очевидно, что для поиска тела вирусов на дисках антивирусными
средствами невозможно (не хватит памяти!) хранить полные коды программвирусов. Поэтому разработчики антивирусных средств поступают следующим
образом: для поиска вирусов они хранят их сигнатуры. Такой поиск кодов
вирусов называется сигнатурным поиском.
Простейшая техника шифрования выглядит следующим образом: каждый
раз, когда вирус заражает новую программу, он зашифровывает свой
собственный код, используя новый ключ. Ключ шифрования зависит от
заражаемого файла (например, его имени или длины). В результате два
экземпляра одного и того же вируса могут значительно отличаться друг от
друга, и даже иметь различную длину! Это затрудняет обнаружение вируса с
помощью сигнатурного поиска. Ведь зашифрованный код уже не имеет той же
сигнатуры.
Шифрующиеся вирусы при получении управления первым делом
расшифровывают свой код с помощью процедуры расшифровки, а затем
выполняют все остальные действия.
Шифрующиеся вирусы называют иногда вирусами-”призраками”.
Итак, шифрующиеся вирусы скрывают сигнатуру своего кода
А полиморфные вирусы для шифрования используют не только разные ключи,
но и разные процедуры шифрования. Два экземпляра такого вируса не имеют ни
одной совпадающей последовательности кода.
Вирусы, которые благодаря использованию разных расшифровщиков, могут
полностью изменять свой код, называются полиморфными вирусами
(polymorphic).
Эти вирусы дополнены генераторами расшифровщиков. Такой генератор
создает для каждой новой копии вируса свой собственный расшифровщик,
отличный от всех остальных, но выполняющий ту же функцию. Это достаточно
сложно. Такие задачи относятся уже к автоматизации программирования.
В последнее время авторы компьютерных вирусов “вывели” самые
современные виды вирусов, в которых нет ни одного постоянного БИТА
информации. Это достигается перестановкой команд расшифровщика,
разбавлениями ничего не значащими командами типа NOP, STI, CLI, STC, CLC
и т.д. и т.п. В результате в начале файла, зараженного подобным образом, идет
набор бессмысленных на первый взгляд команд, и среди них изредка
проскальзывают рабочие команды.
На настоящий момент известно огромное количество полиморфных
вирусов.
В настоящее время создавать полиморфные вирусы могут не только
специалисты с высокой квалификацией. Существуют специальные средства
разработки полиморфных вирусов. Вот названия российских и зарубежных
разработок полиморфных вирусов:
 Mutation Engine (MtE-вирусы),
 AWME (Anti WEB Mutation Engine).
 CLME ( Crazy Lord Mutation Engine ),
 DSCE ( Dark Slayer Confusion Engine ),
 GCAE ( Golden Cicada Abnormal Engine ),
 NED ( NUKE Encription Device ),
 SMEG ( Simulated Metamorfic Encription Generator ),
 TPE ( Trident Polymorfic Engine ),
 VICE ( Virogen’s Irreguar Code Engine ).
Макровирусы
Макровирусы используют возможности макроязыков, встроенных в системы
обработки данных (текстовые редакторы, электронные таблицы и т.д.).
Для существования вирусов в конкретной системе необходимо наличие
встроенного в систему макроязыка со следующими возможностями:
1) привязка программы на макроязыке к конкретному файлу;
2) копирование макропрограмм (далее макросов) из одного файла в другой;
3) возможность получения управления макросом без вмешательства
пользователя (автоматические или стандартные макросы).
Данным условиям удовлетворяют редакторы Microsoft Word и AmiPro, а также
редактор электронных таблиц Excel. Эти системы содержат в себе макроязыки
(Word - Word Basic, Excel - Visual Basic). В этих системах вирусы получают
управление при открытии или закрытии зараженного файла, перехватывают
стандартные файловые функции и затем заражают файлы, к которым какимлибо образом идет обращение.
Макровирусы активны не только в момент открытия/закрытия файла, но до тех
пор, пока активен сам редактор.
Word/Excel-вирусы
При работе с документом текстовый редактор Word (либо Excel) выполняет
различные действия - открывает документ, сохраняет, печатает, закрывает и т.д.
При этом Word ищет и выполняет соответствующие макросы - при сохранении
файла вызывается макрос FileSave, при сохранении по команде File/SaveAs FileSaveAs, при печати документов - FilePrint и т.д. если, конечно, таковые
макросы определены. При открытии документа Word проверяет его на наличие
макроса AutoOpen. Если такой макрос присутствует, то Word выполняет его.
При закрытии документа Word выполняет макрос AutoClose.
Вирусы семейства Macro.Word содержат в себе как минимум один из
автоматических макросов (AutoOpen, AutoClose, AutoExec, AutoExit, AutoNew)
или один из стандартных макросов (FileOpen, FileClose, FileSaveAs и т.д.). Если
документ заражен, то при открытии документа Word вызывает зараженный
автоматический макрос AutoOpen (или AutoClose при закрытии документа) и,
таким образом, запускает код вируса, если это не запрещено системной
переменной DisableAutoMacros. Если же вирус содержит макросы со
стандартными именами, то они получают управление при вызове
соответствующего пункта меню (File/Open, File/Close, File/SaveAs).
Во всех известных вирусах семейства Macro.Word макросы AutoOpen/AutoClose
и (или) макросы со стандартными именами содержат команды переноса
макросов вируса в область глобальных (общих) макросов Word, т.е. при запуске
Auto-макроса или при вызове соответствующей стандартной функции вирус
заражает область глобальных макросов. При выходе из Word глобальные
макросы (включая макросы вируса) автоматически записываются в DOT-файл
глобальных макросов (обычно таким файлом является NORMAL.DOT). Таким
образом, при следующем запуске Word’а вирус активизируется в тот момент,
когда Word грузит глобальные макросы, т.е. сразу.
Затем вирус переопределяет один или несколько стандартных макросов
(например, FileOpen, FileSave, FileSaveAs, FilePrint) и перехватывает таким
образом команды работы с файлами. При вызове этих команд вирус заражает
файл, к которому идет обращение. Для этого вирус конвертирует файл в формат
Template (что делает невозможной дальнейшие изменения формата файла, т.е.
конвертирование в какой-либо не-Template формат) и записывает в файл свои
макросы, включая Auto-макрос.
Таким образом, если вирус перехватывает макрос FileSaveAs, то заражается
каждый DOC-файл, сохраняемый через перехваченный вирусом макрос. Если
перехвачен макрос FileOpen, то вирус записывается в файл при его считывании
с диска.
Следует отметить, что Word позволяет шифровать присутствующие в документе
макросы. Таким образом, некоторые Macro.Word-вирусы присутствуют в
зараженных документах в зашифрованном виде.
Характерными проявлениями вирусов семейства Macro.Word являются
следующие.
1. Невозможность конвертирования зараженного документа Word в другой
формат.
2. Невозможность записи документа командой "Save As".
3. Зараженные файлы имеют формат Template. При заражении вирусы WinWord
конвертируют файлы из формата Word Document в Template.
Защита от макровирусов
Существует несколько приемов и встроенных в Word/Excel функций,
направленных на предотвращение запуска вируса. Наиболее действенной из них
является защита от вирусов, встроенная в Word и Excel (начиная с версий 7.0a).
Эта защита при открытии файла, содержащего любой макрос, сообщает о его
присутствии и предлагает запретить этот макрос. В результате макрос не только
не выполняется, но и не виден средствами Word/Excel.
Такая защита является достаточно надежной, однако абсолютно бесполезна,
если пользователь работает с макросами (любыми): она не отличает макросы
вируса от не-вируса и выводит предупреждающее сообщение при открытии
практически любого файла. По этой причине защита в большинстве случаев
оказывается отключенной, что дает возможность вирусу проникнуть в систему.
К тому же включение защиты от вирусов в уже зараженной системе не во всех
случаях помогает - некоторые вирусы, однажды получив управление, при
каждом запуске отключают защиту от вирусов и таким образом полностью
блокируют ее.
Частично защититься от вирусов Macro.Word можно при помощи системного
макроса DisableAutoMacros, который запрещает автоматический запуск Autoмакросов при работе с файлами. Однако при этом не запрещается макрос
AutoExec и не запрещается запуск макросов со стандартными именами. И
поэтому DisableAutoMacros блокирует только те вирусы, которые для своего
распространения используют один из авто-макросов.
Запуск Word с опцией /M (или с нажатой клавишей Shift) отключает только
один макрос AutoExec и таким образом также не может служить надежной
защитой от вируса.
Java-вирусы
Написаны на языке программирования Java и являются стандартными Javaпрограммами. Заражают приложения Java (Java applications). Размножаются,
если зараженный файл запустить как дисковую Java-программу при помощи
Java-машины.
Первый известный вирус, заражающий приложения Java, обнаружен в августе
1998 года.
Обычно эти вирусы не способны размножаться при запуске под известными
броузерами (при стандартных настройках). Встроенные в броузеры системы
защиты не позволяют вирусу получить доступ к файлам.
Java-вирус не в состоянии получить доступ к своему коду в системной памяти в языке Java отсутствуют необходимые для этого функции. Поэтому перед тем,
как перейти к поиску и заражению Java-апплетов, вирус определяет свой
собственный файл (файл-носитель), разбирает его заголовок, внутренний
формат и затем считывает из него свой код. Затем вирус ищет Java-файлы
(файлы с расширением .class), разбирает их внутренний формат, вставляет в
файл собственную процедуру и внедряет команду ее вызова в основной класс
заражаемого файла.
Иногда при размножении Java-вирус записывает в поражаемые Java-файлы
только небольшую часть своего кода (так называемый "стартер"), а основной
код вируса при этом хранится на удаленном Web-сервере.
В таком случае инфицированный Java-файл при инициализации устанавливает
соединение с удаленным Web-сервером, считывает основную часть вируса и
передает ей управление. Код в основной части вируса ищет файлы с
расширением .class и заражает их. При заражении Java-файлов вирус разбирает
их внутренний формат, записывает в файл код стартера вируса в виде
подпрограммы и добавляет в код конструктора файла ее вызов. В качестве
параметра передается имя файла с основным кодом вируса.
Заметим, что разделение кода вируса на две части: «стартер – вирус» позволяет
автору вируса "апгрейдить" его код и заражать удаленные компьютеры новыми
версиями вируса.
Скрипт-вирусы
Скрипт-вирусы являются скрипт-программами на PHP. Они заражают файлы с
расширением .php (иногда и .htm). Записываются в начало или в конец файлов
(иногда записывают только ссылку на свой код).
Вирусы работоспособны только в системах с установленным PHPнтерпретатором.
Первый известный вирус, заражающий скрипт-программы PHP, был обнаружен
в октябре 2000 года.
Некоторые скрипт-вирусы используют интересный метод заражения: в
заражаемый файл записывается не код вируса, а всего одна команда "include",
которая подключает ("вставляет") код вируса в файл при его обработке.
При открытии зараженного файла скрипт-машина PHP обрабатывает
команду "include", считывает код вируса из указанного файла и выполняет его.
Таким образом, код вируса присутствует в системе в единственном
экземпляре, а все зараженные файлы всего лишь подключают его. Заметим, что
при таком способе заражения вирус не в состоянии самостоятельно
распространяться за пределы зараженного компьютера.
Файловые черви
Файловые черви (worms) являются, в некотором смысле, разновидностью
компаньон-вирусов, но при этом никоим образом не связывают свое
присутствие с каким-либо выполняемым файлом. При размножении они всего
лишь копируют свой код в какие-либо каталоги дисков в надежде, что эти новые
копии будут когда-либо запущены пользователем. Иногда эти вирусы дают
своим копиям "специальные" имена, чтобы подтолкнуть пользователя на запуск
своей копии - например, INSTALL.EXE или WINSTART.BAT.
Существуют вирусы-черви, использующие довольно необычные приемы,
например, записывающие свои копии в архивы (ARJ, ZIP и прочие). Некоторые
вирусы записывают команду запуска зараженного файла в BAT-файлы.
Не следует путать файловые вирусы-черви с сетевыми червями. Первые
используют только файловые функции какой-либо операционной системы,
вторые же при своем размножении пользуются сетевыми протоколами.
Вирусы - "черви" (worms), или Сетевые вирусы
Вирусы, которые распространяются в компьютерной сети и не изменяют файлы
или секторы дисков. Они проникают в память компьютера из компьютерной
сети, вычисляют сетевые адреса других компьютеров и рассылают по этим
адресам свои копии. Такие вирусы иногда создают рабочие файлы на дисках
системы, но могут вообще не обращаться к ресурсам компьютера (за
исключением оперативной памяти).
К сетевым относятся вирусы, которые для своего распространения активно
используют протоколы и возможности локальных и глобальных сетей.
Основным принципом работы сетевого вируса является возможность
самостоятельно передать свой код на удаленный сервер или рабочую станцию.
"Полноценные" сетевые вирусы при этом обладают еще и возможностью
запустить на выполнение свой код на удаленном компьютере или, по крайней
мере, "подтолкнуть" пользователя к запуску зараженного файла.
Бытует ошибочное мнение, что сетевым является любой вирус,
распространяющийся в компьютерной сети. Но в таком случае практически все
вирусы были бы сетевыми, даже наиболее примитивные из них: ведь самый
обычный нерезидентный вирус при заражении файлов не разбирается - сетевой
(удаленный) это диск или локальный. В результате такой вирус способен
заражать файлы в пределах сети, но отнести его к сетевым вирусам никак
нельзя.
Наибольшую известность приобрели сетевые вирусы конца 1980-х, их также
называют сетевыми червями (worms). К ним относятся вирус Морриса, вирусы
"Cristmas Tree" и "Wank Worm&". Для своего распространения они
использовали ошибки и недокументированные функции глобальных сетей того
времени - вирусы передавали свои копии с сервера на сервер и запускали их на
выполнение. После нескольких эпидемий сетевых вирусов ошибки в сетевых
протоколах и программном обеспечении были исправлены, а "задние двери"
закрыты.
Вновь проблема сетевых вирусов возникла лишь в начале 1997-го года с
появлением вирусов "Macro.Word.ShareFun" и "Win.Homer". Первый из них
использует возможности электронной почты Microsoft Mail - он создает новое
письмо, содержащее зараженный файл-документ ("ShareFun" является макровирусом), затем выбирает из списка адресов MS-Mail три случайных адреса и
рассылает по ним зараженное письмо. Поскольку многие пользователи
устанавливают параметры MS-Mail таким образом, что при получении письма
автоматически запускается MS Word, то вирус "автоматически" внедряется в
компьютер адресата зараженного письма.
Этот вирус иллюстрирует первый тип современных сетевых вирусов, которые
объединяют возможности встроенного в Word/Excel языка Basic, протоколы и
особенности электронной почты и функции автозапуска, необходимые для
распространения вируса.
Второй вирус ("Homer") использует для своего распространения протокол FTP
(File Trabsfer Protocol) и передает свою копию на удаленный ftp-сервер в каталог
Incoming. Поскольку сетевой протокол FTP исключает возможность запуска
файла на удаленном сервере, этот вирус можно охарактеризовать как
"полусетевой", однако это реальный пример возможностей вирусов по
использованию современных сетевых протоколов и поражению глобальных
сетей.
Возможны, конечно же, и другие способы проникновения вирусов в
современные сети.
МЕТОДЫ И СРЕДСТВА
обнаружения компьютерных вирусов
Методы, которые используют антивирусные средства
1. Сканирование.
Это самый простой метод поиска вируса. Он основан на последовательном
просмотре памяти компьютера, загрузочных секторов и проверяемых файлов в
поиске так называемых сигнатур (масок) известных вирусов.
Сигнатура вируса - это уникальная последовательность байтов,
принадлежащая вирусу и не встречающаяся в других программах.
Определение сигнатуры вируса очень сложная задача. Необходимо
тщательно изучить принцип работы вируса и сравнить программы, зараженные
данным вирусом, и незараженные. Кроме того, сигнатура не должна
содержаться в других программах, иначе возможны ложные срабатывания.
Надежность принципа поиска по маске ограниченной длины не очень
высока. Вирус легко модифицировать, чем и занимаются многие авторы
вирусов. Достаточно изменить строковую константу, текст выдаваемого
сообщения или одну из первых команд, чтобы вирус стал совсем новым.
Надежность увеличивается при приведении вируса к каноническому виду:
то есть обнулении всех байтов, приходящихся на переменные и константы.
Хранение сигнатур канонических форм всех известных вирусов
(вспомните, что на сегодняшний день их число огромно) требует неоправданно
много памяти. Достаточно хранить только контрольную сумму сигнатур
вирусов.
При подозрении на вирус необходимо привести подозреваемый код к
каноническому виду, подсчитать контрольную сумму и сравнить с эталоном.
Часто в качестве сигнатуры берется характерный для этого вируса
фрагмент кода, например, фрагмент обработчика прерывания. Не все вирусы
имеют сигнатуры в виде строк байт, для некоторых удается в качестве сигнатур
использовать регулярные выражения, а некоторые вирусы могут вообще не
иметь сигнатур, например, полиморфные.
2. Обнаружение изменений, или контроль целостности.
Контроль целостности основан на выполнении двух процедур:
 постановка на учет;
 контроль поставленного на учет.
При внедрении вируса в компьютерную систему обязательно происходят
изменения в системе (которые некоторые вирусы успешно маскируют). Это и
изменение объема доступной оперативной памяти, и изменение загрузочных
секторов дисков, и изменения самих файлов.
Достаточно запомнить характеристики, которые подвергаются
изменениям в результате внедрения вируса, а затем периодически сравнивать
эти эталонные характеристики с действующими.
3. Эвристический анализ.
Этот метод предназначен для обнаружения новых неизвестных вирусов.
Программы, реализующие этот метод, тоже проверяют загрузочные секторы
дисков и файлы, только уже пытаются обнаружить в них код, характерный для
вирусов. Например, таким может быть код, устанавливающий резидентный
модуль в памяти и т.п.
4. Метод резидентного сторожа.
Этот метод направлен на выявление «подозрительных» действий
пользовательских программ, например, таких, как запись на диск по
абсолютному адресу, форматирование диска, изменение загрузочного сектора,
изменение или переименование выполняемых программ, появление новых
резидентных программ, изменение системных областей и других. При
обнаружении «подозрительного» действия необходимо «спросить разрешение»
у пользователя на выполнение такого действия.
5. Вакцинирование программ.
Этот метод заключается в дописывании к исполняемому файлу
дополнительной подпрограммы, которая первой получает управление при
запуске файла, выполняет проверку целостности программы. Проверяться могут
любые изменения, например, контрольная сумма файла или другие
характеристики.
Типы антивирусных средств
1. Программы-детекторы, или программы-сканеры.
Это наиболее известный и наиболее распространенный вид антивирусных
программ. Они осуществляют поиск известных версий вирусов методом
сканирования, т.е. поиском сигнатур вирусов. Поэтому программы-сканеры
могут обнаружить только уже известные вирусы, которые были предварительно
изучены, и для которых была определена сигнатура.
Использование программ-сканеров не защищает компьютер от новых
вирусов. Кроме того, такие программы не могут обнаружить большинство
полиморфных вирусов, так как для таких вирусов невозможно определить
сигнатуру.
Для эффективного использования программ-детекторов, реализующих
метод простого сканирования, рекомендуется постоянно обновлять их, получая
самые последние версии, так как в них уже будут включены новые типы
вирусов.
В последнее время программы-детекторы поставляются со специальными
базами данных - сигнатурами вирусов, которые может пополнять сам
пользователь. Некоторые сканеры позволяют подключать к своей базе данных
внешние файлы - дополнения, содержащие сведения о новых вирусах. В таких
случаях достаточно приобретать новые файлы-дополнения к базе для
обновления антивирусной программы.
Для компьютеров, подключенных к Internet, существует возможность
автоматического пополнения базы сигнатур вирусов новыми сигнатурами,
конечно же, при использовании соответствующих антивирусных программ.
Антивирусные программы-сканеры, которые могут удалить обнаруженный
вирус, называются полифагами.
В последнее время распространяются полифаги, которые кроме простого
сканирования в поисках сигнатур вирусов, содержащихся в их вирусной базе,
используют еще и эвристический анализ проверяемых объектов на наличие
неизвестных вирусов. Они изучают код проверяемых файлов и содержимое
загрузочных секторов и пытаются обнаружить в них участки, выполняющие
характерные для вирусов действия. Сканеры, использующие эвристический
поиск, уже способны обнаружить многие полиморфные и автоматические
вирусы, а также некоторые новые неизвестные вирусы (неизвестные самому
антивирусу).
2. Программы-мониторы, или резидентные сторожа.
Это целый класс антивирусов, которые постоянно находятся в оперативной
памяти компьютера и отслеживают все подозрительные действия, выполняемые
другими программами. С помощью монитора можно остановить распостранение
вируса на самой ранней стадии.
Их цель - не пропустить вирус на компьютер. И поэтому они
контролируют обращение к дискам. При обнаружении «подозрительного»
действия программа-монитор либо блокирует выполнение такого действия до
специального разрешения пользователя, либо просто выдаёт на экран
предупреждающее сообщение, либо совершает другие специальные действия.
Наиболее опасные из «подозрительных» действий:
 низкоуровневое форматирование диска;
 запись данных в загрузочные секторы жёсткого диска или дискеты;
 запись данных в исполняемый файл;
 изменение атрибута файла.
Невысокая популярность программ-мониторов объясняется психологическим
фактором. Многие программы могут выполнять действия, на которые
реагируют мониторы. Большое число запросов мешает пользователю работать.
Монитор может «замучить» пользователя, и он его отключит. Мониторы
отнимают время на проверку программ во время их запуска, и процесс загрузки
программы замедлится. Ещё одним недостатком программ-мониторов является
то, что они уменьшают объём памяти, доступной программам пользователей,
ведь он должен резидентно находится в памяти.
Поэтому мониторы необходимо применять в следующих случаях:
 запуск новых программ неизвестного происхождения;
 во время подозрения на вирус;
 некоторое время после удаления вируса для исключения его появления
вновь.
В настоящее время фирмы-производители антивирусных средств поставляют,
как правило, целые антивирусные комплексы, а не отдельные программы. В
состав многих таких комплексов входят резидентные мониторы. Например,
вместе с антивирусным пакетом Antiviral Toolkid Pro (AVP), солзданным
фирмой КАМИ (Е. Касперский) поставляется резидентрый монитор Antiviral
Monitor. Он позволяет обнаружить и сообщить обо всех проявлениях, которые
могут быть вызваны компьютерными вирусами. В комплект Microsoft Anti-Virus
входит резидентный монитор Vsafe, позволяющий постоянно контролировать
работу компьютера. В состав комплекта Norton AntiVirus for Windows9x входит
приложение Norton AntiVirus Auto-Protect. Кроме проверки запускаемых файлов
Norton AntiVirus Auto-Protect выполняет все функции обычного резидентного
монитора, позволяя при этом пользователям сделать установки случаев, в
которых необходимо сообщать о подозрительном действии.
Большинство распространённых ныне мониторов предназначены для
контроля за подключаемыми к компьютеру дисками. Такие мониторы
освобождают пользователя от необходимости помнить об обязательном
сканировании каждого нового диска или дискеты. Монитор открывает доступ к
диску, лишь убедившись в его «чистоте». Так работает, например, монитор
McAfee VShield (щит от вирусов) пакета McAfee VirusScan for Windows9x
(VirusScan 95). Он также выполняет контроль исполняемых программ и
копируемых файлов.
В пакет антивирусной защиты Dr Solomon’s AntiVirus Toolkit входит
монитор WinGuard, в обязанности которого входит контроль за подключением
внешних дисков, выполнением операций с файлами и поведением исполняемых
файлов (сканирование файлов при записи).
3.
Программы - ревизоры.
Программы-ревизоры первоначально запоминают в специальных файлах
образы главной загрузочной записи, загрузочных секторов логических дисков,
параметры всех контролируемых файлов (иногда только контрольную сумму
файлов), информацию о структуре каталогов, номера плохих кластеров диска,
иногда - объем установленной оперативной памяти, количество подключенных
к компьютеру дисков и их параметры и многое другое.
Для определения наличия вируса в системе программы-ревизоры
проверяют созданные ими образы и производят сравнение с текущим
состоянием. Если обнаружено изменение - вполне вероятно, что эти изменения
произведены вирусом.
Ревизоры могут обнаружить любые вирусы, даже ранее неизвестные. Но
для этого необходимо “поставить на учет” заведомо чистые от вирусов
возможные объекты нападения. Кроме этого, ревизор не обнаружит вирус,
который попал с новым зараженным уже файлом, так как он “не знает”
параметров этого файла до заражения вирусом. Не сможет ревизор обнаружить
вирус, заражающий файлы только при копировании, опять же не имея
возможности сравнить параметры файлов. Ревизоры неэффективно
использовать для обнаружения вирусов в файлах документов, так как эти файлы
очень часто изменяются. Кроме того, следует учитывать, что ревизоры только
обнаруживают изменения, но не все изменения связаны с внедрением вируса.
В этих случаях у ревизоров один общий недостаток с программамимониторами: пользователь должен хорошо разбираться во всех таких случаях и
сам принимать решения - является ли изменение результатом действия вируса
или нет. То есть программы-ревизоры не предназначены для рядового
пользователя.
Правда, в последнее время ревизоры дополняются базами сигнатур
вирусов, и при подозрении на вирус ревизор тут же осуществляет сканирование
в поисках вирусов. Такие ревизоры уже более пригодны для использования
рядовыми пользователями.
Простейшая программа-ревизор Microsoft Anti-Virus (MSAV) входит в
состав операционной системы MS-DOS. Более известна программа-ревизор
Advanced Dikinfoscope (Adinf), созданная Дмитрием Юрьевичем Мостовым. Эта
программа, кроме выявления новых вирусов, способна обнаруживать еще и
Stelth-вирусы.
4.
Перспективные средства защиты.
К перспективным средствам защиты стоит отнести адаптивные,
cамообучающиеся и интеллектуальные средства.
Адаптивные средства развиваются уже сейчас. Это средства, которые содержат
постоянно пополняемые базы вирусов.
Cамообучающееся средство должно при обнаружении неизвестного ему
вируса автоматически его проанализировать и добавить к списку вирусов, с
которыми может успешно бороться.
Интеллектуальные средства защиты основаны на определении алгоритма
и спецификации программы по ее коду, и, следовательно, возможности
выявления программ, осуществляющих несанкционированные действия.
Известны попытки создания интеллектуальных программ-мониторов, которые
пытаются различать ложные тревоги, но пока, к сожалению, это приводит к
снижению их надежности.
Как показывает теория и подтверждает практика, создание универсальных
средств, которые способны противостоять абсолютно всем вирусам,
невозможно.
Практически известно, что для любого вируса можно создать антивирус,
но не для любого антивируса можно создать вирус, обходящий его.
Теоретически это подтвердил Л. Адлеман 1[1] (кстати, учитель известного
Фредерика Коэна). Он доказал, что множество всех вирусов неперечислимо.
Но это означает только то, что невозможно создать программу, однозначно
решающую, есть ли в предъявленном ей файле вирус или нет.
Решение проблемы вирусов - в создании сред, делающих
существование вирусов невозможным.
1[1] Leonard M.Adleman. An Abstact Theory of Computer Viruses. Proceeding of
CRYPTO-88 conference
Download