Файловые вирусы
    Вирус может внедриться в файлы трех типов: командные файлы (BAT), загружаемые драйверы (SYS) в том числе IO.SYS и MSDOS.SYS, и выполняемые двоичные файлы (EXE, COM) включая новые типы EXE-файлов (NEW EXE) и NLM-файлы, выполняемые в операционных системах типа MS-Windows, OS/2, Novell Netware и т.д.
    Возможно внедрение вируса в файлы данных, но эти случаи возникают либо в результате ошибки вируса, либо при проявлении вирусом своих агрессивных свойств. Конечно, возможно существование вирусов, заражающих файлы, которые содержат исходные тексты программ, библиотечные или объектные модули, но подобные способы распространения вируса слишком экзотичны и поэтому в дальнейшем не рассматриваются.
    На сегодняшний день известны всего несколько видов BAT-вируса. Они не представляют интереса, так как достаточно примитивны и очень просто обнаруживаются а после чего удаляются.

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

Внедрение вируса в COM- и EXE-файлы  
   Выполняемые двоичные файлы имеют форматы COM или EXE, отличающиеся заголовком и способом запуска программ на выполнение. Расширение имени файла (".COM" или ".EXE") не всегда соответствует действительному формату файла, что, правда, никак не влияет на работу программы. Файлы COM и EXE заражаются по-разному, следовательно вирус должен отличать файлы одного формата от другого. Вирусы решают эту задачу двумя способами: одни анализируют расширение имени файла (".COM", ".EXE"), другие - заголовок файла. Первый способ далее будет называться заражением .COM- (или .EXE-) файлов, второй - заражением COM- (или EXE-) файлов. В большинстве случаев вирус инфицирует файл корректно, т.е. по информации, содержащейся в теле вируса, можно полностью восстановить зараженный файл. Но вирусы, как и большинство программ, часто содержат незаметные с первого взгляда ошибки. Из-за этого даже вполне корректно написанный вирус может необратимо испортить файл при его заражении. Например, вирусы, различающие типы файлов по расширению имени (.COM, .EXE), очень опасны, так как портят файлы, у которых расширение имени не соответствует внутреннему формату.
    Файловые вирусы при распространении внедряются в тело заражаемого файла: в его начало, конец или середину. Существует несколько возможностей внедрения вируса в середину файла: он может быть скопирован в таблицу настройки адресов EXE-файла ("BootExe"), в область стека файла COMMAND.COM ("Lehigh"), может "раздвинуть" файл или переписать часть файла в его конец, а свои коды в освободившееся место ("April1st.Exe", "Phoenix"), и т. д. Кроме того, копирование вируса в середину файла может произойти в результате ошибки вируса - в этом случае файл может быть необратимо испорчен. Встречаются и другие способы внедрения вируса в середину файла, например, вирус "Mutant" применяет метод компрессирования некоторых участков файла.

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

Внедрение вируса в конец файла  
   Наиболее распространенным способом внедрения вируса в файл является дописывание вируса в конец этого файла. При этом вирус изменяет начало файла таким образом, что первыми выполняемыми командами программы, содержащейся в файле, являются команды вируса. В COM-файле в большинстве случаев это достигается изменением его первых трех (или более) байтов на коды инструкции JMP Loc_Virus (или в более общем случае - на коды программы, передающей управление на тело вируса). EXE-файл либо переводится в формат COM-файла и затем заражается как COM-файл, либо модифицируется заголовок файла. В заголовке EXE-файла изменяются значение стартового адреса (CS:IP) и значение длины выполняемого модуля (файла), реже - регистры-указатели на стек (SS:SP), контрольная сумма файла и т.д. Дополнительно к этому длины файлов перед заражением могут увеличиваться до значения, кратного параграфу (16 байт).

Алгоритм работы файлового вируса  
   Вирус, после передачи ему управления, совершает следующие действия (приведен список наиболее общих действий вируса при его выполнении; для конкретного вируса список может быть дополнен, пункты могут поменяться местами и значительно расшириться) :
- восстанавливает программу (но не файл) в исходном виде (например, у COM-программы восстанавливаются первые несколько байт, у EXE-программы вычисляется истинный стартовый адрес, у драйвера восстанавливаются значения адресов программ стратегии и прерывания);
- если вирус резидентный, то он проверяет оперативную память на наличие своей копии и инфицирует память компьютера, если копия вируса не найдена; если вирус нерезидентный, то он ищет незараженные файлы в текущем и (или) корневом оглавлении, в оглавлениях, отмеченных командой PATH, сканирует дерево каталогов логических дисков, а затем заражает обнаруженные файлы;
- выполняет, если они есть, дополнительные функции: деструктивные действия, графические или звуковые эффекты и т.д. (дополнительные функции резидентного вируса могут вызываться спустя некоторое время после активизации в зависимости от текущего времени, конфигурации системы, внутренних счетчиков вируса или других условий; в этом случае вирус при активизации обрабатывает состояние системных часов, устанавливает свои счетчики и т.д.);
- возвращает управление основной программе.

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

Назад
Hosted by uCoz