Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Структура файлового нерезидентного вируса.




Файловые вирусы являются наиболее распространенной разновидностью компьютерных вирусов. Принципиально они заражают любой тип исполняемых файлов: COM, EXE, OVL и т.д. Однако основными объектами заражения являются файлы типа COM и файлы типа EXE. Наиболее просто осуществляется заражение COM-файлов, которые представляют собой почти точную копию участка памяти с загруженной программой. Единственная тре­буемая настройка при загрузке COM-файлов состоит в загрузке сегментных регистров значениями, соответствующими месту загрузки программы. Значи­тельная часть COM-файлов начинается с команды перехода, обходящей содер­жащие в начале программы данные.

При заражении COM-файлов вирус запоминает в своем теле первые три или больше байтов программы и вместо них записывает переход на начало собст­венного кода. Так поступает большинство файловых вирусов, заражающих COM-файлы, но не все. Дело в том, что при дописывании тела вируса в ко­нец заражаемого файла весь код вируса должен быть написан специальным образом, обычно называемым позиционно-независимым программированием: при выполнении программы все ссылки должны адресоваться через соответствую­щее смещение, которое обычно хранится в одном из регистров.

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

Простейший нерезидентный компьютерный вирус, заражающий COM-файлы в текущем каталоге и дописывающий свое тело в конец файла, можно предста­вить в виде следующей неформальной спецификации.

Шаг 1: Восстановить первые три байта программы. Три байта зараженной программы, сохраненные в теле вируса, пересылаются на свое старое место.

Шаг 2: Проверить среду. Проверить версию операционной системы. Если не подходящая, то перейти к шагу 11.

Шаг 3: Найти очередную жертву(ы). Найти в текущем каталоге очередной файл типа COM. При неудаче перейти к шагу 11.

Шаг 4: Проверить зараженность потенциальной жертвы. Считать область, позволяющую установить, заражен ли уже данный файл вирусом или нет. Про­верить содержимое этой области. Если файл уже заражен, то перейти к шагу 3, иначе перейти к шагу 5.

Шаг 5: Проверить, подходит ли жертва для заражения. Если длина файла + длина вируса больше 64К, перейти к шагу 3, иначе перейти к шагу 6.

Шаг 6: Снять атрибут READ ONLY, запомнить дату создания программы. Снять указанный атрибут и запомнить в своем теле дату создания програм­мы.

Шаг 7: Обеспечить передачу управления вирусу. Считать первые три бай­та зараженной программы и записать их в своем теле. Сформировать команду перехода на байт, следующий за концом программы, и записать соответству­ющие три байта в начало заражаемой программы. При неудаче перейти к шагу 11, иначе перейти к шагу 8.

Шаг 8: Дописать тело вируса в конец заражаемой программы. Передвинуть указатель файла в конец программы и установить режим дозаписи. Перепи­сать свое тело в конец заражаемой программы. При неудаче перейти к шагу 11, иначе перейти к шагу 9.

Шаг 9: Восстановить дату создания зараженной программы. Записать в элемент каталога, соответствующий заражаемой программе, дату, сохранен­ную в теле вируса.

Шаг 10: Восстановить атрибут READ ONLY. Присвоить заражаемому файлу атрибуты, установленные у файла до заражения и сохраненные в теле виру­са. При неудаче перейти к шагу 11, иначе перейти к шагу 10.

Шаг 11: Выход. Восстановить содержимое регистров и передать управле­ние программе-вирусоносителю.

Как видно из приведенной схемы, данный вирус распространяется не мгновенно по всей файловой системе, а постепенно, по мере заражения фай­лов в текущем каталоге. Поэтому от момента появления в файловой системе первого зараженного файла до заражения всех файлов в каталоге должно пройти некоторое время, зависящее от интенсивности использования зара­женной программы.

Вставка тела вируса при заражении может выполняться не только в хвост файла. Встречаются случаи имплантации в начало или середину файла.

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

2) Вставка в конец файла. Это наиболее распространенный случай. При этом необходимо обеспечить передачу управления коду вируса до начала ра­боты зараженной программы. Для файлов типа COM чаще всего это реализуется заменой нескольких первых байтов программы (обычно трех в соответствии с размером кода команды перехода микропроцессора 8088/8086) на команду перехода к началу вируса (инсталлятору). При этом сами заме­ненные байты обязательно должны быть сохранены где-то в теле вируса, что обеспечивает возможность их восстановления (операция поиска этих трех байтов является составной частью работы любого фага). Когда инсталлятор вируса получает управление, то обычно в начале своей работы он восста­навливает измененные вирусом байты в первоначальном виде.

3) Вставка в середину файла. Этот способ заражения файла встречается редко. Во-первых, этот способ используется узкоспециализированными виру­сами, поражающими определенный класс программ, особенности структуры ко­торого заранее известны, например, только файл СOMMAND.COM. Во-вторых, и это более частый случай, вставка в середину возможна путем перебрасывания замещаемых блоков в конец файла. В частном случае, когда заражаемый файл содержит области нулей или других повторяющихся символов достаточного размера, вставка в середину происходит без увеличения длины программы, что затрудняет обнаружение зараженных файлов. Вставка в середину может произойти и случайно. В этом случае вирус считает, что файл имеет длину, указанную в заголовке, и записывает свой код в область буфера или оверлея. При этом он оказывается в середине действительно занимаемого данной программой файла. И, наконец, файл может быть заражен несколькими вирусами, одно­типно заражающими файл (обычно дописывающими свой код в конец файла). В этом случае вирус, первым заразивший данный файл, оттесняется к середине файла последующими вирусами. Являясь сравнительно редкими, указанные случаи довольно часто не учитываются создателями антивирусных программ, в частности, детекторов и фагов, которые, увлекаясь оптимизацией времени выполнения своих программ, принимают "слишком сильные" допущения о рас­положении кода вируса в теле зараженной программы. В результате файл мо­жет быть не детектирован как зараженный или вылечен неправильно.

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

 


 


Поделиться:

Дата добавления: 2015-04-18; просмотров: 81; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты