скачать рефераты

скачать рефераты

 
 
скачать рефераты скачать рефераты

Меню

Реферат: Защита от вирусов скачать рефераты

Реферат: Защита от вирусов

Волгоградская Государственная Академия

Физической Культуры

Реферат по защите информации

на тему: защита программного обеспечения

Выполнил:

ст. гр. 114

Егоров Д. С.

Проверил:

Волгоград 2004

Оглавление

1. ЧТО ТАКОЕ КОМПЬЮТЕРНЫЕ ВИРУСЫ............................ 3

2. ЦИКЛ ФУНКЦИОНИРОВАНИЯ ВИРУСОВ.......................... 3

3. «ВАКЦИНАЦИЯ» ПРОГРАММ................................................. 4

3.1. Заголовок исполняемых файлов........................................... 5

3.2. Защита вновь создаваемых программ.................................. 7

3.3. Модуль F_Anti.............................................................8

4. ЗАЩИТА СУЩЕСТВУЮЩИХ ЕХЕ-ФАЙЛОВ................... 10

4.1. Описание программ SetFag.pas и Fag.asm.......................... 11

4.2. Программа AntiVir........................................................14

5. НЕКОТОРЫЕ РЕКОМЕНДАЦИИ........................................... 16

1. ЧТО ТАКОЕ КОМПЬЮТЕРНЫЕ ВИРУСЫ

Если Вы имеете опыт продолжительной работы с ПК, то, возможно, уже сталкивались

с компьютерными вирусами или хотя бы слышали о них. Ком­пьютерный вирус-это

программа, производящая в Вашем ПК действия, в которых Вы не нуждаетесь и о

которых не подозреваете. Главной ее особен­ностью является способность к

«размножению», т.е. к созданию множества готовых к дальнейшей работе

экземпляров вируса. Вирусы «цепляются» к обычным исполняемым файлам типа .

ЕХЕ, .СОМ или к загрузочным секторам физических носителей информации

(дискет) и таким образом перемещаются от одного ПК к другому.

Являвшиеся первоначально вполне невинным развлечением скучающих программистов

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

количество и типы таких программ растут с ужасающей скоростью, а сами вирусы

в ряде случаев приобрели весьма неприятные свойства-некоторые из них способны

уничтожать файловую структуру дисков со всеми катастрофическими для

пользователя последствиями. В ли­тературе [14] описывается беспрецедентный

случай, когда вирус на Три дня (с 2 по 4 ноября 1988 г.) вывел из строя

фактически всю компьютерную сеть США. Были парализованы компьютеры Агентства

национальной безопасности, Стратегического командования ВВС США, локальные

сети всех крупных университетов и исследовательских центров. Лишь в последний

момент удалось спасти систему управления полетом космических кораблей Шаттл.

Положение было настолько серьезным, что к расследованию немедленно приступило

ФБР. Виновником катастрофы, причинившей ущерб более чем в 100 миллионов

долларов, оказался студент выпускного курса Корнеллского университета

Р.Моррис, придумавший достаточно хитрую разновидность вируса. Он был исключен

из университета с правом восстановления через год и приговорен судом к уплате

штрафа в 270 тысяч долларов и трем месяцам тюремного заключения.

Трудно объяснить, для чего программисты тратят силы и время на создание все

более изощренных типов вируса, поскольку их авторы почти всегда ос­таются или

надеются остаться анонимными, так что естественное для человека стремление к

известности здесь исключено. Может быть это неудачная шутка (этой версии

придерживался Р.Моррис), возможно это связано с патологиче­скими отклонениями

в психике, а может быть объяснение кроется в стрем­лении заработать на

создании антивирусных программ? Как бы там ни было, нам нельзя не считаться с

возможностью заражения ПК компьютерным ви­русом.

2. ЦИКЛ ФУНКЦИОНИРОВАНИЯ ВИРУСОВ

В цикле существования любого вируса можно выделить три этапа. Первоначально

вирус находится в неактивном состоянии. В этом состоянии он вне­дрен в тело

исполняемого файла или находится в загрузочном секторе диска и «ждет» своего

часа. Именно в неактивном состоянии вирусы переносятся вместе с программами

или дискетами от одного ПК к другому (обмен про­граммами между пользователями

ПК-явление обыденное, и Вы сами, чи­татель, возможно копировали полюбившуюся

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

Разумеется, в неактивном состоянии вирус ничего не может сделать. Для того

чтобы он начал свою работу, необходимо запустить исполняемый файл или

загрузиться с зара­женной дискеты. В этот момент активизируется вирус,

который либо создает резидентную в памяти программу, способную порождать

копии или произво­дить какие-то разрушительные действия, либо немедленно

приступает к работе.

Если вирус создал резидентную программу, то ее активизация осуществ­ляется

различными способами - все зависит от фантазии автора вируса. Обычно вирус

перехватывает прерывание $21, являющееся ключевым для доступа к любым операциям

с MS-DOS. Таким образом, любая попытка чтения или записи информации на

диск или обращение к клавиатуре дисплея при­водит к активизации резидентной

программы вируса. После получения управления (или активизации резидентной

программы) вирус приступает к «размножению»: он отыскивает подходящий

исполняемый файл и внедряет свой код в его тело (см. ниже). Как правило, вирус

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

внимания на чрезмерное замедление в работе программ: второй этап

жизнедеятельности вируса - это этап активного размножения, поэтому вирусная

программа стремится максимально скрыть от пользователя ПК результаты своей

дея­тельности.

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

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

вести себя странно: зазвучит ли музыкальная фраза, или начнут «сыпаться»

символы на экране дисплея-не суть важно, главное, что только в этот момент Вы

с ужасом вспомните, что на жестком диске находятся чрез­вычайно важные для

Вас данные или программы, которые Вы не успели или не смогли скопировать на

дискеты. Увы! Некоторые вирусы к этому моменту могут уже безвозвратно

нарушить файловую структуру.

Что делать при обнаружении вируса? Прежде всего не паниковать, ведь далеко не

все вирусы отличаются «кровожадностью». Следует выключить компьютер, вставить в

привод гибкого диска заранее припасенную эталонную системную дискету (никогда

не снимайте с нее защиту!) и снова включить компьютер. Если на ПК имеется

специальная кнопка для перезагрузки {RESET или INIT),

можно использовать ее и не выключать/включать компьютер, но во всех случаях не

пытайтесь перезагрузиться с помощью Ctrl-Alt-

Del: от не­которых типов вируса Вы не избавитесь таким образом. Затем нужно

запустить какую-либо программу—антивирус (например, AIDSTEST

Д.Н.Лозинского) и с ее помощью локализовать и удалить вирус. Если антивирусная

программа не может обнаружить вирус или у Вас под рукой нет такого рода

программ, сле­дует попробовать обратиться к нужному Вам жесткому диску и, если

это удастся сделать, скопировать все наиболее ценное (но только не исполняемые

файлы!) на дискеты. После этого заново переформатировать жесткий диск,

перенести на него эталонную копию ДОС и восстановить с дискет то, что удалось

спасти.

3. «ВАКЦИНАЦИЯ» ПРОГРАММ

Что же следует сделать, чтобы эта безрадостная картина не стала реаль­ностью?

Один ответ очевиден-периодически (и по возможности чаще) со­хранять жизненно

важные для Вас результаты работы на дискетах. Нет ничего проще, чем дать этот

совет, гораздо сложнее заставить себя следовать ему: я сам, честно говоря,

далеко не каждый день трачу время на архивирование. Второй ответ менее

очевиден. С его простой идеей я впервые познакомился в прекрасной статье

Ф.Н.Шерстюка.

Вот эта идея: нужно произвести «вакцинацию» исполняемых программ, т.е.

придать им свойство самодиагностики, позволяющее произвести контроль

собственного файла и выяснить, заражен он или нет. Если факт заражения

установлен, программа может попытаться восстановить свой исходный вид, т.е.

удалить прицепившийся к ее файлу вирус. Если эту идею последовательно

воплощать в жизнь, то большинство Ваших программ приобретет стойкий

«иммунитет» к вирусам, во всяком случае, они смогут достаточно быстро

со­общить Вам о факте заражения.

Преимущества этой идеи очевидны: в отличие от разработчиков много­численных

антивирусных программ, которые борются с конкретными разно­видностями вирусов,

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

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

быть легко установлен в момент запуска Вашей программы.

3.1. Заголовок исполняемых файлов

Какую именно информацию о незараженном файле следует сохранять? Для ответа на

этот вопрос необходимо знать соглашение ДОС о формате испол­няемых файлов. Как

известно, существуют два формата: СОМ и ЕХЕ. Любая программа,

обрабатываемая системой Турбо Паскаль версии 4.0 и выше, может быть

оттранслирована только в ЕХЕ-файл, поэтому все дальнейшие рассуж­дения

относятся именно к этому формату.

В начале ЕХЕ-файла располагается заголовок, в котором содержится вся

информация, необходимая для преобразования дискового файла в готовую к работе

программу. Первые 28 байт заголовка соответствуют следующей структуре данных:

Type

HeadExeType = record

Sign: Word; {Признак ЕХЕ-файла}

PartPag: Word; {Часть неполного сектора в конце файла}

PageCnt: Word; {Количество секторов, включая неполный}

ReloCnt: Word; {Количество элементов в таблице перемещения}

HdrSize: Word; {Длина заголовка в параграфах}

MinMem: Word; {Минимальный размер кучи (в параграфах)}

МахМет: Word; {Максимальный размер кучи (в параграфах)}

ReloSS: Word; {Начальное значение сегмента стека SS}

ExeSP: Word; {Начальное значение указателя стека SP}

ChkSum: Word; {Контрольная сумма всех слов файла}

ExelP: Word; {Смещение точки запуска программы}

ReloCS: Word; {Начальное значение сегмента кода CS};

TabiOff: Word; {Смещение первого элемента таблицы перемещения}

Overlay: Word; {Номер оверлея или 0 для основной программы}

end; {HeadExe}

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

предназначенную для настройки адресов загруженной программы. Таблица начинается

с байта TabiOff от начала файла и содержит ReloCnt

четырехбайтных элементов следующего вида:

Type

ReloTablltem = record

ItemSeg: Word; {Сегмент перемещаемого адреса}

IternOfs: Word; {Смещение перемещаемого адреса}

end;

Признак ЕХЕ-файла хранится в поле Sign в виде символов «

MZ» (код $5A4D) - с этого признака должен начинаться любой ЕХЕ-ф

айл. Поле HdrSize содержит длину всего заголовка в параграфах (участках

памяти длиной по 16 байт каждый). Поля PartPag и PageCnt

определяют общую длину загружаемой в память части ЕХЕ-файла по следующей

формуле:

L = (PageCnt-l)*512 + PartPag - HdrSize*16

Остальная часть файла (длина ЕХЕ-файла может быть больше L+HdrSize*16)

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

системой Турбо Паскаль, (если, разумеется, есть остаток) содержится информация,

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

Подавляющее большинство ЕХЕ-вирусов пристыковывает свою программу в

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

передано управление, изменяет поля PartPag, PageCnt, ReloCS, ExelP

(адрес точки, куда передается управление после окончания загрузки) и, воз­можно,

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

память части файла должна составлять

ExeSize = FileSize + VirusSize,

где FileSize-полная длина ЕХЕ-файла, а VirusSize-длина

программы ви­руса. Так как в остатке фала могут храниться оверлеи (или архив

для саморазгружающихся архивных программ), длина ExeSize может

оказаться чрез-мерно большой, так что программа не сможет загрузиться в память

или не сможет работать нормальным образом. Некоторые безграмотно написанные

вирусы не учитывают это обстоятельство и быстро выдают себя, т.к. зара­женные

программы перестают работать.

Другой способ внедрения вируса-пристыковка кода вируса до начала загружаемой

части программы и сразу за заголовком файла. L - загружаемая в память часть

файла.

Такой способ внедрения позволяет не загружать в память весь ЕХЕ-файл, а

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

на кажущееся преимущество такого способа, он используется дос­таточно редко.

Его реализация значительно сложнее, так как перед передачей управления основной

программе вирус должен перенести 256 байт префикса программного сегмента {

PSP) в конец собственного кода так, чтобы они не­посредственно

предшествовали телу программы-в противном случае будет нарушена важная связь

программы с PSP или относительная адресация в самой программе.

Кроме того, в процессе заражения он должен увеличить на вели­чину VirusSize

поле IternOfs каждого элемента таблицы перемещения и абсо­лютного

адреса, указываемого этим элементом. В отличие от стандартного за­грузчика ДОС

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

Так как в ЕХЕ-программе средней сложности может быть несколько сотен

элементов таблицы перемещения, процесс настройки таблицы вирусом приводит к

заметному увеличению времени запуска про­граммы, что может обнаружиться

пользователем. На этапе размножения ви­русы стремятся по возможности скрыть от

пользователя результат своей деятельности, поэтому ЕХЕ-файлы редко

поражаются вирусами, пристыкованными в начало файла.

Разумеется, существует возможность внедрения вируса непосредственно в тело

исполняемой программы. Однако на практике это почти всегда означает

разрушение логики работы программы, поэтому такой вирус немедленно

об­наруживается.

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

вирус (или вирус, который еще только будет создан!), рассчи­танный на поражение

ЕХЕ-файла, пристыковывает свой код в конец файла и изменяет его заголовок.

Следовательно, для контроля факта заражения про­граммы и ликвидации вируса

необходимо где-то сохранить заголовок файла и его эталонную длину и

периодически сопоставлять действительный заголовок и длину с эталонными

значениями. При этом следует учитывать то обстоя­тельство, что некоторые вирусы

контролируют любое обращение к дисковым секторам, в которых расположена их

Страницы: 1, 2, 3