Компьютерный вирус

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 194.44.18.87 (обсуждение) в 09:40, 17 марта 2011 (Ссылки). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
Файл:Virustext.jpg
Начало исходного кода примитивного вируса для MS-DOS

Компью́терный ви́рус — разновидность компьютерных программ, отличительной особенностью которых является способность к размножению (саморепликация). В дополнение к этому вирусы могут без ведома пользователя выполнять прочие произвольные действия, в том числе наносящие вред пользователю и/или компьютеру. По этой причине вирусы относят к вредоносным программам.

Неспециалисты ошибочно относят к компьютерным вирусам и другие виды вредоносных программ - программы-шпионы и даже спам.[1] Известны десятки тысяч компьютерных вирусов, которые распространяются через Интернет по всему миру.

Создание и распространение вредоносных программ (в том числе вирусов) преследуется в России согласно Уголовному Кодексу РФ (глава 28, статья 273).

Согласно доктрине информационной безопасности РФ, в России должен проводиться правовой ликбез в школах и вузах при обучении информатике и компьютерной грамотности по вопросам защиты информации в ЭВМ, борьбы с компьютерными вирусами, детскими порносайтами и обеспечению информационной безопасности в сетях ЭВМ.

Происхождение термина

Компьютерный вирус был назван по аналогии с биологическими вирусами за сходный механизм распространения. По всей видимости, впервые слово «вирус» по отношению к программе было употреблено Грегори Бенфордом (Gregory Benford) в фантастическом рассказе «Человек в шрамах»[2], опубликованном в журнале Venture в мае 1970 года. Термин «компьютерный вирус» впоследствии не раз открывался и переоткрывался — так, переменная в программе PERVADE (1975), от значения которой зависело, будет ли программа ANIMAL распространяться по диску, называлась VIRUS. Также, вирусом назвал свои программы Джо Деллинджер (англ. Joe Dellinger), и, вероятно, — это и был первый вирус, названный собственно «вирусом».

Формальное определение

Нет общепринятого формального определения вируса. В академической среде термин был употреблён Фредом Коэном в его работе «Эксперименты с компьютерными вирусами» [3][4] , где он сам приписывает авторство термина Лену Эдлмэну. [5][6]

Формально вирус определён Фредом Коэном, со ссылкой на Машину Тьюринга[7], следующим образом: [8]

M : (SM, IM, OM : SM x IM > IM, NM : SM x IM > SM, DM : SM x IM > d)

с заданным множеством состояний SM, множеством входных символов IM и отображений (OM, NM, DM), которая на основе своего текущего состояния s ∈ SM и входного символа i ∈ IM, считанного с полубесконечной ленты, определяет: выходной символ o ∈ IM для записи на ленту, следующее состояние машины s' ∈ SM и движения по ленте d ∈ {-1,0,1}.

Для данной машины M, последовательность символов v : vi ∈ IM может быть сочтена вирусом тогда и только тогда, когда обработка последовательности v в момент времени t, влечёт за собой то, что в один из следующих моментов времени t, последовательность v′ (не пересекающаяся с v) существует на ленте, и эта последовательность v′ была записана M в точке t′, лежащей между t и t″:

∀ CM ∀ t ∀ j:
SM(t) = SM0 ∧
PM(t) = j ∧
{ CM(t, j) … CM(t, j + |v| - 1)} = v ⇒
∃ v' ∃ j' ∃ t' ∃ t":
t < t" < t' ∧
{j' … j' +|v'|} ∩ {j … j + |v|} = ∅ ∧
{ CM(t', j') … CM(t', j' + |v'| - 1)} = v' ∧
PM(t") ∈ { j' … j' + |v'| - 1 }

где

  • t ∈ N число базовых операций «перемещения», осуществлённых машиной
  • PMN номер позиции на ленте машины в момент времени t
  • SM0 начальное состояние машины
  • CM(t, c) содержимое ячейки c в момент времени t

Данное определение было дано в контексте вирусного множества VS = (M, V) — пары состоящей из Машины Тьюринга M и множества последовательностей символов V: v, v' ∈ V. Из данного определения следует, что понятие вируса неразрывно связано с его интерпретацией в заданном контексте — окружении. Фредом Коэном было показано[8], что: «любая самовоспроизводящаяся последовательность символов одноэлементный VS, что существует бесконечное количество VS и не-VS, для которых существуют машины, для которых все последовательности символов является вирусом, и для которых ни одна из последовательностей символов не является вирусом, и что любая конечная последовательность символов является вирусом для какой-либо машины». Там же приведено доказательство того, что в общем виде, вопрос о том, является ли данная пара (M, X) : Xi ∈ IM вирусом, неразрешим (то есть не существует алгоритма, который мог бы достоверно определить все вирусы), теми же средствами, которыми доказывается неразрешимость проблемы остановки.[7] Другие исследователи доказали, что существуют такие типы вирусов (вирусы, содержащие копию программы, детектирующей вирусы), которые не могут быть безошибочно определены ни одним алгоритмом.

Распространение

Механизм

Вирусы распространяются, копируя свое тело и обеспечивая его последующее исполнение: внедряя себя в исполняемый код других программ, заменяя собой другие программы, прописываясь в автозапуск и другое. Вирусом или его носителем могут быть не только программы, содержащие машинный код, но и любая информация, содержащая автоматически исполняемые команды — например, пакетные файлы и документы Microsoft Word и Excel, содержащие макросы. Кроме того, для проникновения на компьютер вирус может использовать уязвимости в популярном программном обеспечении (например, Adobe Flash, Internet Explorer, Outlook), для чего распространители внедряют его в обычные данные (картинки, тексты, и т. д.) вместе с эксплоитом, использующим уязвимость.

Каналы

Дискеты
Самый распространённый канал заражения в 1980-90 годы. Сейчас практически отсутствует из-за появления более распространённых и эффективных каналов и отсутствия флоппи-дисководов на многих современных компьютерах.
Флеш-накопители (флешки)
В настоящее время USB-флешки заменяют дискеты и повторяют их судьбу — большое количество вирусов распространяется через съёмные накопители, включая цифровые фотоаппараты, цифровые видеокамеры, цифровые плееры (MP3-плееры), сотовые телефоны. Использование этого канала ранее было преимущественно обусловлено возможностью создания на накопителе специального файла autorun.inf, в котором можно указать программу, запускаемую Проводником Windows при открытии такого накопителя. В последней версии MS Windows под торговым названием Windows 7 возможность автозапуска файлов с переносных носителей была устранена. Флешки — основной источник заражения для компьютеров, не подключённых к Интернету.
Электронная почта
Сейчас один из основных каналов распространения вирусов. Обычно вирусы в письмах электронной почты маскируются под безобидные вложения: картинки, документы, музыку, ссылки на сайты. В некоторых письмах могут содержаться действительно только ссылки, то есть в самих письмах может и не быть вредоносного кода, но если открыть такую ссылку, то можно попасть на специально созданный веб-сайт, содержащий вирусный код. Многие почтовые вирусы, попав на компьютер пользователя, затем используют адресную книгу из установленных почтовых клиентов типа Outlook для рассылки самого себя дальше.
Системы обмена мгновенными сообщениями
Также распространена рассылка ссылок на якобы фото, музыку либо программы, в действительности являющиеся вирусами, по ICQ и через другие программы мгновенного обмена сообщениями.
Веб-страницы
Возможно также заражение через страницы Интернета ввиду наличия на страницах всемирной паутины различного «активного» содержимого: скриптов, ActiveX-компонент. В этом случае используются уязвимости программного обеспечения, установленного на компьютере пользователя, либо уязвимости в ПО владельца сайта (что опаснее, так как заражению подвергаются добропорядочные сайты с большим потоком посетителей), а ничего не подозревающие пользователи, зайдя на такой сайт, рискуют заразить свой компьютер.
Интернет и локальные сети (черви)
Черви — вид вирусов, которые проникают на компьютер-жертву без участия пользователя. Черви используют так называемые «дыры» (уязвимости) в программном обеспечении операционных систем, чтобы проникнуть на компьютер. Уязвимости — это ошибки и недоработки в программном обеспечении, которые позволяют удаленно загрузить и выполнить машинный код, в результате чего вирус-червь попадает в операционную систему и, как правило, начинает действия по заражению других компьютеров через локальную сеть или Интернет. Злоумышленники используют заражённые компьютеры пользователей для рассылки спама или для DDoS-атак.

Противодействие обнаружению

Во времена MS-DOS были распространены стелс-вирусы, перехватывающие прерывания для обращения к операционной системе. Вирус таким образом мог скрывать свои файлы из дерева каталогов или подставлять вместо зараженного файла исходную копию. С широким распространением антивирусных сканеров, проверяющих перед запуском любой код на наличие сигнатур или выполнение подозрительных действий, этой технологии стало недостаточно. Сокрытие вируса из списка процессов или дерева каталогов для того, чтобы не привлекать лишнее внимание пользователя, является базовым приемом, однако для борьбы с антивирусами требуются более изощренные методы. Для противодействия сканированию на наличие сигнатур применяется шифрование кода и полиморфизм. Эти техники часто применяются вместе, поскольку для расшифрования зашифрованной части вируса необходимо оставлять расшифровщик незашифрованным, что позволяет обнаруживать его по сигнатуре. Поэтому для изменения расшифровщика применяют полиморфизм - модификацию последовательности команд, не изменяющую выполняемых действий. Это возможно благодаря весьма разнообразной и гибкой системе команд процессоров Intel, в которой одно и то же элементарное действие, например сложение двух чисел, может быть выполнено несколькими последовательностями команд. Также применяется перемешивание кода, когда отдельные команды случайным образом разупорядочиваются и соединяются безусловными переходами. Передовым фронтом вирусных технологий считается метаморфизм, который часто путают с полиморфизмом. Расшифровщик полиморфного вируса относительно прост, его функция - расшифровать основное тело вируса после внедрения, то есть после того как его код будет проверен антивирусом и запущен. Он не содержит самого полиморфного движка, который находится в зашифрованной части вируса и генерирует расшифровщик. В отличие от этого, метаморфный вирус может вообще не применять шифрование, поскольку сам при каждой репликации переписывает весь свой код.[9]

Классификация

Ныне существует немало разновидностей вирусов, различающихся по основному способу распространения и функциональности. Если изначально вирусы распространялись на дискетах и других носителях, то сейчас доминируют вирусы, распространяющиеся через Интернет. Растёт и функциональность вирусов, которую они перенимают от других видов программ.

В настоящее время не существует единой системы классификации и именования вирусов (хотя попытка создать стандарт была предпринята на встрече CARO в 1991 году). Принято разделять вирусы:

Экономика

Некоторые производители антивирусов утверждают, что сейчас создание вирусов превратилось из одиночного хулиганского занятия в серьёзный бизнес, имеющий тесные связи с бизнесом спама и другими видами противозаконной деятельности.[10]

Также называются миллионные и даже миллиардные суммы ущерба от действий вирусов и червей.[11] К подобным утверждениям и оценкам следует относиться осторожно: суммы ущерба по оценкам различных аналитиков различаются (иногда на три-четыре порядка), а методики подсчёта не приводятся.

История

Основы теории самовоспроизводящихся механизмов заложил американец венгерского происхождения Джон фон Нейман, который в 1951 году предложил метод создания таких механизмов. С 1961 года известны рабочие примеры таких программ.[12]

Первыми известными собственно вирусами являются Virus 1,2,3 и Elk Cloner для ПК Apple II, появившиеся в 1981 году. Зимой 1984 года появились первые антивирусные утилиты — CHK4BOMB и BOMBSQAD авторства Анди Хопкинса (англ. Andy Hopkins). В начале 1985 года Ги Вонг (англ. Gee Wong) написал программу DPROTECT — первый резидентный антивирус.

Первые вирусные эпидемии относятся к 1987-1989 годам: Brain (более 18 тысяч зараженных компьютеров, по данным McAfee[источник не указан 5309 дней]), Jerusalem (проявился в пятницу 13 мая 1988 г., уничтожая программы при их запуске[13]), червь Морриса (свыше 6200 компьютеров, большинство сетей вышло из строя на срок до пяти суток), DATACRIME (около 100 тысяч зараженных ПЭВМ только в Нидерландах).

Тогда же оформились основные классы двоичных вирусов: сетевые черви (червь Морриса, 1987), «троянские кони» (AIDS, 1989[14]), полиморфные вирусы (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 достиг апогея в применении необычных методов, перезаписывая Flash Bios зараженных машин (эпидемия в июне 1998 считается самой разрушительной за предшествующие годы).

В конце 1990-x — начале 2000-x с усложнением ПО и системного окружения, массовым переходом на сравнительно защищенные Windows семейства NT, закреплением сетей как основного канала обмена данными, а также успехами антивирусных технологий в обнаружении вирусов, построенных по сложным алгоритмам, последние стали всё больше заменять внедрение в файлы на внедрение в операционную систему (необычный автозапуск, руткиты) и подменять полиморфизм огромным количеством видов (число известных вирусов растет экспоненциально).

Вместе с тем, обнаружение в Windows и другом распространенном ПО многочисленных уязвимостей открыло дорогу червям-эксплоитам. В 2004 г. беспрецедентные по масштабам эпидемии вызывают MsBlast (более 16 млн систем по данным Microsoft[15]), Sasser и Mydoom (оценочные ущербы 500 млн долл. и 4 млрд долл. соответственно[16]).

Кроме того, монолитные вирусы в значительной мере уступают место комплексам вредоносного ПО с разделением ролей и вспомогательными средствами (троянские программы, загрузчики/дропперы, фишинговые сайты, спам-боты и пауки). Также расцветают социальные технологии — спам и фишинг — как средство заражения в обход механизмов защиты ПО.

Вначале на основе троянских программ, а с развитием технологий p2p-сетей — и самостоятельно — набирает обороты самый современный вид вирусов — черви-ботнеты (Rustock, 2006, ок. 150 тыс. ботов; Conficker, 2008—2009, более 7 млн ботов; Kraken, 2009, ок. 500 тыс. ботов). Вирусы в числе прочего вредоносного ПО окончательно оформляются как средство киберпреступности.

Примечания

  1. Спамооборона // KP.RU
  2. The Scarred Man (англ.)
  3. Fred Cohen. Computer Viruses — Theory and Experiments (англ.)
  4. Коэн Ф. Компьютерные вирусы — теория и эксперименты (рус.)
  5. Leonard Adleman. An Abstract Theory of Computer Viruses (англ.)
  6. Цитируется по Diomidis Spinellis. Reliable Identification of Bounded-length Viruses is NP-complete IEEE Transactions on Information Theory, 49(1), pp. 280—284, January 2003
  7. 1 2 Alan M. Turing. On computable numbers, with an application to the Entscheidungs Problem. Proceedings of the London Mathematical Society, vol. 2, № 42, pp. 230—265, 1936, Corrections in 2(43): pp. 544—546
  8. 1 2 Fred Cohen. Computational aspects of computer viruses Computers & Security, vol. 8, № 4, pp. 325—344, June 1989
  9. Billy Belcebu / Xine#4, Метаморфизм. Перев. с англ. v0id
  10. Виталий Камлюк. Ботнеты. Вирусная энциклопедия. Лаборатория Касперского (13 мая 2008). Дата обращения: 13 декабря 2008.
  11. Роман Боровко. Экономический ущерб от вирусов. Рынок информационной безопасности 2003. CNews-Аналитика. Дата обращения: 13 декабря 2008.
  12. McIlroy et al. Darwin, a Game of Survival of the Fittest among Programs
  13. Вирус RCE-1813 (Jerusalem — Иерусалим)
  14. George Smith. The Original Anti-Piracy Hack SecurityFocus, 12 августа 2002
  15. AlgoNet — Эпидемия MSBlast оказалась гораздо обширнее, чем предполагалось
  16. Silicon.com — Cost of Sasser is $500m and counting…

См. также

Ссылки

Шаблон:Link FA