Первые исследования саморазмножающихся искусственных конструкций проводились в середине прошлого столетия. В работах фон Неймана, Винера и других авторов дано определение и проведён математический анализ конечных автоматов, в том числе и самовоспроизводящихся. Термин "компьютерный вирус" появился позднее. Официально считается, что его впервые употребил сотрудник Лехайского университета (США) Ф. Коэн в 1984 г. на 7-й конференции по безопасности информации, проходившей в США. С тех пор прошло немало времени, острота проблемы вирусов многократно возросла, однако строго определения, что такое компьютерный вирус, так и не дано, несмотря на то, что многие пытались это сделать неоднократно.
Основная трудность, возникающая при попытках дать строгое определение вируса, заключается в том, что практически все отличительные черты вируса (внедрение в другие объекты, скрытность, потенциальная опасность) либо присущи другим программ, которые никоим образом вирусами не являются, либо существуют вирусы, которые не содержат указанных выше отличительных черт (за исключением возможности распространения).
Поэтому представляется возможным сформулировать только обязательное условие для того, чтобы некоторая последовательность выполняемого кода являлась вирусом.
Обязательное (необходимое) свойство компьютерного вируса - возможность создавать свои дубликаты (не всегда совпадающие с оригиналом) и внедрять их в вычислительные сети и/или файлы, системные области компьютера и прочие выполняемые объекты. При этом дубликаты сохраняют способность к дальнейшему распространению.
2. Классификация компьютерных вирусов
Вирусы можно разделить на классы по следующим основным признакам:
среда обитания;
операционная система;
особенности алгоритма работы;
деструктивные возможности.
В зависимости от среды обитания вирусы можно разделить:
файловые;
загрузочные;
макровирусы;
сетевые.
Файловые вирусы либо различными способами внедряются в выполняемые файлы, либо создают файлы-двойники, либо используют особенности организации файловой системы.
Загрузочные вирусы записывают себя либо в загрузочный сектор диска, либо в сектор, содержащий системный загрузчик винчестера, либо меняют указатель на boot-сектор.
Макровирусы заражают файлы-документы и электронные таблицы нескольких популярных редакторов.
Сетевые вирусы используют для своего распространения протоколы или команды компьютерных сетей и электронной почты.
Существует большое количество сочетаний, например, файлово-загрузочные вирусы, заражающие как файлы, так и загрузочные сектора дисков. Такие вирусы, как правило, имеют довольно сложный алгоритм работы, часто применяют оригинальные методы проникновения в систему. Другой пример такого сочетания - сетевой макровирус, который не только заражает редактируемые документы, но и рассылает свои копии по электронной почте.
Заражаемая операционная система является вторым уровнем деления вирусов на классы.
Каждый файловый и сетевой вирус заражает файлы какой-либо одной или нескольких операционных систем - DOS, Windows, Win95/NT, OS/2 и т.д.
Макровирусы заражают файлы форматов Word, Excel, Office 97.
Загрузочные вирусы также ориентированы на конкретные форматы расположения системных данных в загрузочных секторах дисков.
Среди особенностей алгоритма работывирусов выделяются следующие:
резидентность;
использование “стелс”-алгоритмов;
самошифрование и полиморфичность;
использование нестандартных приёмов.
Резидентный вирус при инфицировании компьютера оставляет в операционной памяти свою резидентную часть, которая затем перехватывает обращения операционной системы к объектам заражения и внедряется в них. Резидентные вирусы активны не только в момент работы заражённой программы, но и после того, как программа закончила свою работу. Резидентные копии таких вирусов остаются жизнеспособными вплоть до очередной перезагрузки, даже если на диске уничтожены все заражённые файлы. Часто от таких вирусов невозможно избавиться восстановлением всех копий файлов с дистрибутивных дисков. Резидентная копия вируса остаётся активной и заражает вновь создаваемые файлы. То же верно для загрузочных вирусов, форматирование диска при наличии в памяти резидентного вируса не всегда вылечивает диск, поскольку многие резидентные вирусы заражают его повторно после того, как он был отформатирован.
Резидентными можно считать макровирусы, поскольку они также присутствуют памяти компьютера в течение всего времени работы заражённого редактора. При этом роль операционной системы берёт на себя редактор, а понятие "перезагрузка операционной системы" трактуется как выход из редактора.
Нерезидентные вирусы, напротив, активны довольно непродолжительное время - только в момент запуска заражённой программы. Для своего распространения они ищут на диске незаражённые файлы и записываются в них.
После того, как код вируса передаёт управление программе-носителю, влияние вируса на операционную систему сводится к нулю вплоть до очередного запуска какой-либо заражённой программы. Поэтому файлы, заражённые нерезидентными вирусами, значительно проще удалить с диска, при этом вирус не заразит их повторно.
Использование “стеллс”-алгоритмов позволяет вирусам полностью или частично скрыть себя в системе. Наиболее распространённым “стеллс”-алгоритмом является перехват запросов операционной системы на чтение-запись заражённых объектов и затем “стеллс”-вирусы либо временно лечат их, либо подставляют вместо себя незаражённые участки информации. В случае макровирусов наиболее популярный способ - запрет вызовов меню просмотра макросов.
Самошифрование и полиморфичность используются практически всеми типами вирусов для того, чтобы максимально усложнить процедуру обнаружения вируса. Полиморфик-вирусами являются те, обнаружение которых невозможно (или крайне затруднительно) осуществить при помощи так называемых вирусных масок - участков кода, специфичных для конкретного вируса. Достигается это двумя способами - шифрованием основного кода вируса с непостоянным ключом и случайным набором команд расшифровщика или изменением самого выполняемого кода вируса.
Различные нестандартные приёмы часто используются в вирусах для того, чтобы как можно глубже спрятать себя в ядре операционной системы, защитить от обнаружения свою резидентную копию, затруднить лечение от вируса и т.д.
По деструктивным возможностям вирусы можно разделить на:
безвредные, т.е. никак не влияющие на работу компьютера (кроме уменьшения свободной памяти на диске в результате своего распространения);
неопасные, влияние которых ограничивается уменьшением свободной памяти на диске и графическими, звуковыми и прочими эффектами;
опасные вирусы, которые могут привести к серьёзным сбоям в работе компьютера;
очень опасные - в алгоритм их работы заведомо заложены процедуры, которые могут вызвать потерю программ, уничтожить данные, стереть необходимую для работы компьютера информацию, записанную в системных областях памяти.
Но даже если в алгоритме вируса не найдено ветвей, наносящих ущерб системе, этот вирус нельзя с полной уверенностью назвать безвредным, так как проникновение его в компьютер может вызвать непредсказуемые и порой катастрофические последствия. Ведь вирус, как и всякая программа, имеет ошибки, в результате которых могут быть испорчены как файлы, так и сектора дисков.
2.1 Файловые вирусы
К данной группе относятся вирусы, которые при своём размножении тем или иным способом используют файловую систему какой-либо операционной системы.
Файловые вирусы могут внедряться практически во все исполняемые файлы всех популярных операционных систем.
Имеются вирусы, заражающие файлы, которые содержат исходные тексты программ, библиотечные или объектные модули. Возможна запись вируса и в файлы данных, но это случается либо в результате ошибки в вирусе, либо при проявлении его агрессивных свойств.
По способу заражения файлов вирусы делятся на overwriting, паразитические (parasitic), компаньон-вирусы (companion), link-вирусы и вирусы, заражающие объектные модули (OBJ), библиотеки компиляторов (LIB) и исходные тексты программ.
Алгоритм работы файлового вируса:
Получив управление, вирус совершает следующие действия:
резидентный вирус проверяет оперативную память на наличие своей копии и инфицирует память компьютера, если копия вируса не найдена; нерезидентный вирус ищет незаражённые файлы в текущем и (или) корневом каталогах, в каталогах, отмеченных командой PATH, сканирует дерево каталогов логических дисков, а затем заражает обнаруженные файлы;
выполняет, если они есть, дополнительные функции: деструктивные действия, графические или звуковые эффекты и т.д. (дополнительные функции резидентного вируса могут вызываться спустя некоторое время после активизации в зависимости от текущего времени, конфигурации системы, внутренних счётчиков вируса или других условий; в этом случае вирус при активизации обрабатывает состояние системных часов, устанавливает свои счётчики и т.д.)
возвращает управление основной программе (если она есть). Паразитические вирусы при этом либо восстанавливают программу (но не файл) в исходном виде, либо лечат файл, выполняют его, а затем снова заражают.
2.2 Загрузочные вирусы
Загрузочные вирусы заражают загрузочный (boot) сектор гибкого диска и boot-сектор или Master Boot Record (MBR) винчестера. Принцип действия загрузочных вирусов основан на алгоритмах запуска операционной системы при включении или перезагрузке компьютера: после необходимых тестов установленного оборудования (памяти, дисков) программа системной загрузки считывает первый физический сектор загрузочного диска и передаёт управление на A:, C: или CD-ROM, в зависимости от параметров, установленных в BIOS Setupe.
В случае дискеты или CD-диска управление получает boot-сектор диска, который анализирует таблицу параметров диска, высчитывает адреса системных файлов операционной системы, считывает их память и запускает на выполнение. Если на загрузочном диске отсутствуют файлы операционной системы, программа, расположенная в boot-секторе диска, выдаёт сообщение об ошибке и предлагает заменить загрузочный диск.
В случае винчестера управление получает программа, расположенная в MBR винчестера. Она анализирует таблицу разбиения диска (Disk Partition Table), вычисляет адрес активного boot-сектора (обычно этим сектором является boot-сектор диска С:), загружает его в память и передаёт на него управление. Получив управление, активный boot-сектор винчестера проделывает те же действия, что и boot-секторы дискеты.
При заражении дисков загрузочные вирусы подставляют свой код вместо какой-либо программы, получающей управление при загрузке системы. Принцип заражения: вирус "заставляет" систему при её перезапуске считать в память и отдать управление не оригинальному коду загрузчика, а коду вируса.
Заражение дискет производится единственным известным способом: вирус записывает свой код вместо оригинального кода boot-сектора дискеты.
Винчестер заражается тремя возможными способами: вирус записывается либо вместо кода MBR, либо вместо кода boot - сектора загрузочного диска (обычно С:), либо модифицирует адрес активного boot-сектора в Disk Partition Table, расположенный в MBR винчестера.
Алгоритм работы загрузочного вируса.
Практически все загрузочные вирусы резидентны. Они внедряются в память компьютера при загрузке с инфицированного диска. При этом системный загрузчик считывает содержимое первого сектора диска, с которого производится загрузка, помещает считанную информацию в память и передаёт на неё (т.е. на вирус) управление. После этого начинают выполняться инструкции вируса, который:
как правило, уменьшает объём свободной памяти, копирует в освободившееся место свой код и считывает с диска своё продолжение (если оно есть);
перехватывает необходимые векторы прерываний, считывает в память оригинальный boot-сектор и передаёт на него управление.
В дальнейшем загрузочный вирус ведёт себя так же, как резидентный файловый: перехватывает обращения операционной системы к дискам и инфицирует их, в зависимости от некоторых условий совершает деструктивные действия или вызывает звуковые или видеоэффекты.
Существуют и нерезидентные загрузочные вирусы. При загрузке они заражают MBR винчестера и дискеты, если те присутствуют в дисководе. Затем такие вирусы передают управление оригинальному загрузчику и на работу компьютера больше не влияют.
2.3 Макровирусы
Макровирусы являются программами на языках (макроязыках), встроенных в некоторые системы обработки данных (текстовые редакторы, электронные таблицы). Для своего размножения такие вирусы используют возможности макроязыков и при их помощи переносят себя из одного файла (документа или таблицы) в другие. Наибольшее распространение получили макровирусы для Microsoft Word, Excel и Office 97.
Для существования вирусов в конкретной системе необходимо наличие встроенного в систему макроязыка с возможностями:
привязки программы на макроязыке к конкретному файлу;
копирования макропрограмм из одного файла в другой;
получения управления макропрограммой без вмешательства пользователя (автоматические или стандартные макросы).
Алгоритм работы Word-макровируса
Большинство известных Word-макровирусов при запуске переносят свой код (макросы) в область глобальных макросов документа, для этого они используют команды копирования макросов MacroCopy, Organizer. Copy либо при помощи редактора макросов. Вирус вызывает его, создаёт новый макрос, вставляет в него свой код, который и сохраняет в документе.
При выходе из Word глобальные макросы автоматически записываются в DOT-файл глобальных макросов (обычно это NORMAL. DOT). Таким образом, при следующем запуске Word-вирус активизируется в тот момент, когда WinWord грузит глобальные макросы.
Затем вирус переопределяет один или несколько стандартных макросов и перехватывает команды работы файлами. При вызове этих команд вирус заражает файл, к которому идёт обращение. Для этого вирус конвертирует файл в формат Template (что делает невозможным дальнейшее изменение формата файла) записывает в файл свои макросы, включая автомакрос.
Таким образом, если вирус перехватывает макрос FileSaveAs, то заражается каждый DOS-файл, сохраняемый через перехваченный вирусом макрос. Если перехвачен макрос FileOpen, то вирус записывается в файл при его считывании с диска.
Алгоритм работы Excel-макровируса
Методы размножения Excel-вирусов в целом аналогичны методам Word-вирусов. Различия заключаются в командах копирования макросов и в отсутствии NORMAL. DOT, его функцию (в вирусном смысле) выполняют файлы в STARTUP-КАТАЛОГЕ Excel.
2.4 Сетевые вирусы
К сетевым относятся вирусы, которые для своего распространения активно используют протоколы и возможности локальных и глобальных сетей. Основным принципом работы сетевого вируса является возможность самостоятельно передать свой код на удалённый сервер или рабочую станцию.
Сетевые вирусы прошлого распространялись в компьютерной сети и, как правило, не изменяли файлы или сектора на дисках. Они проникали в память компьютера из компьютерной сети, вычисляли сетевые адреса других компьютеров и рассылали по этим адресам свои копии.
Современные сетевые вирусы - это Macro. Word. ShareFun и Win. Homer. первый из них использует возможности электронной почты Microsoft Mail. Он создаёт новое письмо, содержащее заражённый фай-документ, затем выбирает из списка адресов MS-Mail три случайных адреса и рассылает по ним заражённое письмо.
Второй вирус (Homer) использует для распространения протокол FTP (File Trausfer Protocol) и передаёт свою копию на удалённый ftp-сервер в каталог Incoming. Поскольку сетевой протокол FTP не позволяет запускать файлы на удалённом сервере, этот вирус можно охарактеризовать как полусетевой, однако это реальный пример возможностей вирусов по использованию современных сетевых протоколов и поражению глобальных сетей.
3. Антивирусные программы
Наиболее эффективны в борьбе с компьютерными вирусами антивирусные программы. Однако следует отметить, что не существует антивирусов, гарантирующих стопроцентную защиту от вирусов. Таких систем не существует, поскольку на любой алгоритм антивируса всегда можно предложить контр-алгоритм вируса, невидимого для этого антивируса (обратное, к счастью, тоже верно: на любой алгоритм вируса всегда можно создать антивирус). Более того, невозможность существования абсолютного антивируса была доказана математически на основе теории конечных автоматов, автор доказательства - Фред Коэн.
Качество антивирусной программы определяется по следующим позициям, приведённых в порядке убывания их значимости.
Надёжность и удобство работы - отсутствие зависаний антивируса и прочих технических проблем, требующих от пользователя специальной подготовки.
Это наиболее важный критерий, поскольку даже абсолютный антивирус может оказаться бесполезным, если он будет не в состоянии довести процесс сканирования до конца - повиснет и не проверит часть дисков и файлов и, таким образом, оставит вирус незамеченным в системе. Если же антивирус требует от пользователя специальных знаний, то он также окажется бесполезным, большинство пользователей просто проигнорируют сообщения антивируса.
Ну а если антивирус будет чересчур часто задавать сложные вопросы рядовому пользователю, то, скорее всего, пользователь перестанет обращаться к такому антивирусу.
Качество обнаружения вирусов всех распространённых типов, сканирование внутри файлов документов/таблиц (MS Word, Excel, Office), упакованных и архивированных файлов. Отсутствие "ложных срабатываний". Возможность лечения заражённых объектов.
Любой антивирус бесполезен, если он не в состоянии ловить вирусы или делает это не вполне качественно. Поэтому качество детектирования вирусов является вторым по важности критерием "качества" антивирусной программы. Однако если при этом антивирус с высоким качеством детектирования вирусов вызывает большое количество ложных срабатываний, то его уровень полезности резко падает, поскольку пользователь вынужден либо уничтожать незаражённые файлы, либо самостоятельно производить анализ подозрительных файлов, либо привыкает к частым ложным срабатываниям - перестаёт обращать внимание на сообщения антивируса и в результате пропускает сообщение реальном вирусе.
Многоплатформность антивируса является следующим пунктом в списке, поскольку только программа, рассчитанная на конкретную операционную систему, может полностью использовать функции этой системы. "Неродные" же антивирусы часто оказываются неработоспособными, а иногда даже разрушительными.
Возможность проверки файлов на лету также является достаточно важной чертой антивируса. Моментальная и принудительная проверка приходящих на компьютер файлов и вставляемых дискет является практически стопроцентной гарантией от заражения вирусом.
Следующим по важности критерием является скорость работы. Если на полную проверку компьютера антивирусу требуется несколько часов, то вряд ли большинство пользователей будут запускать его достаточно часто. При этом медленность антивируса совсем не говорит о том, что он ловит вирусов больше и делает это лучше, чем более быстрый антивирус. В разных антивирусах используются различные алгоритмы поиска вирусов, один алгоритм может оказаться более быстрым и качественным, другой - медленным и менее качественным. Всё зависит от способностей и профессионализма разработчиков конкретного антивируса.
Наличие дополнительных функций и возможностей стоит в списке качеств антивируса на последнем месте, поскольку очень часто эти функции никак не сказываются на уровне полезности антивируса. Однако эти дополнительные функции значительно упрощают жизнь пользователя.
4. Типы антивирусов
Самыми популярными и эффективными антивирусными программами являются антивирусные сканеры. Следом за ними идут CRC-сканеры. Часто оба приведённых метода объединяют в одну универсальную программу, что значительно повышает её мощность. Применяются также различного типа мониторы (блокировщики) и иммунизаторы.
4.1 Сканеры
Принцип работы антивирусных сканеров основан на проверке файлов, секторов и системной памяти и поиске в них известных и новых (неизвестных сканеру) вирусов. Для поиска известных вирусов используются так называемые маски. Маской вируса является некоторая постоянная последовательность кода, специфичная для этого конкретного вируса. Если вирус не содержит маски или длина этой маски недостаточно велика, то используются другие методы. Примером такого метода является алгоритмический язык, описывающий все возможные варианты кода, которые могут встретиться при заражении подобного типа вирусом.
Во многих сканерах используются также алгоритмы эвристического сканирования, т.е. анализ последовательности команд в проверяемом объекте, набор некоторой статистики и принятие решения для каждого проверяемого объекта.
К достоинствам сканеров относится их универсальность, к недостаткам - размеры антивирусных баз, которые сканерам приходится "таскать с собой", и относительно небольшая скорость поиска вирусов.
4.2 CRC-сканеры
Принцип работы CRC-сканеров основан на подсчёте CRC-сумм (контрольных сумм) для присутствующих на диске файлов/системных секторов. Эти CRC-суммы затем сохраняются в базе данных антивируса, как и некоторая другая информация: длины файлов, даты их последней модификации и т.д. При последующем запуске CRC-сканеры сверяют данные, содержащиеся в базе данных, с реально посчитанными значениями. Если информация о файле, записанная в базе данных, не совпадает с реальными значениями, то CRC-сканеры сигнализируют о том, что файл был изменён или заражён вирусом.
CRC-сканеры, использующие "антистелс"-алгоритмы, являются довольно сильным оружием против вирусов: практически 100% вирусов оказываются обнаруженными почти сразу после их появления на компьютере. Однако у этого типа антивирусов есть недостаток, который заметно снижает их эффективность.
Этот недостаток состоит в том, что CRC-сканеры не способны поймать вирус в момент его появления в системе, а делают это лишь через некоторое время, уже после того, как вирус разошёлся по компьютеру. CRC-сканеры не могут детектировать вирус в новых файлах, поскольку в их базе данных отсутствует информация об этих файлах.
Более того, периодически появляются вирусы, которые используют эту "слабость" CRC-сканеров, заражают только вновь создаваемые файлы и остаются, таким образом, невидимыми для CRC-сканеров.
4.3 Мониторы
Антивирусные мониторы - это резидентные программы, перехватывающие вирусоопасные ситуации и сообщающие об этом пользователю. К вирусоопасным относятся вызовы на открытие для записи в выполняемые файлы, запись в загрузочные секторы дисков или MBR винчестера, попытки программ остаться резидентно, т.е. вызовы, которые характерны для вирусов в моменты их размножения.
К достоинствам мониторов относится их способность обнаруживать и блокировать вирус на самой ранней стадии его размножения. К недостаткам относятся существование путей обхода защиты монитора и большое количество ложных срабатываний, что, видимо, и послужило причиной для практически полного отказа пользователей от подобного рода антивирусных программ.
Необходимо также отметить такое направление антивирусных средств, как антивирусные мониторы, выполненные в виде аппаратных компонентов компьютера. Однако, как и в случае с программными мониторами, такую защиту легко обойти. Также к вышеперечисленным недостаткам добавляются проблемы совместимости со стандартными конфигурациями компьютеров и сложности при их установке и настройке. Всё это делает аппаратные мониторы крайне непопулярными на фоне остальных типов антивирусной защиты.
4.4 Иммунизаторы
Иммунизаторы делятся на два типа: иммунаторы, сообщающие о заражении, и иммунизаторы, блокирующие заражение.
Первые обычно записываются в конец файлов и при запуске файла каждый раз проверяют его на изменение. Недостаток у таких иммунизаторов всего один, но он летален: абсолютная неспособность сообщить о заражении "стелс"-вирусом. Поэтому такие иммунизаторы, как и мониторы, практически не используются в настоящее время.
Второй тип иммунизации защищает систему от поражения вирусом какого-то определённого вида. Файлы на дисках модифицируются таким образом, что вирус принимает их за уже заражённые.
Для защиты от резидентного вируса в память компьютера заносится программа, имитирующая копию вируса, при запуске вирус натыкается на неё и считает, что система уже заражена.
Такой тип иммунизации не может быть универсальным, поскольку нельзя проиммунизировать файлы от всех известных вирусов. Однако, несмотря на это, подобные иммунизаторы в качестве полумеры могут вполне надёжно защитить компьютер от нового неизвестного вируса вплоть до того момента, когда он будет детектироваться антивирусными сканерами.
Список используемой литературы
1. Касперский Е.В. Компьютерные вирусы: что это такое и как с ними бороться. - М.: СК Пресс, 1998г. - 288 с.
2. Информатика. Базовый курс.2-е издание / Под ред. С.В. Симоновича. - СПб.: Питер, 2006. - 640 с.