Методы защиты. Антивирусы
Каким бы ни был вирус, пользователю необходимо знать основные методы защиты от компьютерных вирусов. Для защиты от вирусов можно использовать: • общие средства защиты информации, которые полезны также как и страховка от физической порчи дисков, неправильно работающих программ или ошибочных действий пользователя; • профилактические меры, позволяющие уменьшить вероятность заражения вирусом; • специализированные программы для защиты от вирусов. Имеются две основные разновидности общих средств защиты информации, обеспечивающие: • копирование информации — создание копий файлов и системных областей дисков; • разграничение доступа, которое предотвращает несанкционированное использование информации, в частности защиту от изменений программ и данных вирусами, неправильно работающими программами и ошибочными действиями пользователей. Для обнаружения, удаления и защиты от компьютерных вирусов разработано несколько видов специальных программ, которые позволяют обнаруживать и уничтожать вирусы. Такие программы называются антивирусными. Различают следующие виды антивирусных программ: • программы-детекторы; • программы-доктора или фаги; • программы-ревизоры; • программы-фильтры; • программы-вакцины или иммунизаторы. Программы-детекторы осуществляют поиск характерного для конкретного вируса кода (сигнатуры) в оперативной памяти и в файлах и при обнаружении выдают соответствующее сообщение. Недостатком таких антивирусных программ является то, что они могут находить только те вирусы, которые известны разработчикам таких программ. Программы-доктора или фаги, а также программы-вакцины не только находят зараженные вирусами файлы, но и «лечат» их, т. е. удаляют из файла тело программы-вируса, возвращая файлы в исходное состояние. В начале своей работы фаги ищут вирусы в оперативной памяти, уничтожая их, и только затем переходят к «лечению» файлов. Среди фагов выделяют полифаги, т. е. программы-доктора, предназначенные для поиска и уничтожения большого количества вирусов. Наиболее известные из них: Aidstest, Scan, Norton AntiVirus, Doctor Web.
Учитывая, что постоянно появляются новые вирусы, программы-детекторы и программы-доктора быстро устаревают и требуется регулярное обновление версий. Антивирусы-полифаги Антивирусы-полифаги — наиболее распространенные средства по борьбе с вредоносными программами. Исторически они появились первыми и до сих пор удерживают несомненное лидерство в этой области. В основе работы полифагов стоит простой принцип — поиск в программах и документах знакомых участков вирусного кода (так называемых сигнатур вирусов). В общем случае сигнатура — это такая запись о вирусе, которая позволяет однозначно идентифицировать присутствие вирусного кода в программе или документе. Чаще всего сигнатура — это непосредственно участок вирусного кода или его контрольная сумма (дайджест). Первоначально антивирусы-полифаги работали по очень простому принципу — осуществляли последовательный просмотр файлов на предмет нахождения в них вирусных программ. Если сигнатура вируса была обнаружена, то производилась процедура удаления вирусного кода из тела программы или документа. Прежде чем начать проверку файлов, программа-фаг всегда проверяет оперативную память. Если в оперативной памяти оказывается вирус, то происходит его деактивация. Это вызвано тем, что зачастую вирусные программы производят заражение тех программ, которые запускаются или открываются в тот момент, когда вирус находится в активной стадии (это связано со стремлением экономить на усилиях по поиску объектов заражения). Таким образом, если вирус останется активным в памяти, то тотальная проверка всех исполняемых файлов приведет к тотальному заражению системы.
В настоящее время вирусные программы значительно усложнились. Например, появились так называемые «stealth-вирусы». В основе их работы лежит тот факт, что операционная система при обращении к периферийным устройствам (в том числе и к жестким дискам) использует механизм прерываний. Здесь необходимо сделать небольшое отступление на тему «Как работает механизм прерываний». При возникновении прерывания управление передается специальной программе — «Обработчику прерываний». Эта программа отвечает за ввод и вывод информации в/из периферийного устройства. Кроме того, прерывания делятся на уровни взаимодействия с периферией (в нашем случае — с жесткими и гибкими дисками). Есть уровень операционной системы (в среде MS DOS — прерывание 25h), есть уровень базовой системы ввода/вывода (уро вень BIOS — прерывание 13h). Опытные системные программисты могут работать и напрямую, обращаясь к портам ввода/вывода устройств. Но это довольно серьезная и трудная задача. Столь многоуровневая система сделана, прежде всего, с целью сохранения переносимости приложений. Именно благодаря такой системе, скажем, оказалось возможным осуществлять запуск DOS-приложений в многозадачных средах типа MS Windows или IBM OS/2. Но в такой системе изначально скрыта и уязвимость: управляя обработчиком прерываний, можно управлять потоком информации от периферийного устройства к пользователю. Stealth-вирусы, в частности, используют механизм перехвата управления при возникновении прерывания. Заменяя оригинальный обработчик прерывания своим кодом, stealth-вирусы контролируют чтение данных с диска. В случае, если с диска читается зараженная программа, вирус «выкусывает» собственный код (обычно код не буквально «выкусывается», а происходит подмена номера читаемого сектора диска). В итоге пользователь получает для чтения «чистый» код. Таким образом, до тех пор; пока вектор обработчика прерываний изменен вирусным кодом, сам вирус активен в памяти компьютера, обнаружить его простым чтением диска средствами операционной системы невозможно. Схожий механизм маскировки используется и загрузочными вирусами, о которых будет сказано дальше. В целях борьбы со stealth-вирусами ранее рекомендовалось (и, в принципе, рекомендуется и сейчас) осуществлять альтернативную загрузку системы с гибкого диска и только после этого проводить поиск и удаление вирусных программ. В настоящее время загрузка с гибкого диска может оказаться проблематичной (для случая с Win32 — антивирусными приложениями запустить их не удастся). Ввиду всего вышесказанного, антивирусы-полифаги оказываются максимально эффективными только при борьбе с уже известными вирусами, то есть с такими, чьи сигнатуры и методы поведения знакомы разработчикам.
Только в этом случае вирус со 100%-ной точностью будет обнаружен и удален из памяти компьютера, а потом — и из всех проверяемых файлов. Если же вирус неизвестен, то он может достаточно успешно противостоять попыткам его обнаружения и лечения. Поэтому главное при пользовании любым полифагом — как можно чаще обновлять версии программы и вирусные базы. Особняком тут стоят так называемые эвристические анализаторы. Дело в том, что существует большое количество вирусов, алгоритм которых практически скопирован с алгоритма других вирусов. Как правило, такие вариации создают непрофессиональные программисты, которые по каким-то причинам решили написать вирус. Для борьбы с такими «копиями» и были придуманы эвристические анализаторы. С их помощью антивирус способен находить подобные аналоги известных вирусов, сообщая пользователю, что у него, похоже, завелся вирус. Естественно, надежность эвристического анализатора не 100 %, но все же его коэффициент полезного действия больше 50 %. Вирусы, которые не распознаются антивирусными детекторами, способны написать только наиболее опытные и квалифицированные программисты. Эвристическим анализатором кода называется набор подпрограмм, анализирующих код исполняемых файлов, памяти или загрузочных секторов для обнаружения в нем разных типов компьютерных вирусов. Основной частью эвристического анализатора является эмулятор кода. Эмулятор кода работает в режиме просмотра, то есть его основная задача — не выполнять код, а выявлять в нем всевозможные события, т. е. совокупность кода или вызов определенной функции операционной системы, направленные на преобразование системных данных, работу с файлами, или обнаруживать часто используемые вирусные конструкции. Грубо говоря, эмулятор просматривает код программы и выявляет те действия, которые эта программа совершает. Если действия этой программы укладываются в какую-то определенную схему, то делается вывод о наличии в программе вирусного кода.
Конечно, вероятность как пропуска, так и ложного срабатывания весьма высока. Однако правильно используя механизм эвристики, пользователь может самостоятельно прийти к верным выводам. Например, если антивирус выдает сообщение о подозрении на. вирус для единичного файла, то вероятность ложного срабатывания весьма высока. Если же такое повторяется на многих файлах (а до этого антивирус ничего подозрительного в этих файлах не обнаруживал), то можно говорить о заражении системы вирусом с вероятностью, близкой к 100 %. Наиболее мощным эвристическим анализатором в настоящее время обладает антивирус Dr.Web. Использование эвристического анализатора, помимо всего вышеперечисленного, позволяет также бороться с вирус-генераторами и полиморфными вирусами. Классический метод определения вирусов по сигнатуре в этом случае вообще оказывается неэффективен. Вирус-генераторы — это специализированный набор библиотек, который позволяет пользователю легко сконструировать свой собственный вирус, даже имея слабые познания в программировании. К написанной программе, подключаются библиотеки генератора, вставляются в нужных местах вызовы внешних процедур — и вот элементарный вирус превратился в достаточно сложный продукт. Самое печальное, что в этом случае сигнатура вируса будет каждый раз другая, поэтому отследить вирус оказывается возможным только по характерным вызовам внешних процедур — а это уже работа эвристического анализатора. Полиморфный вирус имеет еще более сложную структуру. Само тело вируса видоизменяется от заражения к заражению, при этом сохраняя свое функциональное наполнение. В простейшем случае — если разбросать в теле вируса случайным образом ничего не исполняющие, пустые операторы (типа «mov ax, ax» или «пор»), то тело вирусного кода претерпит значительные изменения, а алгоритм останется прежним. В этом случае на помощь также приходит эвристический анализатор.
Программы-ревизоры Программы-ревизоры относятся к самым надежным средствам защиты от вирусов. Ревизоры запоминают исходное состояние программ, каталогов и системных областей диска тогда, когда компьютер не заражен вирусом, а затем периодически или по желанию пользователя сравнивают текущее состояние с исходным. Обнаруженные изменения выводятся на экран монитора. Как правило, сравнение состояний производят сразу после загрузки операционной системы. При сравнении проверяются длина файла, код циклического контроля (контрольная сумма файла), дата и время модификации, другие параметры. Программы-ревизоры имеют достаточно развитые алгоритмы, обнаруживают стелс-вирусы и могут даже очистить изменения версии проверяемой программы от изменений, внесенных вирусом. К числу программ-ревизоров относится широко распространенная в России программа Adinf. Антивирусные программы-ревизоры позволяют обнаружить вирус. Чаще всего обнаружением вируса дело и заканчивается. Существует блок лечения для популярного антивируса-ревизора Adinf, так называемый Cure Module, но такой блок позволяет лечить лишь те файлы, которые не были заражены на момент создания базы данных программы. Однако обнаружить вирус на компьютере (или даже подозрение на него) антивирусы-ревизоры могут с большой степенью надежности. Обычно наиболее оптимальным является связка полифаг и ревизор. Ревизор служит для обнаружения факта заражения системы. Если система заражена, то в дело пускается полифаг. Если же ему не удалось уничтожить вирус, то можно обратиться к разработчику антивирусных средств — скорее всего, на компьютер попал новый, неизвестный разработчикам вирус. Основу работы ревизоров составляет контроль за изменениями, характерными для работы вирусных программ. В них содержится информация: о контрольных суммах неизменяемых файлов, содержимом системных областей, адресах обработчиков прерываний, размере доступной оперативной памяти и т. п. Вся остальная работа ревизора состоит в сравнении текущего состояния диска с ранее сохраненными данными, поэтому крайне важно, чтобы все контрольные таблицы создавались не на зараженной машине. Только в этом случае работа ревизора будет достаточно эффективной. Итак, перейдем к стадиям работы программы-ревизора. Контроль оперативной памяти. Эта стадия проверки включает в себя процедуры обнаружения следов активных загрузочных и stealth-вирусов в памяти компьютера. Если такие алгоритмы будут найдены, выдается соответствующее предупреждение. Обычно сначала программа ищет уже знакомые вирусы. Далее программа проверяет, изменился ли обработчик Intl3h. Если он изменился, то с вероятностью 90 % можно сказать, что компьютер инфицирован загрузочным вирусом (загрузочные вирусы вынуждены перехватывать это прерывание с тем, чтобы после своей активизации передать управление «нормальному» загрузочному сектору и система загрузилась без сбоев). Ревизор выдает предупреждение об этом и сообщает адрес в памяти, по которому находится новый обработчик Intl3h. В принципе информация о местонахождении обработчика необходима программистам и системным администраторам, а рядовому пользователю следует обратить внимание на предупреждение. Даже если ревизор устанавливается на уже зараженный вирусом компьютер и реальный адрес обработчика Intl3h маскируется вирусом, в 85 % случаев ревизору удается обнаружить истинный адрес обработчика Intl3h в BIOS и работать, используя его. -Если по каким-либо причинам ревизору не удалось получить реальный адрес обработчика, то выдается предупреждение. Истинный адрес обработчика прерывания достигается путем пошагового просмотра тела вируса (по алгоритму своей работы загрузочный вирус вынужден, в конце концов, передавать управление оригинальному обработчику). Некоторые вирусы блокируют трассировку прерываний: при попытке трассировать их коды они приводят систему к «зависанию», перезагружают компьютер и т. д. Поэтому, если при трассировке прерываний компьютер начинает вести себя «странно», то следует быть очень осторожным — не исключено, что оперативная память поражена вирусом. Важным параметром является и размер свободной оперативной памяти. Обычно ревизор запускается самым первым, до загрузки каких-либо программ. Если же размер оперативной памяти уменьшился — это верный признак присутствия в ОЗУ еще какой-то программы. Скорее всего, программа эта — вирус. Контроль системных областей. Контроль системных областей предназначен для обнаружения вирусов, которые используют для своей активации механизм загрузки. Первой с диска загружается загрузочная запись (boot record), которая Содержит в себе мини-программу, управляющую дальнейшей загрузкой. Для жесткого диска первой производится загрузка главной загрузочной записи (Master-BootRecord или MBR). Необходимо дать некоторые пояснения, связанные с обнаружением загрузочных вирусов. В случае если система поражена загрузочным вирусом, то именно ему передается управление при попытке загрузиться с пораженного диска. В этом опасность вируса — если поражен жесткий диск, то управление вирусу будет передаваться при каждом включении компьютера. Загрузочные вирусы в чистом виде передаются исключительно через дискеты, причем заражение осуществляется при попытке загрузиться с пораженной дискеты. Со временем использование дискет вообще и загрузочных дискет, в частности, сократилось до минимума. Однако способ захвата управления оказался столь удобен, что в настоящее время очень распространены вирусы, которые могут поражать как файлы, так и загрузочные сектора. Попав на «чистый» компьютер, такие вирусы первым делом поражают главную загрузочную запись. Однако методы обнаружения именно загрузочных вирусов в настоящее время крайне эффективны и приближаются к 100 % надежности. Чтобы понять, как происходит обнаружение вируса, рассмотрим обнаружение такого вируса «вручную». Произведем загрузку С чистой дискеты (при этом прерывание 13h гарантировано не будет перехвачено загрузочным вирусом) и рассмотрим сектор 0/0/1 винчестера (это физический адрес сектора главной загрузочной записи). Если винчестер разделен (при помощи fdisk) на логические диски, то код занимает приблизительно половину сектора и начинается с байтов FAh33hCOh (вместо 33h иногда может быть 2Bh). Заканчиваться код должен текстовыми строками типа «Missing operating system». В конце сектора размещаются внешне разрозненные байты таблицы разделов. Нужно обратить внимание на размещение активного раздела в таблице разделов. Если операционная система расположена на диске С, а активны 2-й, 3-й или 4-й разделы, то вирус -мог изменить точку старта, сам разместившись в начале другого логического диска (заодно нужно посмотреть и там). Но также это может говорить о наличии на машине нескольких операционных систем и какого-либо boot-менеджера, обеспечивающего выборочную загрузку. Проверяем всю нулевую дорожку. Если она чистая, то есть секторы содержат только байт-заполнитель, все в порядке. Наличие мусора, копий сектора 0/0/1 и прочего может говорить о присутствии загрузочного вируса. Впрочем, антивирусы при лечении загрузочных вирусов лишь «обезглавливают» противника (восстанавливают исходное значение сектора 0/0/1). Проверяем boot-сектор MS-DOS, он обычно расположен в секторе 0/1/1. Его внешний вид для сравнения можно найти на любой «чистой» машине. Примерно таким же способом действуют и программы-ревизоры. Их особенность в том, что они не могут судить об изначальной «чистоте» оперативной памяти, поэтому чтение Master Boot Record происходит тремя различными способами: • (bios) — прямым обращением в BIOS; • (il3h) — чтением через BIOS-прерывание Intl3h; • (i25h) — чтением средствами операционной системы (прерывание Int25h). Если считанная информация не совпадает, налицо действие stealth-алгоритмов. Для большей надежности производится чтение MBR через IDE-порты жесткого диска. До сих пор еще не встречались вирусы, которые могут маскироваться от ревизора, обладающего такой функцией. Аналогичным образом проводится проверка и простого (не главного) загрузочного сектора. Обычно за счет того, что ревизор сохраняет резервную копию системных областей, восстановление повреждений от загрузочного вируса происходит довольно просто: если пользователь дает на то свое согласие, ревизор просто записывает системные области заново. Контроль неизменяемых файлов. Последняя стадия проверки, направленная на обнаружение деятельности файловых вирусов, — контроль изменения файлов. Для всех файлов, которые активно используются и в то же время не должны изменяться (обычно это программы типа win.com и т. п.), создаются контрольные таблицы. В них содержатся значения контрольных сумм и размеров файлов. Затем, в ходе дальнейшего использования ревизора, информация с дисков сравнивается с эталонной, хранящейся в таблицах. Если информация не совпадает, то весьма вероятно нахождение в системе файлового вируса. Самый явный признак — изменение размера или содержимого файла без изменения даты создания файла. Очень важно определить, какие именно файлы являются неизменяемыми. При настройке программы ревизора данные об неизменяемых файлах заносятся в таблицы, содержащие список имен файлов и каталогов, подлежащих контролю ревизором. Каждая строка таблицы содержит одно имя или маску. В принципе, рекомендуется внести в разряд «неизменяемых» те исполняемые файлы, путь к которым указан в переменной PATH. Они чаще всего становятся: жертвой файловых вирусов. После того как все файлы проверены, ревизоры часто сохраняют копии дополнительных областей памяти, которые могут быть испорчены вирусами. Это FLASH- и CMOS-память. Эти области памяти также изменяются достаточно редко и поэтому их изменений могут быть подозрительны. Еще раз отметим, что наиболее эффективной антивирусной защитой будет использование «связки» ревизор — полифаг. Ревизор позволяет отследить активность вируса на диске, а полифаг служит для проверки новых файлов, а также удаления уже известных вирусов. Программы-фильтры, или «сторожа», представляют собой небольшие резидентные программы, предназначенные для обнаружения подозрительных действий при работе компьютера, характерных для вирусов. Такими действиями могут являться: • попытки коррекции файлов с расширениями СОМ, ЕХЕ; • изменение атрибутов файла; • прямая запись на диск по абсолютному адресу; • запись в загрузочные сектора диска; • загрузка резидентной программы. При попытке какой-либо программы произвести -указанные действия «сторож» посылает пользователю сообщение и предлагает запретить или разрешить соответствующее действие. Программы-фильтры весьма полезны, так как способны обнаружить вирус на самой ранней стадии его существования до размножения. Однако они не «лечат» файлы и диски. Для уничтожения вирусов требуется применить другие программы, например фаги. К недостаткам программ-сторожей можно отнести их «назойливость» (например, они постоянно выдают предупреждение о любой попытке копирования исполняемого файла), а также возможные конфликты с другим программным обеспечением. Примером программы-фильтра является программа Vsafe, входящая в состав пакета утилит MS DOS. Вакцины, или иммунизаторы, — это резидентные программы, предотвращающие заражение файлов. Вакцины применяют, если отсутствуют программы-доктора, «лечащие» от вируса. Вакцинация возможна только от известных вирусов. Вакцина модифицирует программу или диск таким образом, чтобы это не отражалось на их работе, а вирус будет воспринимать их зараженными и поэтому не внедрится. В настоящее время программы-вакцины имеют ограниченное применение. Рассмотрим некоторые из антивирусных программ.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|