2 какое свойство является главной отличительной чертой компьютерного вируса
• качество юридической обработки информации в системе.
2. Качество компьютерных технологий, заложенных в СПС:
• Поисковые и сервисные возможности;
• Возможности используемой технологии по передаче информации и ее актуализации у пользователя.
3. Качественный сервис по обслуживанию СПС:
• бесплатная демонстрация системы в офисе заказчика квалифицированным специалистом;
• гарантии стабильного информационного сопровождения систем (вплоть до возможности ежедневного обновления информации) на компьютере пользователя;
• обучение пользователя и его консультирование в сложных ситуациях;
• техническая поддержка систем на компьютере пользователя, восстановление их после аппаратных сбоев (поломки ПК) и т.п.;
• возможность заказа отдельных документов, не входящих в комплект поставки для пользователя, и т.д.
Отсутствие полноценного сервиса — верный признак того, что компания не в состоянии серьезно работать на рынке и не вкладывает необходимые средства в развитие и обслуживание своих продуктов.
ГЛАВА5. ЗАЩИТА ИНФОРМАЦИИ
Каждую неделю в мире появляется до 300 новых вирусов. С развитием Интернет вероятность заражения ими возросла в несколько раз.
Последствия действия вирусов могут быть катастрофическими.
Возможно, эти последствия не так критичны, если речь идет о конкретном пользователе, который с упоением «режется» в Quake-2, - ведь ему нужно будет лишь переустановить систему и заново пройти уже знакомые ему несколько десятков уровней.
Но ведь эти временные трудности не идут ни в какое сравнение с тем, какой урон может нанести заражение вирусом крупной компании, имеющей огромную сеть и осуществляющей свою работу на основе этой сети…
Термин «компьютерный вирус» впервые употребил сотрудник Лехайского университета (США) Ф.Коэн в 1984 г. на 7-й конференции по безопасности информации, проходившей в США. С тех пор прошло немало времени, острота проблемы вирусов многократно возросла, однако строгого определения, что же такое компьютерный вирус, так и не дано, несмотря на то, что попытки дать такое определение предпринимались неоднократно.
Основная трудность, возникающая при попытках дать строгое определение вируса, заключается в том, что практически все отличительные черты вируса (внедрение в другие объекты, скрытность, потенциальная опасность и проч.) либо присущи другим программам, которые никоим образом вирусами не являются, либо существуют вирусы, которые не содержат указанных выше отличительных черт (за исключением возможности распространения).
Таким образом, первой из причин, не позволяющих дать точное определение вирусу, является невозможность однозначно выделить отличительные признаки, которые соответствовали бы только вирусам.
Второй же трудностью, возникающей при формулировке определения компьютерного вируса, является то, что данное определение должно быть привязано к конкретной операционной системе, в которой этот вирус распространяется. Например, теоретически могут существовать операционные системы, в которых наличие вируса просто невозможно. Таким примером может служить система, где запрещено создавать и изменять области выполняемого кода, т.е. запрещено изменять объекты, которые либо уже выполняются, либо могут выполняться системой при каких-либо условиях.
Поэтому представляется возможным сформулировать только несколько обязательных условий для того, чтобы некоторая последовательность выполняемого кода являлась вирусом.
ОБЯЗАТЕЛЬНЫМИ (НЕОБХОДИМЫМИ) СВОЙСТВАМИ КОМПЬЮТЕРНОГО ВИРУСА являются:
- возможность создавать свои дубликаты (не обязательно совпадающие с оригиналом) и внедрять их в файлы, системные области компьютера и прочие выполняемые объекты. При этом дубликаты сохраняют способность к дальнейшему распространению.
- способность самостоятельного поиска «жертвы».
Вот почему точного определения вируса нет до сих пор, и вряд ли оно появится в обозримом будущем. Следовательно, нет точно определенного закона, по которому «хорошие» файлы можно отличить от «вирусов». Более того, иногда даже для конкретного файла довольно сложно определить, является он вирусом или нет.
5.2. Классификация компьютерных вирусов.
Классификация компьютерных вирусов в последнее время становится все более сложным и неблагодарным занятием, поскольку фантазия вирусописателей практически безгранична. Это приводит к тому, что вирус, который появится в будущем, очень возможно не впишется в созданные на данный момент категории.
Если взять какой-нибудь примитивный критерий, например, деструктивные возможности, то все вредоносные программы на сегодняшний день можно грубо поделить на:
- безвредные, т.е. никак не влияющие на работу компьютера (кроме уменьшения свободной памяти на диске или других ресурсов в результате своего распространения);
- неопасные, влияние которых ограничивается уменьшением свободной памяти на диске и графическими, звуковыми и пр. эффектами;
- опасные вирусы, которые могут привести к серьезным сбоям в работе компьютера;
- очень опасные, в алгоритм работы которых заведомо заложены процедуры, которые могут привести к потере программ, уничтожить данные, стереть необходимую для работы компьютера информацию, записанную в системных областях памяти, и даже, как гласит одна из непроверенных компьютерных легенд, способствовать быстрому износу движущихся частей механизмов - вводить в резонанс и разрушать головки некоторых типов винчестеров.
Опыт работы по обезвреживанию различных типов вирусов позволил специалистам Лаборатории Касперского выявить следующие основные критерии классификации вирусов:
Компью́терный ви́рус — разновидность компьютерных программ или вредоносный код, отличительной особенностью которых является способность к размножению (саморепликация). В дополнение к этому вирусы могут без ведома пользователя выполнять прочие произвольные действия, в том числе наносящие вред пользователю и/или компьютеру.
Даже если автор вируса не программировал вредоносных эффектов, вирус может приводить к сбоям компьютера из-за ошибок, неучтённых тонкостей взаимодействия с операционной системой и другими программами. Кроме того, вирусы обычно занимают некоторое место на накопителях информации и отбирают некоторые другие ресурсы системы. Поэтому вирусы относят к вредоносным программам.
Некомпетентные пользователи ошибочно относят к компьютерным вирусам и другие виды вредоносных программ — программы-шпионы и прочее. [1] Известны десятки тысяч компьютерных вирусов, которые распространяются через Интернет по всему миру.
Создание и распространение вредоносных программ (в том числе вирусов) преследуется в России согласно Уголовному кодексу РФ (глава 28, статья 273). Согласно доктрине информационной безопасности РФ [2] [нет в источнике] , в России должен проводиться правовой ликбез в школах и вузах при обучении информатике и компьютерной грамотности по вопросам защиты информации в ЭВМ, борьбы с компьютерными вирусами, детскими порносайтами [источник?] и обеспечению информационной безопасности в сетях ЭВМ.
Распространение
Этимология названия
Добавьте ссылки на источники, в противном случае он может быть удалён.
Дополнительные сведения могут быть на странице обсуждения.
Компьютерный вирус был назван по аналогии с биологическими вирусами за сходный механизм распространения. По-видимому, впервые слово «вирус» по отношению к программе было употреблено Грегори Бенфордом (Gregory Benford) в фантастическом рассказе «Человек в шрамах» [8] , опубликованном в журнале Venture в мае 1970 года.
Термин «компьютерный вирус» впоследствии не раз «открывался» и переоткрывался. Так, переменная в подпрограмме PERVADE (1975), от значения которой зависело, будет ли программа ANIMAL распространяться по диску, называлась VIRUS. Также, вирусом назвал свои программы Джо Деллинджер и, вероятно, это и было то, что впервые было правильно обозначено как вирус.
Профилактика и лечение
- Не работать под привилегированными учётными записями без крайней необходимости.
- Не запускать незнакомые программы из сомнительных источников.
- Стараться блокировать возможность несанкционированного изменения системных файлов.
- Отключать потенциально опасный функционал системы (например autorun носителей в MS Windows, сокрытие файлов, их расширений и пр.).
- Не заходить на подозрительные сайты, обращать внимание на адрес в адресной строке обозревателя.
- Пользоваться только доверенными дистрибутивами.
- Постоянно делать резервные копии важных данных и иметь образ системы со всеми настройками для быстрого развёртывания.
- Выполнять регулярные обновления часто используемых программ, особенно, обеспечивающих безопасность системы.
Какое из определений вируса лучше?
Сравните подходы, используемые в различных моделях и определениях вируса.
Вирус — это:
a) соответствующая определенным критериям функция, отображающая эталонный, незараженный объект на отличающийся от него зараженный объект;
b) любая функция, отображающая эталонный, незараженный объект на отличающийся от него зараженный объект.
Для распознавания вируса в проверяемом объекте нужно:
a) провести полное аналитическое или алгоритмическое изучение свойств и поведения системы, состоящей из проверяемого объекта и машины (среды);
b) определить местоположение проверяемого объекта в машине (среде).
Определение вируса основано на:
a) свойстве рекурсивной репликации;
b) методе сравнения образца с эталоном.
Еще раз подчеркнем существенную роль среды в процессе репликации. Например, сами по себе последовательности символов «SENDMAIL» (8 байт), «COPY» (4 байта) или «CP» (2 байта), которые могут содержаться в простейшем вирусе и которыми он может оперировать, не несут в себе ничего такого, что было бы специфично для процесса репликации (тем более — рекурсивной). Ничего подобного не содержит в себе и короткая байтовая последовательность, вызывающая функцию копирования из API операционной системы в машинном коде. В этой последовательности, если рассматривать ее вне среды, не содержится ни механизма репликации, ни его описания, ни даже намека на него.
Более того: в реальном вирусе может не содержаться даже этой информации — в буквальном смысле! Вместо нее вирус, например, может включать в себя сколь угодно сложный криптоалгоритм, а ключом к этому алгоритму может служить произвольная комбинация объектов среды, способная появиться в ней в неопределенном будущем. Это означает, что до некоторого неизвестного момента, до выполнения средой некоторого неизвестного при анализе условия принципиальное отсутствие в коде вируса каких-либо связей с понятиями как репликации, так и рекурсии можно гарантировать с точностью математического доказательства. Но даже в этом случае вирус, слившийся в свойствах со средой и образовавший с ее элементами сложную, распределенную в пространстве и времени систему, сохраняет возможность размножения кода.
Таким образом, в современных больших информационных системах формализация и поиск признаков рекурсивной репликации в отдельных объектах представляются бесполезными даже с теоретической точки зрения. А рассматривать каждый объект в совокупности со всей средой — невозможно. Если в качестве входных данных для анализа единичного объекта требуется подстановка в абстрактную формулу полной информации о состоянии практически бесконечной (из-за огромного размера и перманентной изменчивости) среды — значит, выбран тупиковый путь. Ранее мы уже показали, что Интернет является единой автопрограммируемой средой, единой вычислительной системой, события в которой могут менять код в отдельно взятом системном блоке. Поэтому все эти события должны учитываться в формальном определении вируса, если оно основано на свойствах кода — как в абстрактной модели, так и на практике. И то, и другое исключено.
В условиях глобальной сети, где возможны неограниченные комбинации прямых и обратных связей между элементами, очевидны и давно применяются методы массовой репликации кода, не имеющие отношения к классическим, рекурсивным. Если опасный код заражает произвольный системный блок этой сети, то не имеет значения, является ли это заражение рекурсивным — или же дочерний код сформирован родительским по гораздо более сложному алгоритму. Алгоритм может быть любым. А на основе неизвестного алгоритма нельзя строить какие-либо точные модели, применимые на практике.
Не следует забывать, что в реальных вычислительных системах вирусы программируются (т.е. управляются) людьми. А все то, что управляется человеком, почти не поддается формализации.
Из изложенного следует вывод, что формальное определение компьютерного вируса, основанное не на признаке рекурсивной репликации, а на принципиально иных признаках, во многих случаях может оказаться наилучшим.
Это не значит, что понятие рекурсивной функции перестало иметь значение в контексте вирусов. Оно остается крайне важным, хотя и не может рассматриваться как определяющее. Оно не позволяет точно позиционировать цель, явление, предмет угрозы и ее смысловую сущность с использованием приемлемого математического аппарата. Поэтому лучше всегда иметь в виду альтернативы. Отчетливое понимание специалистом по информационной безопасности нескольких разных определений вируса, соответствующих им теоретических моделей и аспектов антивирусной защиты дает наибольшие возможности для решения практических задач.
P.S. Конечно, возможны и другие определения, кроме приведенных в статье. Их можно поискать в Сети или создать самостоятельно. Главное, что надо при этом помнить: по нормам формальной логики грамотное определение должно позволять, как минимум, определить искомый объект в ряду других :)
История
Основы теории самовоспроизводящихся механизмов заложил американец венгерского происхождения Джон фон Нейман, который в 1951 году предложил метод создания таких механизмов. С 1961 года известны рабочие примеры таких программ. [3]
Первыми известными собственно вирусами являются Virus 1,2,3 и Elk Cloner для ПК Apple II, появившиеся в 1981 году. Зимой 1984 года появились первые антивирусные утилиты — CHK4BOMB и BOMBSQAD авторства Энди Хопкинса (англ. Andy Hopkins ). В начале 1985 года Ги Вонг (англ. Gee Wong ) написал программу DPROTECT — первый резидентный антивирус.
Первые вирусные эпидемии относятся к 1987—1989 годам: Brain (более 18 тысяч зараженных компьютеров, по данным McAfee [источник не указан 918 дней] ), Jerusalem (проявился в пятницу 13 мая 1988 года, уничтожая программы при их запуске [4] ), червь Морриса (свыше 6200 компьютеров, большинство сетей вышло из строя на срок до пяти суток), DATACRIME (около 100 тысяч зараженных ПЭВМ только в Нидерландах).
Тогда же оформились основные классы двоичных вирусов: сетевые черви (червь Морриса, 1987), «троянские кони» (AIDS, 1989 [5] ), полиморфные вирусы (Chameleon, 1990), стелс-вирусы (Frodo, Whale, 2-я половина 1990).
Параллельно оформляются организованные движения как про-, так и антивирусной направленности: в 1990 году появляются специализированная BBS Virus Exchange, «Маленькая чёрная книжка о компьютерных вирусах» Марка Людвига, первый коммерческий антивирус Symantec Norton AntiVirus.
В 1992 году появились первый конструктор вирусов для PC — VCL (для Amiga конструкторы существовали и ранее), а также готовые полиморфные модули (MtE, DAME и TPE) и модули шифрования для встраивания в новые вирусы.
В несколько последующих лет были окончательно отточены стелс- и полиморфные технологии (SMEG.Pathogen, SMEG.Queeg, OneHalf, 1994; NightFall, Nostradamus, Nutcracker, 1995), а также испробованы самые необычные способы проникновения в систему и заражения файлов (Dir II — 1991, PMBS, Shadowgard, Cruncher — 1993). Кроме того, появились вирусы, заражающие объектные файлы (Shifter, 1994) и исходные тексты программ (SrcVir, 1994). С распространением пакета Microsoft Office получили распространение макровирусы (Concept, 1995).
В 1996 году появился первый вирус для Windows 95 — Win95.Boza, а в декабре того же года — первый резидентный вирус для неё — Win95.Punch.
С распространением сетей и Интернета файловые вирусы всё больше ориентируются на них как на основной канал работы (ShareFun, 1997 — макровирус MS Word, использующий MS-Mail для распространения; Win32.HLLP.DeTroie, 1998 — семейство вирусов-шпионов; Melissa, 1999 — макровирус и сетевой червь, побивший все рекорды по скорости распространения). Эру расцвета «троянских коней» открывает утилита скрытого удаленного администрирования BackOrifice (1998) и последовавшие за ней аналоги (NetBus, Phase).
Вирус Win95.CIH достиг апогея в применении необычных методов, перезаписывая FlashBIOS зараженных машин (эпидемия в июне 1998 считается самой разрушительной за предшествующие годы).
В конце 1990-x — начале 2000-x годов с усложнением ПО и системного окружения, массовым переходом на сравнительно защищенные Windows семейства NT, закреплением сетей как основного канала обмена данными, а также успехами антивирусных технологий в обнаружении вирусов, построенных по сложным алгоритмам, последние стали всё больше заменять внедрение в файлы на внедрение в операционную систему (необычный автозапуск, руткиты) и подменять полиморфизм огромным количеством видов (число известных вирусов растет экспоненциально).
Вместе с тем, обнаружение в Windows и другом распространенном ПО многочисленных уязвимостей открыло дорогу червям-эксплоитам. В 2004 году беспрецедентные по масштабам эпидемии вызывают MsBlast (по данным Microsoft — более 16 млн систем [6] ), Sasser и Mydoom (оценочные ущербы 500 млн и 4 млрд долл. соответственно [7] ).
Кроме того, монолитные вирусы в значительной мере уступают место комплексам вредоносного ПО с разделением ролей и вспомогательными средствами (троянские программы, загрузчики/дропперы, фишинговые сайты, спам-боты и пауки). Также расцветают социальные технологии — спам и фишинг — как средство заражения в обход механизмов защиты ПО.
Вначале на основе троянских программ, а с развитием технологий p2p-сетей — и самостоятельно — набирает обороты самый современный вид вирусов — черви-ботнеты (Rustock, 2006, ок. 150 тыс. ботов; Conficker, 2008—2009, более 7 млн ботов; Kraken, 2009, ок. 500 тыс. ботов). Вирусы в числе прочего вредоносного ПО окончательно оформляются как средство киберпреступности.
Определение вируса по Коэну
Фред Коэн, аспирант Университета Южной Калифорнии, заинтересовался проблемой компьютерных вирусов в начале 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», расширяющую модель Адлемана на сложные типы вирусов, в частности — на полиморфные вирусы. Это потребовало значительного усложнения модели, но не изменило ее сути. В работе подтверждается прежний вывод о невозможности распознать произвольный вирус, точнее — о возможности существования вирусов, принципиально не поддающихся распознаванию в рамках используемой модели.
В работе Адлемана нам представляются особенно важными два момента. Во-первых, в качестве стратегического — и, по сути, единственного — средства защиты от вирусов он совершенно верно назвал полную и безусловную изоляцию компьютера, т.е. закрытость среды (что касается альтернативных способов защиты, в работе лишь поставлен вопрос о том, насколько они реальны). Во-вторых, ученый показал необходимость привлечения понятия исходной, незараженной программы в качестве обязательного условия определения вируса.
Напомним, что под изоляцией компьютерных систем применительно к вирусам всегда имеется в виду взаимная изоляция систем, контролируемых разными хозяевами. Разумеется, нет необходимости во взаимной изоляции отдельных элементов любой замкнутой системы, которая находится под полным контролем одного хозяина. Собственную систему хозяин программирует так, как сочтет нужным (в этом состоит отличие хозяина от номинального владельца). Поэтому вряд ли можно использовать понятие «вредоносность» вне социального контекста, исключительно в технологических категориях: никакие процессы изменения программ и данных сами по себе «вредоносностью» не обладают.
Механизм
Вирусы распространяются, копируя свое тело и обеспечивая его последующее исполнение: внедряя себя в исполняемый код других программ, заменяя собой другие программы, прописываясь в автозапуск и другое. Вирусом или его носителем могут быть не только программы, содержащие машинный код, но и любая информация, содержащая автоматически исполняемые команды — например, пакетные файлы и документы Microsoft Word и Excel, содержащие макросы. Кроме того, для проникновения на компьютер вирус может использовать уязвимости в популярном программном обеспечении (например, Adobe Flash, Internet Explorer, Outlook), для чего распространители внедряют его в обычные данные (картинки, тексты и т. д.) вместе с эксплоитом, использующим уязвимость.
Противодействие обнаружению
Во времена MS-DOS были распространены стелс-вирусы, перехватывающие прерывания для обращения к операционной системе. Вирус таким образом мог скрывать свои файлы из дерева каталогов или подставлять вместо зараженного файла исходную копию.
С широким распространением антивирусных сканеров, проверяющих перед запуском любой код на наличие сигнатур или выполнение подозрительных действий, этой технологии стало недостаточно. Сокрытие вируса из списка процессов или дерева каталогов для того, чтобы не привлекать лишнее внимание пользователя, является базовым приемом, однако для борьбы с антивирусами требуются более изощренные методы. Для противодействия сканированию на наличие сигнатур применяется шифрование кода и полиморфизм. Эти техники часто применяются вместе, поскольку для расшифрования зашифрованной части вируса необходимо оставлять расшифровщик незашифрованным, что позволяет обнаруживать его по сигнатуре. Поэтому для изменения расшифровщика применяют полиморфизм — модификацию последовательности команд, не изменяющую выполняемых действий. Это возможно благодаря весьма разнообразной и гибкой системе команд процессоров Intel, в которой одно и то же элементарное действие, например сложение двух чисел, может быть выполнено несколькими последовательностями команд.
Также применяется перемешивание кода, когда отдельные команды случайным образом разупорядочиваются и соединяются безусловными переходами. Передовым фронтом вирусных технологий считается метаморфизм, который часто путают с полиморфизмом. Расшифровщик полиморфного вируса относительно прост, его функция — расшифровать основное тело вируса после внедрения, то есть после того как его код будет проверен антивирусом и запущен. Он не содержит самого полиморфного движка, который находится в зашифрованной части вируса и генерирует расшифровщик. В отличие от этого, метаморфный вирус может вообще не применять шифрование, поскольку сам при каждой репликации переписывает весь свой код. [15]
Определение вируса по нарушению кода
Невозможность надежного распознавания вирусов в рамках классических моделей дает повод задуматься о подходе к решению проблемы с другой стороны.
При традиционном подходе создается как можно более точная модель вируса, основанная на понятиях «рекурсивная репликация» и, опционально, «вредоносность». В рамках созданной модели дается определение вируса. Затем констатируется невозможность использования этого определения для оценки соответствия ему исследуемых информационных объектов.
Но можно поступить наоборот: поставить целью практическую применимость определения вируса для простого и гарантированного решения задачи его распознавания — и для комплексного решения проблемы цифровых инфекций в целом. Затем, используя это определение, можно выяснить, какая модель вируса ему соответствует.
Для целей информационной безопасности самым удобным будет строго формализованное, соразмерное и системное определение, которое позволяет легко выполнять оценку соответствия ему произвольных информационных объектов. Процедура сравнения свойств каждого исследуемого объекта с определением должна иметь форму короткого, надежного и хорошо контролируемого алгоритма, чтобы ее можно было автоматизировать и применять на практике.
Самое простое и очевидное решение — считать вирусом любое внедрение постороннего кода (т.е. произвольной последовательности символов) в эталонную, исходную, незараженную программу. Это означает отказ от ресурсоемкой и в общем случае неразрешимой задачи анализа процессов взаимодействия проверяемого кода с машиной — и отказ от попыток формализации этих процессов. Вирус определяется не через свойства последовательности символов, а через ее местоположение в машине (компьютере, вычислительной системе). Иными словами, одна и та же последовательность символов может считаться или не считаться вирусом в зависимости от того, где она находится по отношению к «системе координат» машины — в каком именно месте ленты Тьюринга, в какой именно области оперативной памяти, жесткого диска и т.п. Вирусом считается любая последовательность символов, которая находится «в неположенном месте», т.е. в области, зарезервированной для другого информационного объекта — охраняемого кода.
Строгое определение для обычной SISD-машины, которое можно адаптировать и для более широкого круга информационных систем, формулируется так: компьютерный вирус — это измененная по сравнению с эталоном часть кода.
Используя на практике модель, соответствующую приведенному определению вируса, вы перестраховываетесь и уходите в глубокую и очень надежную оборону. Вместо анализа неизвестного кода для точного ответа на вопрос о возможности инициирования им рекурсивной репликации, вы исходите из того, что такая возможность не исключена. Вместо анализа неизвестного кода для точного ответа на вопрос о его вредоносности, вы исходите из того, что внесение в охраняемый код любого, даже самого малого изменения с некоторой вероятностью вызывает нарушение его функций — точно так же, как нарушение функций биологической ДНК может быть вызвано замещением единственного нуклеотида в последовательности.
Для удобства решения многих практических задач в сложных информационных системах определение можно расширить на те области данных, которые должны иметь в системе такую же неприкосновенность, как исполняемый код. В общем случае, зараженным объявляется любой охраняемый информационный объект, в границы которого попал другой объект.
Заметим, что при отсутствии эталона для произвольного кода весь этот код по данному определению считается вирусом. Хотя это непривычно звучит, это надо хорошо понять и всегда иметь в виду. О том, откуда берется эталон, мы поговорим в следующих выпусках блога: для этого понадобится привлечение социальных факторов.
Лингвистическая справка. Слово «вирус» появилось в современных языках чуть более 100 лет назад, после открытия биологических вирусов. Их характерная черта — репликация, исполняемая соответствующей средой. Но у слова «вирус» есть и другое, исходное значение: на латыни это слово обозначает яд. Никакой связи с репликацией: вирус — это объект, характеризующийся нарушением функций внешнего объекта, в который он проник. Использование термина «компьютерный вирус» в контексте деструктивного воздействия настолько же корректно, насколько и в контексте репликации. Использование неформальных терминов «вредонос» или «зловред» нежелательно, особенно в технологической терминологии, вне социального контекста. Термин «антивирусная защита» (а не «антивредоносная» и не «антизловредная») наиболее устойчив в русском языке и имеет очевидные коннотации.
Каналы
Классификация
Ныне существует немало разновидностей вирусов, различающихся по основному способу распространения и функциональности. Если изначально вирусы распространялись на дискетах и других носителях, то сейчас доминируют вирусы, распространяющиеся через Интернет. Растёт и функциональность вирусов, которую они перенимают от других видов программ.
В настоящее время не существует единой системы классификации и именования вирусов (хотя попытка создать стандарт была предпринята на встрече CARO в 1991 году). Принято разделять вирусы:
- по поражаемым объектам (файловые вирусы, загрузочные вирусы, скриптовые вирусы, макровирусы, вирусы, поражающие исходный код);
- по поражаемым операционным системам и платформам (DOS, Microsoft Windows, Unix, Linux);
- по технологиям, используемым вирусом (полиморфные вирусы, стелс-вирусы, руткиты);
- по языку, на котором написан вирус (ассемблер, высокоуровневый язык программирования, скриптовый язык и др.);
- по дополнительной вредоносной функциональности (бэкдоры, кейлоггеры, шпионы, ботнеты и др.).
Формальное определение
Нет общепринятого определения вируса. В академической среде термин был употреблён Фредом Коэном в его работе «Эксперименты с компьютерными вирусами» [9] [10] , где он сам приписывает авторство термина Лену Эдлмэну [11] [12] .
Формально вирус определён Фредом Коэном со ссылкой на машину Тьюринга [13] следующим образом [14] :
с заданным множеством состояний SM, множеством входных символов IM и отображений (OM, NM, DM), которая на основе своего текущего состояния s ∈ SM и входного символа i ∈ IM, считанного с полубесконечной ленты, определяет: выходной символ o ∈ IM для записи на ленту, следующее состояние машины s' ∈ SM и движения по ленте d ∈ .
Для данной машины M, последовательность символов v : vi ∈ IM может быть сочтена вирусом тогда и только тогда, когда обработка последовательности v в момент времени t, влечёт за собой то, что в один из следующих моментов времени t, последовательность v′ (не пересекающаяся с v) существует на ленте, и эта последовательность v′ была записана M в точке t′, лежащей между t и t″:
- t ∈ N число базовых операций «перемещения», осуществлённых машиной
- PM ∈ N номер позиции на ленте машины в момент времени t
- SM0 начальное состояние машины
- CM(t, c) содержимое ячейки c в момент времени t
Данное определение было дано в контексте вирусного множества VS = (M, V) — пары, состоящей из машины Тьюринга M и множества последовательностей символов V: v, v' ∈ V. Из данного определения следует, что понятие вируса неразрывно связано с его интерпретацией в заданном контексте, или окружении.
Фредом Коэном было показано [14] , что «любая самовоспроизводящаяся последовательность символов: одноэлементный VS, согласно которой существует бесконечное количество VS, и не-VS, для которых существуют машины, по отношению к которым все последовательности символов является вирусом, и машин, для которых ни одна из последовательностей символов не является вирусом, даёт возможность понять, когда любая конечная последовательность символов является вирусом для какой-либо машины». Он также приводит доказательство того, что в общем виде вопрос о том, является ли данная пара (M, X) : Xi ∈ IM вирусом, неразрешим (то есть не существует алгоритма, который мог бы достоверно определить все вирусы), теми же средствами, которыми доказывается неразрешимость проблемы остановки. [13]
Другие исследователи доказали, что существуют такие типы вирусов (вирусы, содержащие копию программы, улавливающей вирусы), которые не могут быть безошибочно определены ни одним алгоритмом.
Содержание
Экономика
Некоторые производители антивирусов утверждают, что сейчас создание вирусов превратилось из одиночного хулиганского занятия в серьёзный бизнес, имеющий тесные связи с бизнесом спама и другими видами противозаконной деятельности. [16]
Также называются миллионные и даже миллиардные суммы ущерба от действий вирусов и червей. [17] К подобным утверждениям и оценкам следует относиться осторожно: суммы ущерба по оценкам различных аналитиков различаются (иногда на три-четыре порядка), а методики подсчёта не приводятся.
Компьютерные вирусы одна из главных угроз информационной безопасности. Это связано с масштабностью распространения этого явления и, как следствие, огромного ущерба, наносимого информационным системам.
Современный компьютерный вирус – это практически незаметный для обычного пользователя "враг", который постоянно совершенствуется, находя все новые и более изощренные способы проникновения на компьютеры пользователей. Необходимость борьбы с компьютерными вирусами обусловлена возможностью нарушения ими всех составляющих информационной безопасности.
Компьютерные вирусы были и остаются одной из наиболее распространенных причин потери информации. Вирусные эпидемии способны блокировать работу организаций и предприятий.
Характерные черты компьютерных вирусов
Термин "компьютерный вирус" появился в середине 80-х годов, на одной из конференций по безопасности информации, проходившей в США. С тех пор прошло немало времени, острота проблемы вирусов многократно возросла, однако, строгого определения компьютерного вируса так и нет.
Трудность, возникающая при попытках сформулировать строгое определение вируса, заключается в том, что практически все отличительные черты вируса (внедрение в другие объекты, скрытность, потенциальная опасность и др.) либо присущи другим программам, которые никакого отношения не имеют к вирусам, либо существуют вирусы, которые не содержат указанных выше отличительных черт (за исключением возможности распространения).
Основная особенность компьютерных вирусов заключается в возможности их самопроизвольного внедрения в различные объекты операционной системы – присуща многим программам, которые не являются вирусами, но именно эта особенность является обязательным (необходимым) свойством компьютерного вируса. К более полной характеристике современного компьютерного вируса следует добавить способность создавать свои дубликаты (не обязательно совпадающие с оригиналом) и внедрять их в вычислительные сети или файлы, системные области компьютера и прочие выполняемые объекты.
Приведем одно из общепринятых определений вируса, содержащееся в ГОСТе Р 51275-99 "Защита информации. Объект информатизации. Факторы, воздействующие на информацию. Общие положения".
Программный вирус – это исполняемый или интерпретируемый программный код, обладающий свойством несанкционированного распространения и самовоспроизведения в автоматизированных системах или телекоммуникационных сетях с целью изменить или уничтожить программное обеспечение и/или данные, хранящиеся в автоматизированных системах.
Невозможность четкой формулировки определения компьютерного вируса сама по себе не является проблемой. Главная проблема, которая следует из этого, заключается в том, что нет четких (однозначных) признаков, по которым можно отличить различные файлы от "вирусов", что не позволяет в полной мере устранить их влияние.
Несмотря на все усилия разработчиков антивирусного программного обеспечения до сегодняшнего дня нет достаточно надежных антивирусных средств и, скорее всего, противостояние "вирусописателей" и их оппонентов будет постоянным.
Исходя из этого, необходимо понимать, что нет достаточных программных и аппаратных средств защиты от вирусов, а надежная защита от вирусов может быть обеспечена комплексным применением этих средств и, что немаловажно, соблюдением элементарной "компьютерной гигиены".
-Паразитические, репликаторы, невидимки, мутанты, троянские.
4. Заражение компьютерными вирусами может произойти в процессе: //
-прослушивания звуковых файлов. //
-Редактирование документов в формате DOC. //
-редактирования графических файлов. //
5. Отличительными особенностями компьютерного вируса являются: //
-Значительный объем программного кода. //
-Необходимость запуска программы со стороны пользователя. //
-Способность к повышению помехоустойчивости операционной системы. //
+Маленький объем; способность к самостоятельному запуску и многократному копированию кода, к созданию помех корректной работе компьютера. //
6.Что делает программа-детектор://
-находит зараженные файлы и лечит их//
+ищет вирусы с известной сигнатурой//
-сравнивает исходное состояние файла с текущим//
-обнаруживает подозрительные действия//
-предотвращает заражение файлов
7.Программа доктор (фаг)://
-ищет вирусы с известной сигнатурой//
-предотвращает заражение файлов//
+находит зараженные файлы и лечит их//
-сравнивает исходное состояние файла с текущим//
-обнаруживает подозрительные действия
-обнаруживает подозрительные действия//
-предотвращает заражение файлов//
-ищет вирусы с известной сигнатурой//
+сравнивает исходное состояние файла с текущим//
-находит зараженные файлы и лечит их
9.Компьютерный вирус – это://
-Программа форматирования жесткого диска//
-Файлы, загружаемые при отключении от сети Internet//
+Программа, мешающая корректной работе компьютера//
-Файлы, загружаемые при подключении к сети Internet//
- устройство для удаления файлов
10.Программы, предназначенные для защиты от вирусов://
-предотвращает заражение файлов//
-ищет вирусы с известной сигнатурой//
-сравнивает исходное состояние файла с текущим//
-находит зараженные файлы и лечит их//
+обнаруживает подозрительные действия
12. Какая программа находит зараженные файлы и лечит их//
-Программа доктор (фаг).//
+модифицируют программы и диски//
-находит зараженные файлы и лечит их//
-сравнивает исходное состояние файла с текущим//
-обнаруживает подозрительные действия//
-ищет вирусы с известной сигнатурой
14. Как называется программа, запоминающая данные о системной области программ и диска, затем определяющая несоответствия при сравнении://
15. Класс вирусов по особенностям алгоритма вируса подразделяются на://
- сетевые, файловые, загрузочные, файлово-загрузочные.//
- резидентные и нерезидентные.//
- опасные, безвредные, очень опасные, неопасные.//
+вирусы-черви, паразитические, стелс-вирусы, полиморфик –вирусы.//
- доктора, фаги, детекторы.
16.Вирусы, перехватывающие команду чтения зараженного участка и подставляющие незараженный код, называются//
17.Самошифрующиеся вирусы-призраки, имеющие непостоянный ключ и меняющийся код, называются//
18. Укажите две основные группы вирусов://
-Неопасные, очень опасные.//
19. Вирусы, которые активизируются при запуске на выполнение "зараженной программы" и проявляются сразу и не записываются в оперативную память называются://
В первом, втором и третьем выпусках блога мы рассказали о том, как автопрограммируемость — врожденная черта фон-неймановских компьютеров — привела к появлению в них вирусов. Темой четвертого выпуска был основополагающий метод антивирусной защиты — многоуровневое фиксирование программ на основе разделения программ и данных. Этот метод считается наиболее надежным из всех существующих. Была показана его взаимосвязь с другими основными методами.
В этой статье мы рассмотрим три разных определения понятия «компьютерный вирус». Первые два сформулированы Фредериком Коэном и Леонардом Адлеманом в фундаментальных работах 1984-1992 годов и считаются классическими в современной компьютерной науке. К сожалению, из них автоматически следует, что задача распознавания произвольного вируса неразрешима. Что и доказали эти ученые в тех же работах, где привели свои определения.
Поэтому третье определение мы специально сформулируем таким образом, чтобы оно делало ту же самую задачу полностью разрешимой. Для этого мы откажемся от нескольких плохо формализуемых понятий, которые лежат в основе классических определений, и отнесем к вирусам более широкий круг информационных объектов. Такой подход — решение сложной задачи с помощью замены категорий, в которых она формулируется — часто бывает удобен и полезен в практической работе специалиста по информационной безопасности.
Проблема компьютерных вирусов отчетливо проявилась примерно через 35 лет после появления концепции «stored program computer». Первые авторы и исследователи вирусов оказались под сильным впечатлением от невиданного ранее феномена саморепликации (в биологическом смысле термина) рукотворных объектов. Позже специалисты осознали, что это феномен не столько самих этих объектов, сколько исполняющей среды — даже такой относительно простой, как машина Тьюринга или фон-неймановская машина с типичной операционной системой, не говоря уже о более сложных архитектурах и сетевых средах. Стало ясно, что массовая репликация объектов не является специфическим свойством какого-то одного класса программ, а вполне типична для всех уровней сложной автопрограммируемой системы. Например, массово реплицируются блоки кода в парадигме ООП или программы-приложения, загружаемые пользователями с центрального сервера. Но несмотря на обнаружение стратегической роли среды, репликация до сих пор ассоциируется у большинства людей именно с вирусами — и лежит в основе их классических определений.
Читайте также: