Вирусы

Автор: Пользователь скрыл имя, 23 Января 2013 в 09:31, лекция

Описание работы

Так кто же пишет вирусы? На мой взгляд, основную их массу создают студенты и школьники, которые только что изучили язык ассемблера, хотят попробовать свои силы, но не могут найти для них более достойного применения. Отраден тот факт, что значительная часть таких вирусов их авторами часто не распространяется, и вирусы через некоторое время "умирают" вместе с дискетами, на которых хранятся.

Работа содержит 1 файл

лекция 2.doc

— 197.50 Кб (Скачать)

В вирусах семейства "Stoned" задествован другой метод. Эти вирусы размещают первоначальный загрузочный сектор в неиспользуемом или редко используемом секторе - в одном из секторов вничестера (если такие есть), расположенных между MBR и первым boot-сектором, а на дискете такой сектор выбирается из последних секторов корневого каталога.

Некоторые вирусы записывают свой код в последние сектора винчестера, поскольку эти сектора используются только тогда, когда винчестер полностью заполнен информацией (что является довольно редким явлением, если учесть размеры современных дисков). Однако такие вирусы приводят к порче файловой системы OS/2, которая в некоторых случаях хранит активный boot-сектора и системные данные как раз в последних секторах винчестера.

Реже используется метод сохранения продолжения вируса за пределами диска. Достигается это двумя способами. Первый сводится к уменьшению размеров логических дисков: вирус вычитает необходимые значения из соответствующих полей BPB boot-сектора и Disk Partition Table винчестера (если заражается винчестер), уменьшает таким образом размер логичесного диска и записывает свой код в "отрезанные" от него сектора.

Второй  способ - запись данных за пределами физического разбиения диска. В случае флоппи-дисков вирусу для этого приходится форматировать на диске дополнительный трек (метод нестандартного форматирования), например, 40-й трек на 360K дискете или 80-й трек на 1.2M и 1.4M дискетах. Существуют вирусы, записывающие свой код за пределами доступного пространства винчестера, если, разумеется, это допускается установленным оборудованием (см. вирус "Hare").

Конечно, существуют и другие методы размещения вируса на диске, например, вирусы семейства "Azusa" содержат в своем теле стандартный загрузчик MBR и при заражении записываются поверх оригинального MBR без его сохранения.

При заражении  большинство вирусов копирует в  код своего загрузчика системную  информацию, хранящуюся в первоначальном загрузчике (для MBR этой информацией является Disk Partition Table, для Boot-сектора дискет - BIOS Parameter Block). В противном случае система окажется неспособной загрузить себя, поскольку дисковые адреса компонент системы высчитываются на основе этой информации. Такие вирусы довольно лекго удаляются переписыванием заново кода системного загрузчика в boot-секторе и MBR - для этого необходимо загрузиться с незараженной системной дискеты и использовать команды SYS для обезвреживания дискет и логических дисков винчестера или FDISK/MBR для лечения зараденного MBR-сектора.

Однако некоторые 100%-стелс вирусы не сохраняют эту  информацию или даже более того - преднамеренно шифруют ее. При  обращении системы или других программ к зараженным секторам вирус  подставляет их незараженные оригиналы, и загрузка системы происходит без каких-либо сбоев, однако лечение MBR при помощи FDISK/MBR в случае такого вируса приводит к потере информации о разбиении диска (Disk Partition Table). В этом случае диск может быть "оживлен" либо переформатированием с потерей всей информации, либо восстановлением Disk Partition Table "вручную", что требует определенной квалификации.

Следует также  отметить тот факт, что загрузочные  вирусы очень редко "уживаются" вместе на одном диске - часто они  используют одни и те же дисковые сектора для размещения своего кода/данных. В результате код/данные первого вируса оказываются испорченными при заражении вторым вирусом, и система либо зависает при загрузке, либо зацикливается (что также приводит к ее зависанию).

Пользователям новых операционных систем (Novell, Win95, OS/2) загрузочные вирусы также могут доставить неприятности. Несмотря на то, что перечисленные выше системы работают с дисками напрямую (минуя вызовы BIOS), что блокирует вирус и делает невозможным дальнейшее его распространение, код вируса все-таки, хоть и очень редко, получает управление при перезагрузке системы. Поэтому вирус "March6", например, может годами "жить" в MBR сервера и никак не влиять при этом на его (сервера) работу и производительность. Однако при случайной перезагрузке 6-го марта этот вирус полностью уничтожит все данные на диске.

Файловые вирусы

К данной группе относятся вирусы, которые при  своем размножении тем или  иным способом используют файловую систему  какой-либо (или каких-либо) ОС.

Внедрение файлового  вируса возможно практически во все исполняемые файлы всех популярных ОС. На сегодняшний день известны вирусы, поражающие все типы выполняемых объектов стандартной DOS: командные файлы (BAT), загружаемые драйверы (SYS, в том числе специальные файлы IO.SYS и MSDOS.SYS) и выполняемые двоичные файлы (EXE, COM). Существуют вирусы, поражающие исполняемые файлы других операционных систем - Windows 3.x, Windows95/NT, OS/2, Macintosh, UNIX, включая VxD-драйвера Windows 3.x и Windows95.

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

Способы заражения

По способу  заражения файлов вирусы делятся  на "overwriting", паразитические ("parasitic"), компаньон-вирусы ("companion"), "link"-вирусы, вирусы-черви и вирусы, заражающие объектные модули (OBJ), библиотеки компиляторов (LIB) и исходные тексты программ

Parasitic

К паразитическим относятся все файловые вирусы, которые  при распространении своих копий  обязательно изменяют содержимое файлов, оставляя сими файлы при этом полностью или частично работоспособными. Основными типами таких вирусов являются вирусы, записывающиеся в начало файлов ("prepending"), в конец файлов ("appending") и в середину файлов ("inserting"). В свою очередь, внедрение вирусов в середину файлов происходит различными методами - путем переноса части файла в его конец или копирования своего кода в заведомо неиспользуемые данные файла ("cavity"-вирусы).

Внедрение вируса в начало файла

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

Внедрение вируса в начало файла применяется в  подавляющем большинстве случаев  при заражении DOS'овских BAT- и COM-файлов. Известно несколько вирусов, записывающих себя в начало EXE-файлов операционных систем DOS, Windows и даже Linux. При этом вирусы, чтобы сохранить работоспособность программы, либо лечат зараженный файл, повторно запускают его, ждут окончания его работы и снова записываются в его начало (иногда для этого используется временный файл, в который записывается обезвреженный файл), либо восстанавливают код программы в памяти компьютера и настраивают необходимые адреса в ее теле (т.е. дублируют работу ОС).

Внедрение вируса в конец  файла

Наиболее распространенным способом внедрения вируса в файл является дописывание вируса в его конец. При этом вирус изменяет начало файла таким образом, что первыми выполняемыми командами программы, содержащейся в файле, являются команды вируса.

В DOS COM-файле  в большинстве случаев это  достигается изменением его первых трех (или более) байтов на коды инструкции JMP Loc_Virus (или в более общем случае - на коды программы, передающей управление на тело вируса). DOS EXE-файл переводится в формат COM-файла и затем заражается как COM-файл либо модифицируется заголовок файла. В заголовке DOS EXE-файла изменяются значения стартового адреса (CS:IP) и длина выполняемого модуля (файла), реже - регистры-указатели на стек (SS:SP), контрольная сумма файла и т.д. В исполняемых файлах Windows и OS/2 (NewEXE - NE,PE,LE,LX) изменяются поля в NewEXE-заголовке. Структура этого залоловка значительно сложнее заголовка DOS EXE-файлов, поэтому изменению подлежит большее число полей - значение стартового адреса, количество секций в файле, характеристики секций и т.д. Дополнительно к этому длины файлов перед заражением могут увеличиваться до значения, кратного параграфу (16 байт) в DOS или секции в Windows и OS/2 (размер секции зависит от параметров заголовка EXE-файла).

DOS COM-файл

DOS EXE-файл  

New EXE-файл

JMP

   Заголовок 

DOS stub

Программа

Программа         

New EXE  заголовок

Вирус   

     Стартовый     адрес    

Программа

        

 

Вирус

        

 

        

 

   

 

Стартовый адрес

   

Вирус   


 

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

Незараженный  файл-драйвер

+--------------------------------+     

|Заголовок| Драйвер       |

+--------------------------------+

Зараженный файл-драйвер

+------------------------------------------------------------+

|Заголовок|  Драйвер             |  Вирус              |

+------------------------------------------------------------+

Существуют  также вирусы, заражающие системные  драйвера другим способом: вирус модифицирует его заголовок так, что DOS рассматривает инфицированный файл как цепочку из двух (или более) драйверов.

Незараженный  файл-драйвер

+--------------------------------+   

|Заголовок | Драйвер      |

+--------------------------------+

Зараженный файл-драйвер

+------------------------------------------------------------+

|Заголовок  | Драйвер  |Заголовок| Вирус      |

+------------------------------------------------------------+

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

Внедрение вируса в середину файла

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

Вторым является метод "cavity", при котором вирус записывается в заведомо неиспользуемые области файла. Вирус может быть скопирован в незадействованные области таблицы настройки адресов DOS EXE-файла (см. "BootExe") или заголовок NewEXE-файла ("Win95.Murkry"), в область стека файла COMMAND.COM ("Lehigh") или в область текстовых сообщений популярных компиляторов ("NMSG"). Существуют вирусы, заражающие только те файлы, которые содержат блоки, заполненные каким-либо постоянным байтом, при этом вирус записывает свой код вместо такого блока.

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

Overwriting

Данный метод  заражения является наиболее простым: вирус записывает свой код вместо кода заражаемого файла, уничтожая  его содержимое. Естественно, что при этом файл перестает работать и не восстанавливается. Такие вирусы очень быстро обнаруживают себя, так как операционная система и приложения довольно быстро перестают работать. Мне не известно ни одного случая, когда подобного типа вирусы были бы обнаружены "в живом виде" и стали причиной эпидемии.

К разновидности overwriting-вирусов относятся вирусы, которые записываются вместо DOS-заголовка NewEXE-файлов. Основная часть файла  при этом остается без изменений  и продолжает нормально работать в соответсвующей операционной системе, однако DOS-заголовок оказывается испорченным.

Вирусы без точки входа

Отдельно следует  отметить довольно незначительную группу вирусов, не имеющих "точки входа" (EPO-вирусы - Entry Point Obscuring viruses). К ним  относятся вирусы, не записывающие команд передачи управления в заголовок COM-файлов (JMP) и не изменяющие адрес точки старта в заголовке EXE-файлов. Такие вирусы записывают команду перехода на свой код в какое-либо место в середину файла и получают управление не непосредственно при запуске зараженного файла, а при вызове процедуры, содержащей код передачи управления на тело вируса. Причем выполняться эта процедура может крайне редко (например, при выводе сообщения о какой-либо специфической ошибке). В результате вирус может долгие годы "спать" внутри файла и выскочить на свободу только при некоторых ограниченных условиях.

Перед тем, как  записать в середину файла команду  перехода на свой код, вирусу необходимо выбрать "правильный" адрес в  файле - иначе зараженный файл может  оказаться испорченным. Известны несколько  способов, с помощью которых вирусы определяют такие адреса внутри файлов.

Первый способ - поисх в файле последовательности стандартного кода C/Pascal (вирусы "Lucretia", "Zhengxi"). Эти вирусы ищут в заражаемых файлах стандартные заголовки процедур C/Pascal и записывают вместо них свой код.

Второй способ - трассировка или дизассемблирование кода файла ("CNTV", "MidInfector", "NexivDer"). Такие вирусы загружают файл в  память, затем трассируют или дизассемблируют  его и в зависимости от различных  условий выбирают команду (или команды), вместо которых записывается код перехода на тело вируса.

Третий способ применяется только резидентными вирусами - при запуске файла они контролируют какое-либо прерывание (чаще - INT 21h). Как  только заражаемый файл вызывает это  прерывание, вирус записывает свой код вместо команды вызова прерывания (см. "Avatar.Positron", "Markiz").

Компаньон-вирусы

Информация о работе Вирусы