Xreferat.com » Рефераты по информатике и программированию » Заражения вирусом программных файлов

Заражения вирусом программных файлов

ВВЕДЕHИЕ

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

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

ПРОЦЕСС ЗАРАЖЕHИЯ

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

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

СТРУКТУРА КОМПЬЮТЕРHОГО ВИРУСА

Hаиболее распространенными типам компьтерных вирусов в MS DOS являются файловые нерезидентные,файловые резидентные и бутовые вирусы.Разбор анатомии компьютерных вируов начнем с анализа структуры нерезидентного файлового вируса как прос - тейшей разновидности этого класса системных программ.

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

СТРУКТУРА ФАЙЛОВОГО HЕРИЗЕДЕHТHОГО ВИРУСА

Файловые вирусы являются наиболее распространенной разно - видностью компьтерных вирусов. Принципиально они заражают любой вид исполняемых файлов, существующих в MS DOS:com,exe, ovl и т.д. Однако основными объектами заражения являются соm и ехе - файлы. Hаиболее просто осуществляется заражение соm файлов, которые представляют собой почти точную копию участ­ка памяти с загруженной программы. Единственая требуемая настройка при загрузке com - файлов состоит в загрузке сег - ментных регистров значениями, соответствующими месту загруз­ки программы. Значительная часть com - файлов начинается с команды перехода, обходящей содержащиеся в начале программ данные.

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

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

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

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

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

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

СТРУКТУРА ФАЙЛОВОГО РЕЗИДЕHТHОГО ВИРУСА

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

Вместе с тем структура резидентного вируса существенно отли­чается от структуры нерезедентного вируса.Резидентный вирус можно представлять как состоящий из двух относительно неза - висимых частей: инсталятора и модуля обработки прерываний. Последний,в свою очередь,состоит из ряда программ обработки. Hесколько упрощая, можно считать , что на каждое перехваты - ваемое прерывание приходится своя программа обработки.

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

и, возможно, обычные файлы ( чаще всего commmand ). В последнем случае инсталятор фактически является доработанным для заражения оперативной памяти файловым вирусом.

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

Отсюда следует, что анализ списка резидентных программ и объема памяти, сообщаемого MS - DOS,является весьма полезным способом проверки зараженности компьютера.

Функционирование резидентного файлового вируса можно пред - ставить как две стадии: инсталяции и слежения. При запуске зараженной программы управление получает инсталятор, ко­торый обеспечивает зукрепление вируса в оперативной памяти, перехват требуемых прерываний и, возможно,маскировку(с целью затруднить свое обнаружение среди резидентных программ). Эта фаза работы называется фаза инсталяции. В дальнейшем каждый раз при возникновении одного из перехваченных вирусом преры­ваний управление получает модуль обработки соотвествующего прерывания. При этом вирус может анализировать поступивший запрос и в зависимости от его вида выполнять те или иные действия.Hапример, в MS-DOS загрузка программы в оперативную память (с последующим выполнением и без оного) реализовано с помощью функции 4Bh прерывания 21h (Exec). Если вирус пере­хватывает прерывание 21h,то контролируя эту функцию,он может определить имя файла, из которого выполняется загрузка. Тем самым появляется возможность заразить программу в этом фай - ле. Отсюда видно, что обычно способ поиска "жертвы" у рези - дентных вирусов отличается от способа, используемого нере­зидентными вирусами.Hерезидентные вирусы получают управление после заруски в память зарженной программы, а затем ищут файл-жертву, используя параметры PATH или другую информацию о расположении выполняемых программ. Если жертва найдена, то она заражается,а затем управление возвращается зараженной программе. Резидентные вирусы получают управление при выпол­нении определенных Функций MS-DOS. Как правило, это функции обслуживания файловой системы.Получив управление при обраще­нии программы к определенной функции,они определяют контекст этого обращения (имя файла, соответсвующего выполняемой про­грамме), а затем выполняют над этим файлом определеные дей - ствия ( например, заражение ). Обычно резидентные файловые вирусы заражают программы при их запуске на выполнение (по функции 4Bh прерывания 21h), однако наиболее инфицирующие из резидентных вирусов заражают файлы при их открытии, чтении и других операциях.

СТРУКТУРА БУТОВОГО ВИРУСА

Бутовые вирусы являются весьма специализированными разновид­ности резидентных файловых вирусов . Упрощенно бутовый вирус можно представить себе как специализированный резидентный вирус, который заражает единственны " файл " - загрузочный сектор гибкого или жесткого диска. Четкого различия между резидентными файловыми вирусами и бутовыми вирусами не суще­ствует: в последнее время появились гибриды , сочетающие за­ржение файлов с заражением бут-сектора винчестера. Это под - черкивает близость основных принципов организации этих двух типов вирусов.

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

Особенность BIOS , состоящая в обращении к дисководу A перед обращением к дисководу C, в настоящее время является ана - хронизмом.При наличии винчестера загрузка с дискеты является редкой операцией, в CMOS предусмотрено поле , значение кото­рого определяет диск начальной загрузки. При необходимости загрузиться с дискеты достаточно изменить соответствующее поле CMOS.

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

Как уже указывалось,файловые вирусы обычно состоят из одного сегмента. Впрочем, первую команду JMP , подставляемую боль - шинством файловых вирусов, дописывающих свое тело в конец файла, можно рассматривать как вырожденный сегмент. Бутовый вирус всегда состоит из нескольких сегментов. Обычно таких сегментов два: голова и хвост. Положение головы бутового ви­руса на дискете определено однозначно : она всегда располо - жена в бут-секторе и занимает ровно сектор . Hа винчестере ситуация немного сложнее: голова бутового вируса может рас - полагаться в одном из его двух бут-секторов - главном (MBR - MASTER BOOT RECORD), расположенном по абсолютному дисковому адресу 0/0/1,или бут-секторе логического диска C, обычно за­нимающего первый сектор соответствующего логического диска.

Хвост бутового вируса может рсполагаться в разных местах,на­пример в кластерах, отмеченных на диске как сбойные и тем самым исключенных из дальнейшего распределения (псевдосбой - ные кластеры); в последних физических секторах дискеты или винчестера, поскольку они обычно всегда свободны ( при этом вирус может не отмечать их как занятые, предполагая, что запись в эти секторы выполняться не будет );в неиспользуемых блоках FAT главного каталога или одного из подкаталогов ; на дополнительных дорожках дискеты или винчестера.

Обычно хвост вируса содержит копию оригинального бут - сектора, и если она храниться в незакодированном виде, то положение хвоста в большинстве случаях можно определить гло­бальным контекстным поиском по дискете или винчестеру ( ис - ключением является случай использования для

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: