Какое свойство является обязательным для компьютерного вируса
Первая "массовая" эпидемия компьютерного вируса произошла в 1986 году, когда вирус Brain "заражал" дискеты первых массовых персональных компьютеров. В настоящее время известно несколько десятков тысяч вирусов.
Обязательным свойством компьютерного вируса является способность к размножению (самокопированию) и незаметному для пользователя внедрению в файлы и загрузочные сектора дисков. Название "вирус" по отношению к компьютерным программам пришло из биологии именно по признаку способности к саморазмножению.
Если вирус находится в памяти компьютера, то при определенных условиях он может активизироваться и заставить компьютер выполнять какие-либо действия. Активизация вируса может быть связана с различными событиями (наступлением определенной даты или дня недели, запуском программы, открытием документа и т.д.).
Компьютерные вирусы являются программами, которые могут "размножаться" и скрытно внедрять свои копии в файлы, загрузочные сектора дисков и документы. Активизация компьютерного вируса может вызывать уничтожение программ и данных.
Разнообразны и последствия действия вирусов. По масштабу вредных воздействий вирусы можно разделить на:
· безвредные, т.е. никак не влияющие на работу компьютера (кроме уменьшения свободной памяти на диске в результате своего размножения);
· неопасные, влияние которых ограничивается уменьшением свободной памяти на диске, графическими, звуковыми и другими внешними эффектами;
· опасные вирусы, которые могут привести к сбоям и зависаниям при работе компьютера;
· очень опасные, активизация которых приводит к потере программ и данных (изменению или удалению файлов и каталогов), форматированию винчестера и т.д.
По "среде обитания" вирусы можно разделить на файловые, загрузочные, макро-вирусы и сетевые.
Файловые вирусы. Файловые вирусы различными способами внедряются в исполняемые файлы (программы) и обычно активизируются при их запуске. После запуска зараженной программы вирусы находятся в оперативной памяти компьютера и являются активными (то есть могут заражать другие файлы) вплоть до момента выключения компьютера или перезагрузки операционной системы.
При этом файловые вирусы не могут заразить файлы данных (например, файлы, содержащие изображение или звук).
Профилактическая защита от файловых вирусов состоит в том, что не рекомендуется запускать на исполнение файлы, полученные из сомнительного источника, и предварительно не проверенные антивирусными программами.
Загрузочные вирусы. Загрузочные вирусы записывают себя в загрузочный сектор диска. При загрузке операционной системы с зараженного диска вирусы внедряются в оперативную память компьютера. В дальнейшем загрузочный вирус ведет себя так же, как файловый, т.е. может заражать файлы при обращении к ним компьютера.
Профилактическая защита от таких вирусов состоит в отказе от загрузки операционной системы с гибких дисков и установке в BIOS вашего компьютера защиты загрузочного сектора от изменений.
Макро-вирусы. Макро-вирусы заражают файлы документов Word и электронных таблиц Ехсеl. Макро-вирусы являются фактически макрокомандами (макросами), которые встраиваются в документ.
После загрузки зараженного документа в приложение макро-вирусы постоянно присутствуют в памяти компьютера и могут заражать другие документы. Угроза заражения прекращается только после закрытия приложения.
Профилактическая защита от макро-вирусов состоит в предотвращении запуска вируса. При открытии документа в приложениях Word и Ехсеl сообщается о присутствии в них макросов (потенциальных вирусов) и предлагается запретить их загрузку. Выбор запрета на загрузку макросов надежно защитит ваш компьютер от заражения макро-вирусами, однако отключит и полезные макросы, содержащиеся в документе.
Сетевые вирусы. По компьютерной сети могут распространяться и заражать компьютеры любые обычные вирусы.
Это может происходить, например, при получении зараженных файлов с серверов файловых архивов. Однако существуют и специфические сетевые вирусы, которые используют для своего распространения электронную почту и Всемирную паутину.
Кроме того, этот вирус являлся "трояном", т.к. выполнял роль "троянского коня", внедренного в операционную систему. Такие вирусы "похищают" пароль пользователя для доступа в Интернет и передают их на определенный сервер Интернета. В результате злоумышленники могли пользоваться доступом в Интернет за деньги ничего не подозревающих пользователей.
Лавинообразная цепная реакция распространения вируса базировалась на том, что вирус после заражения компьютера начинал рассылать себя по всем адресам электронной почты, которые имелись в адресной книге пользователя.
Особой разновидностью вирусов являются активные элементы (программы) на языке Java или Visual Basic, которые могут выполнять разрушительные действия, т.е. являться вирусами. Такие программы передаются по Всемирной паутине в процессе загрузки Web-страниц с серверов Интернета в браузер локального компьютера.
Профилактическая защита от сетевых вирусов состоит в запрете получения активных элементов на локальный компьютер.
 (1) создавать свои экземпляры (обязательно совпадающие с оригиналом) и внедрять их в вычислительные сети и/или файлы, системные области компьютера и прочие выполняемые объекты. При этом дубликаты сохраняют способность к дальнейшему распространению 
 (2) создавать свои экземпляры (не обязательно совпадающие с оригиналом) и внедрять их в вычислительные сети и/или файлы, системные области компьютера и прочие выполняемые объекты. При этом дубликаты сохраняют способность к дальнейшему распространению 
 (3) нанести какой-либо вред компьютеру, на котором она запускаются, или другим компьютерам в сети 
 (4) нанести какой-либо вред компьютеру, на котором она запускаются, или другим компьютерам в сети: прямо или посредством других программ и/или приложения  
Номер 2
Ответ:
Номер 3
Ответ:
Номер 4
Ответ:
 (3) создание вирусных копий путем шифрования части кода и/или вставки в код файла дополнительных, ничего не делающих команд 
 (4) создание вирусных копий путем замены некоторых команд на аналогичные, перестановки местами частей кода, вставки между ними дополнительных, ничего не делающих команд 
Упражнение 2: Номер 1
Ответ:
 (5) в способности отложить на заданный автором срок выполнение заложенных вредоносных функций 
Номер 2
Ответ:
 (1) вредоносная программа, распространяющаяся по сетевым каналам и способная к самостоятельному преодолению систем защиты компьютерных сетей, а также к созданию и дальнейшему распространению своих копий, не обязательно совпадающих с оригиналом 
 (2) вредоносная программа, распространяющаяся по сетевым каналам и способная к самостоятельному преодолению систем защиты компьютерных сетей, а также к созданию и дальнейшему распространению своих копий, совпадающих с оригиналом 
 (3) вредоносная программа, распространяющаяся по сетевым каналам и способная установить на чужом компьютере некую троянскую программу 
 (4) вредоносная программа, распространяющаяся по сетевым каналам и способная проникнуть на чужой компьютер для выполнения ряда заложенных автором функций. Механизм размножения для сетевых червей не предусмотрен 
Номер 3
Ответ:
 (4) по используемой для незаметного проникновения на чужой компьютер технологии – она копирует методы, используемые пиринговыми сетями 
Номер 4
Ответ:
Упражнение 3: Номер 1
Ответ:
Номер 2
Ответ:
 (5) в способности отложить на заданный автором срок выполнение заложенных вредоносных функций 
Номер 3
Ответ:
 (2) основной целью которой является вредоносное воздействие по отношению к компьютерной системе 
 (4) основной целью которой является обеспечение незаметного заражения вирусом или червем другой компьютерной системы 
Номер 4
Ответ:
Упражнение 4: Номер 1
Ответ:
Номер 2
Ответ:
Номер 3
Ответ:
Номер 4
Ответ:
Упражнение 5: Номер 1
Ответ:
 (3) которые можно выполнять только при наличии установленного антивирусного программного обеспечения 
 (4) характеризующиеся способностью при срабатывании заложенных в них условий (в конкретный день, время суток, определенное действие пользователя или команды извне) выполнять какое-либо действие, например, удаление файлов. В остальное время они безвредны 
Номер 2
Ответ:
 (1) непроверенная или изначально однозначно неправдивая информация о якобы новых вирусах или вирусных угрозах, которая в виде предупреждений передается по всем друзьям и знакомым 
 (2) программа, которая намеренно вводит пользователя в заблуждение путем показа уведомлений о, например, форматировании диска или обнаружении вирусов, хотя на самом деле ничего не происходит 
 (3) легальная программа, которая сама по себе не опасна, но обладает функционалом, позволяющим злоумышленнику использовать ее с вредоносными целями 
В первом, втором и третьем выпусках блога мы рассказали о том, как автопрограммируемость — врожденная черта фон-неймановских компьютеров — привела к появлению в них вирусов. Темой четвертого выпуска был основополагающий метод антивирусной защиты — многоуровневое фиксирование программ на основе разделения программ и данных. Этот метод считается наиболее надежным из всех существующих. Была показана его взаимосвязь с другими основными методами.
В этой статье мы рассмотрим три разных определения понятия «компьютерный вирус». Первые два сформулированы Фредериком Коэном и Леонардом Адлеманом в фундаментальных работах 1984-1992 годов и считаются классическими в современной компьютерной науке. К сожалению, из них автоматически следует, что задача распознавания произвольного вируса неразрешима. Что и доказали эти ученые в тех же работах, где привели свои определения.
Поэтому третье определение мы специально сформулируем таким образом, чтобы оно делало ту же самую задачу полностью разрешимой. Для этого мы откажемся от нескольких плохо формализуемых понятий, которые лежат в основе классических определений, и отнесем к вирусам более широкий круг информационных объектов. Такой подход — решение сложной задачи с помощью замены категорий, в которых она формулируется — часто бывает удобен и полезен в практической работе специалиста по информационной безопасности.
Проблема компьютерных вирусов отчетливо проявилась примерно через 35 лет после появления концепции «stored program computer». Первые авторы и исследователи вирусов оказались под сильным впечатлением от невиданного ранее феномена саморепликации (в биологическом смысле термина) рукотворных объектов. Позже специалисты осознали, что это феномен не столько самих этих объектов, сколько исполняющей среды — даже такой относительно простой, как машина Тьюринга или фон-неймановская машина с типичной операционной системой, не говоря уже о более сложных архитектурах и сетевых средах. Стало ясно, что массовая репликация объектов не является специфическим свойством какого-то одного класса программ, а вполне типична для всех уровней сложной автопрограммируемой системы. Например, массово реплицируются блоки кода в парадигме ООП или программы-приложения, загружаемые пользователями с центрального сервера. Но несмотря на обнаружение стратегической роли среды, репликация до сих пор ассоциируется у большинства людей именно с вирусами — и лежит в основе их классических определений.
Определение вируса по Коэну
Фред Коэн, аспирант Университета Южной Калифорнии, заинтересовался проблемой компьютерных вирусов в начале 1980-х. В 1984 году при поддержке своего научного руководителя Леонарда Адлемана он написал первую статью на эту тему, где привел весьма далекую от совершенства формулировку: «We define a computer ‘virus’ as a program that can ‘infect’ other programs by modifying them to include a possibly evolved copy of itself». Сначала все казалось просто, но при дальнейшей разработке темы Коэн обнаружил ее чрезвычайную сложность и ключевое значение среды — как для процесса репликации, так и для принятия решения о том, является ли произвольный изучаемый информационный объект вирусом.
В своей книге 1985 года и диссертации 1986 года Коэн дал уже строгое определение вируса, в котором сконцентрировался на его единственном свойстве — рекурсивной репликации. Определение было дано только для абстрактной модели, основанной на машине Тьюринга (заметим, что реальный компьютер обычно имеет меньшую предсказуемость, чем его идеальная модель). Никакие другие свойства, кроме рекурсивной репликации, в модели Коэна не рассматриваются. То есть это хорошая модель частного случая рекурсивно воспроизводимых алгоритмов, но плохая модель реальных компьютерных вирусов — особенно с учетом наблюдаемого многообразия их типов и необязательности строгой рекурсии для распространения.
Но модель вируса по Коэну стала классической, потому что оказалась простой, наглядной и учитывающей роль исполняющей среды, что необходимо для понимания сути проблемы. В этой модели, чтобы определить, является ли вирусом изучаемый информационный объект (конечная последовательность символов, программа, код), его надо рассматривать исключительно в контексте машины-среды, в паре с ней и во взаимодействии с ней — на столько тактов вперед, сколько займет исполнение кода машиной. Вирус был определен как код, исполнение которого приведет к записи копии этого кода на ленту машины Тьюринга впереди по ходу исполнения, т.е. в будущем.
Но для машины Тьюринга (как доказал в 1936 году ее автор) невозможно предсказать будущее. Для произвольного кода непредсказуем результат его выполнения, т.е. последовательность состояний машинной ленты (памяти) на неограниченное число тактов вперед. Единственный способ выяснить, чем закончится выполнение этого кода — проверить на практике. Иными словами, чтобы выяснить, является ли изучаемый код вирусом, его надо запустить и посмотреть, что будет. С учетом неизвестности результата, в реальной системе это небезопасно. Кроме того, время ожидания выполнения кода может оказаться сколь угодно большим (бесконечным). А без информации о том, к чему приведет запуск кода, нельзя судить о том, является ли он вирусом.
Обратите внимание, что анализ кода без его запуска невозможен даже с самой удобной позиции — внешнего наблюдателя, не ограниченного в средствах для изучения машины и кода, которые находятся в исходных статичных состояниях. Тем более не может быть и речи об анализе кода без его запуска средствами самой машины, как и об анализе кода в процессе исполнения машиной другого кода.
Кроме неутешительного вывода о невозможности надежного распознавания вирусов в своей модели, Коэн доказал следующее:
a) к произвольному коду всегда можно подобрать такую машину, которая интерпретирует его как вирус; например, для какой-то машины вирусом будет код из одного байта — 42;
b) некоторые машины любой код интерпретируют как вирус;
c) некоторые машины никакой код не интерпретируют как вирус.
Впоследствии Коэн не раз возвращался к этой теме. Так, в 1992 году он опубликовал статью, где приводилось строгое определение понятия «компьютерный червь» (частный случай вируса для некоторых сред, в частности — мультипроцессорных). В статье подтверждался прежний вывод: распознавание вирусов и подобных им объектов в общем случае невозможно.
Определение вируса по Адлеману
Тема компьютерных вирусов никогда не была главной для Леонарда Адлемана (соавтора технологии шифрования с открытым ключом и лауреата премии Тьюринга 2002 года), уделяющего значительно больше внимания другим проблемам информационных технологий, математики и молекулярной биологии. Но в результате совместной работы с Коэном он счел необходимым несколько позже, в 1990 году, написать и опубликовать работу «An Abstract Theory of Computer Viruses». Модель Адлемана сильно отличается от модели Коэна. Но и для этой модели делается доказательный вывод о невозможности решения задачи распознавания произвольного вируса.
Адлеман, как профессиональный математик, дал определение вируса в категориях и терминах рекурсивных функций. Для определения было привлечено новое понятие — исходной, эталонной, еще не зараженной этим вирусом программы. Вирус был определен как рекурсивная функция, соответствующая некоторым описанным критериям и выполняющая отображение («map») эталонной программы на другую, считающуюся зараженной. В качестве действий зараженной программы Адлеман назвал «повреждение» (информации, к которой эта программа имеет доступ), «заражение» (других информационных объектов) и «имитацию» (нормального поведения исходной, незараженной программы). Как и в работах Коэна, вирус рассматривается во взаимосвязи со средой (одна функция — во взаимодействии с другой). Рекурсивная репликация осталась определяющим критерием вируса, а другим определяющим критерием стала вредоносность (формализацию которой в модели Адлемана понять и использовать в качестве практически применимого алгоритма, кстати, довольно трудно).
В 2005 году китайские исследователи Zhihong Zuo, Mingtian Zhou и Qing-xin Zhu опубликовали работу «On the Time Complexity of Computer Viruses», расширяющую модель Адлемана на сложные типы вирусов, в частности — на полиморфные вирусы. Это потребовало значительного усложнения модели, но не изменило ее сути. В работе подтверждается прежний вывод о невозможности распознать произвольный вирус, точнее — о возможности существования вирусов, принципиально не поддающихся распознаванию в рамках используемой модели.
В работе Адлемана нам представляются особенно важными два момента. Во-первых, в качестве стратегического — и, по сути, единственного — средства защиты от вирусов он совершенно верно назвал полную и безусловную изоляцию компьютера, т.е. закрытость среды (что касается альтернативных способов защиты, в работе лишь поставлен вопрос о том, насколько они реальны). Во-вторых, ученый показал необходимость привлечения понятия исходной, незараженной программы в качестве обязательного условия определения вируса.
Напомним, что под изоляцией компьютерных систем применительно к вирусам всегда имеется в виду взаимная изоляция систем, контролируемых разными хозяевами. Разумеется, нет необходимости во взаимной изоляции отдельных элементов любой замкнутой системы, которая находится под полным контролем одного хозяина. Собственную систему хозяин программирует так, как сочтет нужным (в этом состоит отличие хозяина от номинального владельца). Поэтому вряд ли можно использовать понятие «вредоносность» вне социального контекста, исключительно в технологических категориях: никакие процессы изменения программ и данных сами по себе «вредоносностью» не обладают.
Определение вируса по нарушению кода
Невозможность надежного распознавания вирусов в рамках классических моделей дает повод задуматься о подходе к решению проблемы с другой стороны.
При традиционном подходе создается как можно более точная модель вируса, основанная на понятиях «рекурсивная репликация» и, опционально, «вредоносность». В рамках созданной модели дается определение вируса. Затем констатируется невозможность использования этого определения для оценки соответствия ему исследуемых информационных объектов.
Но можно поступить наоборот: поставить целью практическую применимость определения вируса для простого и гарантированного решения задачи его распознавания — и для комплексного решения проблемы цифровых инфекций в целом. Затем, используя это определение, можно выяснить, какая модель вируса ему соответствует.
Для целей информационной безопасности самым удобным будет строго формализованное, соразмерное и системное определение, которое позволяет легко выполнять оценку соответствия ему произвольных информационных объектов. Процедура сравнения свойств каждого исследуемого объекта с определением должна иметь форму короткого, надежного и хорошо контролируемого алгоритма, чтобы ее можно было автоматизировать и применять на практике.
Самое простое и очевидное решение — считать вирусом любое внедрение постороннего кода (т.е. произвольной последовательности символов) в эталонную, исходную, незараженную программу. Это означает отказ от ресурсоемкой и в общем случае неразрешимой задачи анализа процессов взаимодействия проверяемого кода с машиной — и отказ от попыток формализации этих процессов. Вирус определяется не через свойства последовательности символов, а через ее местоположение в машине (компьютере, вычислительной системе). Иными словами, одна и та же последовательность символов может считаться или не считаться вирусом в зависимости от того, где она находится по отношению к «системе координат» машины — в каком именно месте ленты Тьюринга, в какой именно области оперативной памяти, жесткого диска и т.п. Вирусом считается любая последовательность символов, которая находится «в неположенном месте», т.е. в области, зарезервированной для другого информационного объекта — охраняемого кода.
Строгое определение для обычной SISD-машины, которое можно адаптировать и для более широкого круга информационных систем, формулируется так: компьютерный вирус — это измененная по сравнению с эталоном часть кода.
Используя на практике модель, соответствующую приведенному определению вируса, вы перестраховываетесь и уходите в глубокую и очень надежную оборону. Вместо анализа неизвестного кода для точного ответа на вопрос о возможности инициирования им рекурсивной репликации, вы исходите из того, что такая возможность не исключена. Вместо анализа неизвестного кода для точного ответа на вопрос о его вредоносности, вы исходите из того, что внесение в охраняемый код любого, даже самого малого изменения с некоторой вероятностью вызывает нарушение его функций — точно так же, как нарушение функций биологической ДНК может быть вызвано замещением единственного нуклеотида в последовательности.
Для удобства решения многих практических задач в сложных информационных системах определение можно расширить на те области данных, которые должны иметь в системе такую же неприкосновенность, как исполняемый код. В общем случае, зараженным объявляется любой охраняемый информационный объект, в границы которого попал другой объект.
Заметим, что при отсутствии эталона для произвольного кода весь этот код по данному определению считается вирусом. Хотя это непривычно звучит, это надо хорошо понять и всегда иметь в виду. О том, откуда берется эталон, мы поговорим в следующих выпусках блога: для этого понадобится привлечение социальных факторов.
Лингвистическая справка. Слово «вирус» появилось в современных языках чуть более 100 лет назад, после открытия биологических вирусов. Их характерная черта — репликация, исполняемая соответствующей средой. Но у слова «вирус» есть и другое, исходное значение: на латыни это слово обозначает яд. Никакой связи с репликацией: вирус — это объект, характеризующийся нарушением функций внешнего объекта, в который он проник. Использование термина «компьютерный вирус» в контексте деструктивного воздействия настолько же корректно, насколько и в контексте репликации. Использование неформальных терминов «вредонос» или «зловред» нежелательно, особенно в технологической терминологии, вне социального контекста. Термин «антивирусная защита» (а не «антивредоносная» и не «антизловредная») наиболее устойчив в русском языке и имеет очевидные коннотации.
Какое из определений вируса лучше?
Сравните подходы, используемые в различных моделях и определениях вируса.
Вирус — это:
a) соответствующая определенным критериям функция, отображающая эталонный, незараженный объект на отличающийся от него зараженный объект;
b) любая функция, отображающая эталонный, незараженный объект на отличающийся от него зараженный объект.
Для распознавания вируса в проверяемом объекте нужно:
a) провести полное аналитическое или алгоритмическое изучение свойств и поведения системы, состоящей из проверяемого объекта и машины (среды);
b) определить местоположение проверяемого объекта в машине (среде).
Определение вируса основано на:
a) свойстве рекурсивной репликации;
b) методе сравнения образца с эталоном.
Еще раз подчеркнем существенную роль среды в процессе репликации. Например, сами по себе последовательности символов «SENDMAIL» (8 байт), «COPY» (4 байта) или «CP» (2 байта), которые могут содержаться в простейшем вирусе и которыми он может оперировать, не несут в себе ничего такого, что было бы специфично для процесса репликации (тем более — рекурсивной). Ничего подобного не содержит в себе и короткая байтовая последовательность, вызывающая функцию копирования из API операционной системы в машинном коде. В этой последовательности, если рассматривать ее вне среды, не содержится ни механизма репликации, ни его описания, ни даже намека на него.
Более того: в реальном вирусе может не содержаться даже этой информации — в буквальном смысле! Вместо нее вирус, например, может включать в себя сколь угодно сложный криптоалгоритм, а ключом к этому алгоритму может служить произвольная комбинация объектов среды, способная появиться в ней в неопределенном будущем. Это означает, что до некоторого неизвестного момента, до выполнения средой некоторого неизвестного при анализе условия принципиальное отсутствие в коде вируса каких-либо связей с понятиями как репликации, так и рекурсии можно гарантировать с точностью математического доказательства. Но даже в этом случае вирус, слившийся в свойствах со средой и образовавший с ее элементами сложную, распределенную в пространстве и времени систему, сохраняет возможность размножения кода.
Таким образом, в современных больших информационных системах формализация и поиск признаков рекурсивной репликации в отдельных объектах представляются бесполезными даже с теоретической точки зрения. А рассматривать каждый объект в совокупности со всей средой — невозможно. Если в качестве входных данных для анализа единичного объекта требуется подстановка в абстрактную формулу полной информации о состоянии практически бесконечной (из-за огромного размера и перманентной изменчивости) среды — значит, выбран тупиковый путь. Ранее мы уже показали, что Интернет является единой автопрограммируемой средой, единой вычислительной системой, события в которой могут менять код в отдельно взятом системном блоке. Поэтому все эти события должны учитываться в формальном определении вируса, если оно основано на свойствах кода — как в абстрактной модели, так и на практике. И то, и другое исключено.
В условиях глобальной сети, где возможны неограниченные комбинации прямых и обратных связей между элементами, очевидны и давно применяются методы массовой репликации кода, не имеющие отношения к классическим, рекурсивным. Если опасный код заражает произвольный системный блок этой сети, то не имеет значения, является ли это заражение рекурсивным — или же дочерний код сформирован родительским по гораздо более сложному алгоритму. Алгоритм может быть любым. А на основе неизвестного алгоритма нельзя строить какие-либо точные модели, применимые на практике.
Не следует забывать, что в реальных вычислительных системах вирусы программируются (т.е. управляются) людьми. А все то, что управляется человеком, почти не поддается формализации.
Из изложенного следует вывод, что формальное определение компьютерного вируса, основанное не на признаке рекурсивной репликации, а на принципиально иных признаках, во многих случаях может оказаться наилучшим.
Это не значит, что понятие рекурсивной функции перестало иметь значение в контексте вирусов. Оно остается крайне важным, хотя и не может рассматриваться как определяющее. Оно не позволяет точно позиционировать цель, явление, предмет угрозы и ее смысловую сущность с использованием приемлемого математического аппарата. Поэтому лучше всегда иметь в виду альтернативы. Отчетливое понимание специалистом по информационной безопасности нескольких разных определений вируса, соответствующих им теоретических моделей и аспектов антивирусной защиты дает наибольшие возможности для решения практических задач.
P.S. Конечно, возможны и другие определения, кроме приведенных в статье. Их можно поискать в Сети или создать самостоятельно. Главное, что надо при этом помнить: по нормам формальной логики грамотное определение должно позволять, как минимум, определить искомый объект в ряду других :)
возможность создавать свои дубликаты (не всегда совпадающие с оригиналом) и внедрять их в вычислительные сети и/или файлы, системные области компьютера и прочие выполняемые объекты. При этом дубликаты сохраняют способность к дальнейшему распространению.
Следует отметить, что это условие не является достаточным (т. е. окончательным), поскольку, следуя вышеприведенному примеру, операционная система MS-DOS удовлетворяет данному свойству, но вирусом, скорее всего, ее назвать нельзя.
Вот почему точного определения вируса нет до сих пор и вряд ли оно появится в обозримом будущем. Следовательно, нет точно определенного закона, по которому "хорошие" файлы можно отличить от "вирусов". Более того, иногда даже для конкретного файла довольно сложно определить, является он вирусом или нет.
Пример 1. Есть вирус (?) утилита (?) с названием КОН. Эта программа шифрует/расшифровывает диски только по запросу пользователя. Выполнена она в виде загрузочной дискеты: boot-сектор содержит bootstrap loader КОН, а где-то в других секторах лежит основной код КОН. При загрузке с дискеты КОН задает пользователю вопрос типа: "А можно, я сам себя установлю на винчестер?" (если он уже на винчестере, то спрашивает то же самое про дискету). При утвердительном ответе КОН переносит себя с диска на диск.
В результате КОН переносит (копирует) сам себя с дискеты на винчестер, а с винчестера на дискеты, но только с разрешения хозяина компьютера.
Затем КОН выводит текст о своих hot-keys ("горячие" клавиши), по которым он шифрует/расшифровывает диски: спрашивает пароль, читает сектора, шифрует их и делает недоступными, если не знать пароля. Есть у него, кстати, ключ деинсталляции, по коему он сам себя с диска убирает (расшифровав, естественно, все, что было зашифровано).
Таким образом, КОН — это некая утилита защиты информации от несанкционированного доступа. Добавлена к ней, правда, одна особенность: сия утилита сама себя может копировать с диска на диск (с разрешения пользователя). Вирус ли это. Да или нет? Скорее всего — нет.
И все бы было ничего, и никто бы эту утилиту по имени КОН вирусом не обозвал, но только bootstrap loader у этого КОН практически на 100% совпадает с довольно "популярным" вирусом Havoc (StealthBoot). и все, никаких сомнений — вирус! И официальное название есть — StealthBoot.KOH.
Если бы, конечно, автором КОН был не безызвестный программист, а, скажем, Symantec, или Sierra, или даже сама Microsoft, то никто бы и не посмел назвать это вирусом.
"Вы играли — но не угадали ни одной буквы!" Не вирус это, как оказалось, а компонент от какого-то софтвера. Однако если этот файл выдернуть из этого софтвера, то ведет он себя как типичный вирус.
Таким образом, были приведены два живых примера.
1. Невирус — вирус.
2. Вирус — невирус.
Внимательный читатель, который не прочь поспорить, может возразить:
"Стоп. Название "вирусы" по отношению к программам пришло из биологии именно по признаку саморазмножения. КОН этому условию соответствует, следовательно, это вирус (или комплекс, включающий вирусный компонент). ".
В таком случае DOS является вирусом (или комплексом, включающим вирусный компонент), поскольку в нем есть команды SYS и COPY. А если на диске присутствует файл AUTOEXEC.BAT, приведенный несколькими абзацами выше, то для размножения не потребуется даже вмешательства пользователя. Плюс к этому: если принять за необходимый и достаточной признак вируса возможность саморазмножения, то тогда любая программа, имеющая инсталлятор, является вирусом. Следовательно, аргумент не проходит.
Еще одно возражение: «. что, если под вирусом понимать не просто "саморазмножающийся код", но "саморазмножающийся код, не выполняющий полезных действий или даже приносящий вред, без привлечения/информирования пользователя "?»
Вирус КОН является программой, шифрующей диски по паролю, вводимому пользователем. Все свои действия КОН комментирует на экране и спрашивает разрешения пользователя. Плюс к тому имеет деинсталлятор — расшифровывает диски и удаляет с них свой код. Однако все равно — вирус!
А какие могут быть объективные критерии вируса? Саморазмножение, скрытность и деструктивные свойства? Но ведь на каждый объективный критерий можно привести два контрпримера: а) пример вируса, не подходящего под критерий, и б) пример невируса, подходящего под критерий.
Саморазмножение:
а — Intended-вирусы, не умеющие размножаться по причине большого количества ошибок или размножающиеся только при очень ограниченных условиях;
б - MS-DOS и вариации на тему SYS+COPY.
а — вирусы КОН, VirDem, Macro.Word. Polite и некоторые другие информируют пользователя о своем присутствии и размножении;
б — сколько примерно (с точностью до десятка) драйверов сидит под стандартной Win95? Скрытно сидит, между прочим.
Деструктивные свойства:
а — безобидные вирусы типа Yankee, которые прекрасно живут в DOS, Windows З.х, Win95, NT и никому не мешают;
б — старые версии Norton Disk Doctor на диске с длинными именами файлов.
Запуск NDD в этом случае превращает Disk Doctor в Disk Destroyer.
Посему тема "нормального" определения компьютерного вируса остается открытой. Есть только несколько точных вех: например, файл COMMAND.СОМ вирусом не является, а печально известная программа с текстом "Dis is one half — стопроцентный вирус (OneHalf). Все, что лежит между ними, может как оказаться вирусом, так и нет.
Решить задачу теоретического обнаружения вирусов невозможно, поэтому на практике приходится решать частные задачи относительно частных случаев вредоносных программ. В зависимости от свойств вирусов для их обнаружения и нейтрализации могут применяться различные методы. Необходимо отметить, что на практике классификации, принятые различными производителями антивирусных продуктов, отличаются, хотя и построены на близких принципах. Поэтому в ходе изложения будут формулироваться в первую очередь принципы, и уже потом примеры из классификации.
Практическое определение вируса
Определение компьютерного вируса — исторически проблемный вопрос, поскольку достаточно сложно дать четкое определение вируса, очертив при этом свойства, присущие только вирусам и не касающиеся других программных систем. Наоборот, давая жесткое определение вируса как программы, обладающей определенными свойствами, практически сразу же можно найти пример вируса, таковыми свойствами не обладающего.Приведу несколько формулировок определения:Хронологически наиболее раннее определение от Евгения Касперского (книга "Компьютерные вирусы"):
Определение 1: ОБЯЗАТЕЛЬНЫМ (НЕОБХОДИМЫМ) СВОЙСТВОМ КОМПЬЮТЕРНОГО ВИРУСА является возможность создавать свои дубликаты (не обязательно совпадающие с оригиналом) и внедрять их в вычислительные сети и/или файлы, системные области компьютера и прочие выполняемые объекты. При этом дубликаты сохраняют способность к дальнейшему распространению.
Определения 1 и 2 в большой степени повторяют определение Ф. Коэна или уточнение, предложенное Д. Чессом и С. Вайтом, что позволяет распространить на них (определения) вывод о невозможности создать алгоритм, обнаруживающий все такие программы или даже все "инкарнации" одного из вирусов. Тем не менее, на практике оказывается, что все известные вирусы могут быть обнаружены антивирусными программами. Результат достигается в частности еще и за счет того, что поврежденные или неудачные экземпляры вирусов, неспособные к созданию и внедрению своих копий, обнаруживаются и классифицируются наравне со всеми остальными "полноценными" вирусами. Следовательно, с практической точки зрения, т. е. с точки зрения алгоритмов поиска, способность к размножению вовсе не является обязательной для причисления программы к вирусам.Другая проблема, связанная с определением компьютерного вируса кроется в том, что сегодня под вирусом чаще всего понимается не "традиционный" вирус, а практически любая вредоносная программа. Это приводит к путанице в терминологии, осложненной еще и тем, что практически все современные антивирусы способны выявлять указанные типы вредоносных программ, таким образом ассоциация "вредоносная программа-вирус" становится все более устойчивой.Исходя из этого, а также из назначения антивирусных средств, в дальнейшем, если это не будет оговорено отдельно, под вирусами будут подразумеваться именно вредоносные программы.
Определение 3: Вредоносная программа — компьютерная программа или переносной код, предназначенный для реализации угроз информации, хранящейся в КС, либо для скрытого нецелевого использования ресурсов КС, либо иного воздействия, препятствующего нормальному функционированию КС. К вредоносным программам относятся компьютерные вирусы, трояны, сетевые черви и др.
Компьютерные вирусы, трояны и черви являются основными типами вредоносных программ.
Вирусы
Классические определения компьютерного вируса приведены выше.
Жизненный цикл
Поскольку отличительной особенностью вирусов в традиционном смысле является способность к размножению в рамках одного компьютера, деление вирусов на типы происходит в соответствии со способами размножения.Сам процесс размножения может быть условно разделен на несколько стадий:
1. Проникновение на компьютер 2. Активация вируса3. Поиск объектов для заражения4. Подготовка вирусных копий5. Внедрение вирусных копий
Особенности реализации каждой стадии порождают атрибуты, набор которых фактически и определяет класс вируса.
Проникновение
Вирусы проникают на компьютер вместе с зараженными файлами или другими объектами (загрузочными секторами дискет), никак, в отличие от червей, не влияя на процесс проникновения. Следовательно, возможности проникновения полностью определяются возможностями заражения и классифицировать вирусы по этим стадиям жизненного цикла отдельно смысла нет.
Для активации вируса необходимо, чтобы зараженный объект получил управление. На данной стадии деление вирусов происходит по типам объектов, которые могут быть заражены:
1.Загрузочные вирусы - вирусы, заражающие загрузочные сектора постоянных и сменных носителей.
2.Файловые вирусы —вирусы, заражающие файлы. Эта группа дополнительно делится на три, в зависимости от среды в которой выполняется код:
· Собственно файловые вирусы — те, которые непосредственно работают с ресурсами операционной системы.Из последних вредоносных программ, обладающих вирусной функциональностью, можно отметить Email-Worm.Win32.Bagle.p (а также его модификации .q и .r).
· Макровирусы — вирусы, написанные на языке макрокоманд и исполняемые в среде какого-либо приложения. В подавляющем большинстве случаев речь идет о макросах в документах Microsoft Office.
Макро-вирусы способны заражать не только документы Microsoft Word и Excel. Существуют вредоносные программы ориентированные и на другие типы документов: Macro.Visio.Radiant заражает файлы известной программы для построения диаграмм -Visio, Virus.Acad.Pobresito - документы AutoCAD, Macro.AmiPro.Green - документы популярного раньше текстового процессора Ami Pro.
· Скрипт-вирусы — вирусы, исполняемые в среде определенной командной оболочки: раньше - bat-файлы в командной оболочке DOS, сейчас чаще VBS и JS - скрипты в командной оболочке Windows Scripting Host (WSH).Отдельно стоит отметить тот факт, что вирусы, рассчитанные для работы в среде определенной ОС или приложения, оказываются неработоспособными в среде других ОС и приложений. Поэтому как отдельный атрибут вируса выделяется среда, в которой он способен выполняться. Для файловых вирусов это DOS, Windows, Linux, MacOS, OS/2. Для макровирусов - Word, Excel, PowerPoint, Office. Иногда вирусу требуется для корректной работы какая-то определенная версия ОС или приложения, тогда атрибут указывается более узко: Win9x, Excel97.
Поиск жертв На стадии поиска объектов для заражения встречается два способа поведения вирусов.1.Получив управление, вирус производит разовый поиск жертв, после чего передает управление ассоциированному с ним объекту (зараженному объекту).2.Получив управление, вирус так или иначе остается в памяти и производит поиск жертв непрерывно, до завершения работы среды, в которой он выполняетсяВирусы второго типа во времена однозадачной DOS было принято называть резидентными. С переходом на Windows проблема остаться в памяти перестала быть актуальной: практически все вирусы, исполняемые в среде Windows, равно как и в среде приложений MS Office, являются вирусами второго типа. И напротив, скрипт-вирусы являются вирусами первого типа. Соответственно, атрибут резидентный применим только к файловым DOS вирусам. Существование нерезидентных Windows вирусов возможно, но на практике они являются редким исключением.Отдельно имеет смысл рассмотреть так называемые stealth-вирусы - вирусы, которые находясь постоянно в памяти, перехватывают обращения к зараженному файлу и на ходу удаляют из него вирусный код, передавая в ответ на запрос неизмененную версию файла. Таким образом эти вирусы маскируют свое присутствие в системе. Для их обнаружения антивирусным средствам требуется возможность прямого обращения к диску в обход средств операционной системы. Наибольшее распространение Stealth-вирусы получили во времена DOS.
Подготовка вирусных копий
Определение 4: Сигнатура вируса — в широком смысле, информация, позволяющая однозначно определить наличие данного вируса в файле или ином коде. Примерами сигнатур являются: уникальная последовательность байт, присутствующая в данном вирусе и не встречающаяся в других программах; контрольная сумма такой последовательности. Процесс подготовки копий для распространения может существенно отличаться от простого копирования. Авторы наиболее сложных в технологическом плане вирусов стараются сделать разные копии максимально непохожими для усложнения их обнаружения антивирусными средствами. Как следствие, составление сигнатуры для такого вируса крайне затруднено либо вовсе невозможно.
Внедрение вирусных копий может осуществляться двумя принципиально разными методами:
· Внедрение вирусного кода непосредственно в заражаемый объект · Замена объекта на вирусную копию. Замещаемый объект, как правило, переименовывается
Для вирусов характерным является преимущественно первый метод. Второй метод намного чаще используется червями и троянами, а точнее троянскими компонентами червей, поскольку трояны сами по себе не распространяются.
Ущерб от вредоносных программ
Черви и вирусы могут осуществлять все те же действия, что и трояны. На уровне реализации это могут быть как отдельные троянские компоненты, так и встроенные функции. Кроме этого, за счет массовости, для вирусов и червей характерны также другие формы вредоносных действий:
· Перегрузка каналов связи — свойственный червям вид ущерба, связанный с тем, что во время масштабных эпидемий по Интернет-каналам передаются огромные количества запросов, зараженных писем или непосредственно копий червя. В ряде случаев, пользование услугами Интернет во время эпидемии становится затруднительным. Примеры: Net-Worm.Win32.Slammer · DDoS атаки — благодаря массовости, черви могут эффективно использоваться для реализации распределенных атак на отказ в обслуживании (DDoS атак). В разгар эпидемии, когда зараженными являются миллионы и даже десятки миллионов компьютеров, обращение всех инфицированных систем к определенному Интернет ресурсу приводит к полному блокированию этого ресурса. Так, во время атаки червя MyDoom сайт компании SCO был недоступен в течение месяца. · Потеря данных — более характерное для вирусов, чем для троянов и червей, поведение, связанное с намеренным уничтожением определенных данных на компьютере пользователя. Примеры: Virus.Win9x.CIH - удаление стартовых секторов дисков и содержимого Flash BIOS, Macro.Word97.Thus - удаление всех файлов на диске C:, Email-Worm.Win32.Mydoom.e - удаление файлов с определенными расширениями в зависимости от показателя счетчика случайных чисел· Нарушение работы ПО — также более свойственная вирусам черта. Из-за ошибок в коде вируса, зараженные приложения могут работать с ошибками или не работать вовсе. Примеры: Net-Worm.Win32.Sasser.a - перезагрузка зараженного компьютера· Загрузка ресурсов компьютера — интенсивное использование ресурсов компьютера вредоносными программами ведет к снижению производительности как системы в целом, так и отдельных приложений. Примеры: в разной степени - любые вредоносные программы
Наличие деструктивных действий вовсе не является обязательным критерием для классификации программного кода как вирусного. Следует также отметить, что одним только процессом саморазмножения вирус способен причинить колоссальный ущерб. Наиболее яркий пример - Net-Worm.Win32.Slammer.
Угрозы безопасности информации
Рассмотрим угрозы безопасности информации с точки зрения вирусов. Учитывая тот факт, что общее число вирусов по состоянию на сегодня превосходит 100000, проанализировать угрозы со стороны каждого из них является слишком трудоемкой и бесполезной задачей, поскольку ежедневно возрастает количество вирусов, а значит, необходимо ежедневно модифицировать полученный список. Будем считать, что вирус способен реализовать любую из угроз безопасности информации.Существует множество способов классификации угроз безопасности информации, которая обрабатывается в автоматизированной системе. Наиболее часто используется классификация угроз по результату их влияния на информацию, а именно - нарушение конфиденциальности, целостности и доступности.Для каждой угрозы существует несколько способов ее реализации со стороны вирусов.
Угроза нарушения конфиденциальности
· Кража информации и ее распространение с помощью штатных средств связи либо скрытых каналов передачи: Email-Worm.Win32.Sircam - рассылал вместе с вирусными копиями произвольные документы, найденные на зараженном компьютере
Угроза нарушения целостности
· Модификация без уничтожения (изменение информации): любой паразитирующий вирус· Модификация посредством уничтожения либо шифрации (удаление некоторых типов документов): Virus.DOS.OneHalf - шифрование содержимого диска, Virus.Win32.Gpcode.f - шифрует файлы с определенными расширениями, после чего самоуничтожается, оставляя рядом с зашифрованными файлами координаты для связи по вопросам расшифровки файлов· модификация путем низкоуровневого уничтожения носителя (форматирование носителя, уничтожение таблиц распределения файлов): Virus.MSWord.Melissa.w - 25 декабря форматирует диск C:
Угроза нарушения доступности
· Загрузка каналов передачи данных большим числом пакетов: Net-Worm.Win32.Slammer - непрерывная рассылка инфицированных пакетов в бесконечном цикле
· Любая деятельность, результатом которой является невозможность доступа к информации; различные звуковые и визуальные эффекты: Email-Worm.Win32.Bagle.p - блокирование доступа к сайтам антивирусных компаний
· Вывод компьютера из строя путем уничтожения либо порчи критических составляющих (уничтожение Flash BIOS): Virus.Win9x.CIH - порча Flash BIOSКак несложно было убедиться, для каждого из приведенных выше способов реализации угроз можно привести конкретный пример вируса, реализующего один или одновременно несколько способов.
Вредоносные программы отличаются условиями существования, применяемыми технологиями на различных этапах жизненного цикла, собственно вредоносным воздействием - все эти факторы и являются основой для классификации. В результате по основному (с исторической точки зрения) признаку - размножению, вредоносные программы делятся на три типа: собственно вирусы, черви и трояны.Независимо от типа, вредоносные программы способны наносить значительный ущерб, реализуя любые угрозы информации - угрозы нарушения целостности, конфиденциальности, доступности. В связи с этим при проектировании комплексных систем антивирусной защиты, и даже в более общем случае - комплексных системы защиты информации, необходимо проводить градацию и классифицировать объекты сети по важности обрабатываемой на них информации и по вероятности заражения этих узлов вирусами.
Читайте также: