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

Классические компьютерные вирусы.

К данной категории относятся программы, распространяющие свои копии по ресурсам локального компьютера с целью:

· последующего запуска своего кода при каких-либо действиях пользователя;

• дальнейшего внедрения в другие ресурсы компьютера.

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

• при заражении доступных дисков вирус проник в файлы, расположенные на сетевом ресурсе;

• вирус скопировал себя на съёмный носитель или заразил файлы на нем;

· пользователь отослал электронное письмо с зараженным вложением.

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

Классификация классических вирусов

Типы компьютерных вирусов различаются между собой по следующим основным признакам:

1. Среда обитания. Под ней понимаются системные области компьютера, операционные системы или приложения, в компоненты (файлы) которых внедряется код вируса. По среде обитания вирусы можно разделить на:

• файловые;

· загрузочные;

• макровирусы;

· скриптовые.

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

• различными способами внедряются в исполняемые файлы (наиболее распространенный тип вирусов);

• создают файлы-двойники (компаньон-вирусы);

· создают свои копии в различных каталогах;

· используют особенности организации файловой системы (link-вирусы).

Загрузочные вирусы записывают себя либо в загрузочный сектор диска (boot- сектор) либо в сектор, содержащий системный загрузчик винчестера (Master Boot Record), либо меняют указатель на активный boot-сектор. Данный тип вирусов был распространён в 1990-х, но практически исчез с переходом на 32-битные операционные системы и отказом от использования дискет как основного способа распространения информации. Теоретически возможно появление загрузочных вирусов, заражающих СD-диски и USВ-флешек, но на текущий момент такие вирусы не обнаружены.

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

2. Способ заражения. Под «способом заражения» понимаются различные методы внедрения вирусого кода в заражаемые объекты. Способы заражения

Файловые вирусы По способу заражения файлов они делятся на:

· перезаписывающие вирусы (overwriting);

· паразитические вирусы (parasitic);

· компаньоны (companion);

· вирусы-ссылки (link);

· вирусы, заражающие объектные модули (ОВJ);

· вирусы, заражающие библиотеки компиляторов (LIВ);

· вирусы, заражающие исходные тексты программ.

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

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

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

родившееся., заражении файла вторым способом вир)

 

 

Рис. 3.1. Внедрение вируса в начало файла первым способом.

 

Рис. 3.2. Внедрение вируса в начало файла вторым способом.

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

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

Наиболее распространенным способом внедрения вируса в файл являете дописывание вируса в его конец рис. 3.3.

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

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

Для того чтобы получить управление при старте файла, вирус корректирует стартовый адрес программы (адрес точки входа). Для этого вирус производит изменения в заголовке файла.

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

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

Вторым является метод «саvity», при котором вирус записывается в заведомо неиспользуемые области файла. Вирус может быть скопирован в задействованные области заголовка ЕХЕ-файла, в «дыры» между секциями ЕХЕ-файла или в область текстовых сообщений популярных компиляторов. Существуют вирусы, заражающие только те файлы, которые содержат блоки, заполненные каким-либо постоянным байтом, при этом вирус записывает свой код вместо такого блока.

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

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

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

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

Companion. К этой категории относятся вирусы, не изменяющие заражаемых файлов. Алгоритм работы этих вирусов состоит в том, что для заражаемого файла создается файл-двойник, причем при запуске зараженного файла управление получает именно этот двойник, т. е. вирус.

К вирусам данного типа относятся те из них, которые при заражении переименовывают файл в какое-либо другое имя, запоминают его (для последующего запуска файла-хозяина) и записывают свой код на диск под именем заражаемого файла. Например, файл МОТЕРАD.ЕХЕ переименовывается в МОТЕРАD.ЕXD), а вирус записывается под именем МОТЕРАD.ЕХЕ. При запуске управление получает код вируса, который затем запускает оригинальный МОТЕРАD.ЕХЕ.

Возможно существование и других типов вирусов-компаньонов использующих иные оригинальные идеи или особенности других операционных систем. Например, РАТН-компаньоны, которые размещают свои копии в основном каталоге, используя тот факт, что этот каталог является первым в списке РАТН, и файлы для запуска в первую очередь будет искать именно в нем. Данным способом самозапуска пользуются также многие компьютерные черви, троянские программы.

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

Существуют вирусы, которые никоим образом не связывают свое присутствие с каким-либо выполняемым файлом. При размножении они всего лишь копируют свой код в какие-либо каталоги дисков в надежде, что эти новые копии будут когда-либо запущены пользователем. Иногда эти вирусы дают своим копия: «специальные» имена, чтобы подтолкнуть пользователя на запуск своей копии - например, INSТАLL.ЕХЕ или WINSТАRТ.ВАТ.

Некоторые вирусы записывают свои копии в архивы (АRJ, ZIР, RАR). Другие записывают команду запуска зараженного файла в ВАТ-файлы.

Linк-вирусы также не изменяют физического содержимого файлов, однако при запуске зараженного файла «заставляют» ОС выполнить свой код. Этой цели они достигают модификацией необходимых полей файловой системы.

Загрузочные вирусы

Известные на текущий момент загрузочные вирусы заражают загрузочный сектор гибкого диска и или Master Boot Record (MBR) винчестера. Принцип действия загрузочных вирусов основан на алгоритмах, запуска системы при включении или перезагрузке компьютера – после необходимых тестов установленного оборудования (памяти, дисков и т.д.) программа системной загрузки считывает первый физический сектор загрузочного или СD-RОМ в зависимости от параметров, установленных в ВIOS и передает на него управление. При заражении дисков загрузочные вирусы «подставляют» свой код вместо программы, получающей управление при загрузке системы. Принцип заражения, таким образом, одинаков во всех описанных выше способах: вирус «заставляет» систему при ее перезапуске считать в память и отдать управление не оригинальному коду загрузчика, но коду вируса.

Заражение дискет производится единственным известным способом – вирус записывает свой код вместо оригинального кода boot-сектора дискеты. Винчестер заражается 3 возможными способами - вирус записывается либо вместо кода MBR, либо вместо кода boot-сектора загрузочного диска (обычно диска С:), либо адрес активного boot-сектора в таблице разделов диска (Disk Partition Table), расположенной в МВR винчестера.

сектор или

Рис. 3.4. Незараженный диск.

Рис. 3.5. Зараженный диск (подмена boot/МВR).

 

 

 

 

             
    I      
      4 |      
    Модифицированная модифицИроВаННаЯ    
             

3.6. Зараженный диск (подмена активного boot-сектора в Disk Partition Table)

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

Макровирусы

Наибольшее распространение получили макровирусы для MS Office (Word, Ехсеl и PowerPoint), хранящих информацию в формате ОLE2 (Object Linking and Embedding). Вирусы в прочих приложениях достаточно редки.

Физическое расположение вируса внутри файла MS Office зависит от его формата, который в случае продуктов MS чрезвычайно сложен - каждые файл-документ или таблица Ехсеl представляют собой последовательность блоков данных (каждый из которых также имеет свой формат), объединенных между собой при помощи большого количества служебных данных. По причине такой сложности форматов файлов представитm расположение макро-вируса в файле можно лишь схематично:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

фай Незаряженный файл-документ или табл Вирус таблица Вирус в файле-документе или таблице   гхе  
  Заголовок файла   Заголовок файла  
Служебные данные (каталоги, FАТ) Служе6ные данные (каталоги, FAT)  
Текст Текст  
Шрифты Шрифты  
Макросы (если есть)   Макросы (если есть)  
Прочие данные  
Прочие данные  
    .! .  

Рис. 3.7, Расположение макровируса в файле

При работе с документами и таблицами MS Office выполняет различные действия: открывает документ, сохраняет, печатает, закрывает и т.д. При этом MS Office, например, ищет и выполняет соответствующие «встроенные макросы» - при сохранении файла по команде File/Save вызывается макрос FileSave, при сохранении по команде File/SaveAs - FileSaveAs, при печати документов - File/Print и т.д., если, конечно, таковые макросы определены.

Существует также несколько «автомакросов», автоматически вызываемых при различных условиях. Например, при открытии документа МS проверяет наличие макроса AutoOpen. Если такой макрос присутствует, то выполняет его. При закрытии документа выполняет макрос AutoClose, при запуске вызывается макрос AutoExec, при завершении работы - AutoExit, при создании нового документа - AutoNew. Автоматически (т.е.- без участия пользователя) выполняются также макросы/функции ассоциированные с какой-либо клавишей либо моментом времени или датой, т.е. МS вызывает макрос/функцию при нажатии на какую-либо конкретную клавишу (или клавиш) либо при достижении какого-либо момента времени.

Макро-вирусы, поражающие файлы MS Office как правило, пользуются одним из перечисленных выше приемов - в вирусе либо присутствует авто-макрос (авто-функция), либо переопределен один из стандартных системных макросов (ассоциированный с каким-либо пунктом меню), либо макрос вируса вызывается автоматически при нажатии на какую-либо клавишу или комбинацию клавиш. Получив управление макро-вирус переносит свой код в другие файлы, обычно в файлы, которые редактируются в данный момент. Реже макро вирусы самостоятельно ищут другие файлы на диске.

Скрипт-вирусы

Следует отметить также скрипт-вирусы, являющиеся подгруппой файловых вирусов. Данные вирусы, написаны на различных скрипт-языках (VBS, JS, ВАТ, PHP). Они либо заражают другие скрипт-программы (командные и служебные файлы Windows или Linux), либо являются частями многокомпонентных вирусов. Также, данные вирусы могут заражать файлы других форматов (например, html), если в них возможно выполнение скриптов.