Advertisement




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

M

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

Для данной машины M, последовательность символов v : vi ∈ IM может быть сочтена вирусом, тогда и только тогда, когда обр


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. Из данного определения с очевидностью следует, что понятие вируса неразрывно связано с его интерпретацией в заданном контексте— окружении. Фредом Коэном было показано[1], что: «любая самовоспроизводящаяся последовательность символов одноэлементный VS, что существует бесконечное количество VS и не-VS, для которых существуют машины, для которых все последовательности символов является вирусом, и для которых ни одна из последовательностей символов не является вирусом, и что любая конечная последовательность символов является вирусом для какой-либо машины». Там же приведено доказательство того, что в общем виде, вопрос о том, является ли данная пара (M, X) : Xi ∈ IM вирусом, неразрешим (то есть не существует алгоритма, который мог бы достоверно определить все вирусы), теми же средствами, которыми доказывается неразрешимость проблемы остановки[2]. Другие исследователи доказали, что существуют такие типы вирусов (вирусы, содержащие копию программы детектирующей вирусы), которые не могут быть безошибочно определены ни одним алгоритмом.

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

В настоящее время не существует единой системы классификации и именования вирусов (хотя попытка создать стандарт была предпринята на встрече CARO в 1991 году). Принято разделять вирусы по поражаемым объектам (файловые вирусы, загрузочные вирусы, скриптовые вирусы, сетевые черви), по поражаемым операционным системам и платформам (DOS, Microsoft Windows, Unix, GNU/Linux, Java и другие), по технологиям используемым вирусом (полиморфные вирусы, стелс-вирусы), по языку, на котором написан вирус (ассемблер, высокоуровневый язык программирования, скриптовый язык и др.).

Классификация файловых вирусов по способу заражения

По способу заражения файловые вирусы (вирусы, внедряющие свой код в исполняемые файлы: командные файлы, программы, драйверы, исходный код программ и др.) разделяют на перезаписывающие, паразитические, вирусы-звенья, вирусы-черви, компаньон-вирусы, а так же вирусы, поражающие исходные тексты программ и компоненты программного обеспечения (VCL, LIB и др.).

Перезаписывающие вирусы
Вирусы данного типа записывают своё тело вместо кода программы, не изменяя названия исполняемого файла, вследствие чего исходная программа перестаёт запускаться. При запуске программы выполняется код вируса, а не сама программа.
Вирусы-компаньоны
Компаньон-вирусы, как и перезаписывающие вирусы, создают свою копию на месте заражаемой программы, но в отличие от перезаписываемых не уничтожают оригинальный файл, а переименовывают или перемещают его. При запуске программы вначале выполняется код вируса, а затем управление передаётся оригинальной программе.
Возможно существование и других типов вирусов-компаньонов, использующих иные оригинальные идеи или особенности других операционных систем. Например, PATH-компаньоны, которые размещают свои копии в основном каталоге Windows, используя тот факт, что этот каталог является первым в списке PATH, и файлы для запуска Windows, в первую очередь, будет искать именно в нём. Данными способом самозапуска пользуются также многие компьютерные черви и троянские программы.
Файловые черви
Файловые черви создают собственные копии с привлекательными для пользователя названиями (например, Game.exe, install.exe и др.) в надежде на то, что пользователь их запустит.
Вирусы-звенья
Как и компаньон-вирусы, не изменяют код программы, а заставляют операционную систему выполнить собственный код, изменяя адрес местоположения на диске заражённой программы, на собственный адрес. После выполнения кода вируса управление обычно передаётся вызываемой пользователем программе.
Паразитические вирусы
Паразитические вирусы— это файловые вирусы, изменяющие содержимое файла, добавляя в него свой код. При этом заражённая программа сохраняет полную или частичную работоспособность. Код может внедряться в начало, середину или конец программы. Код вируса выполняется перед, после или вместе с программой, в зависимости от места внедрения вируса в программу.
Вирусы, поражающие исходный код программ
Вирусы данного типа поражают исходный код программы или её компоненты (OBJ-, LIB-, DCU- файлы), а также VCL и ActiveX-компоненты. После

Канал распространения

Сейчас основной канал распространения вирусов— электронная почта. Так же распространена рассылка ссылок на якобы фото, музыку либо программы, в действительности являющиеся вирусами, по ICQ и другим программам мгновенного обмена сообщениями, и по электронной почте. Возможно так же заражение через страницы Интернет. В этом случае используются уязвимости программного обеспечения, установленного на компьютере пользователя, либо уязвимости в ПО владельца сайта (это опаснее всего, так как заражению подвергаются добропорядочные сайты с большим потоком посетителей). Хакеры и спамеры используют заражённые компьютеры пользователей для рассылки спама или для DDoS-атак.

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

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

История

Первые самовоспроизводящиеся программы

Основы теории самовоспроизводящихся механизмов заложил американец венгерского происхождения Джон фон Нейман, который в 1951 году предложил метод создания таких механизмов. Первой публикацией, посвящённой созданию самовоспроизводящихся систем, является статья Л. С. Пенроуз в соавторстве со своим мужем, нобелевским лауреатом по физике Р. Пенроузом, о самовоспроизводящихся механических структурах, опубликованная в 1957 году американским журналом «Nature».[3] В этой статье, наряду с примерами чисто механических конструкций, была приведена некая двумерная модель подобных структур, способных к активации, захвату и освобождению. По материалам этой статьи Ф. Ж. Шталь (F. G. Stahl) запрограммировал на машинном языке ЭВМ IBM 650 биокибернетическую модель, в которой существа двигались, питаясь ненулевыми словами. При поедании некоторого числа символов существо размножалось, причём дочерние механизмы могли мутировать. Если кибернетическое существо двигалось определённое время без питания, оно погибало.

В 1961 В. А. Высотский, Х. Д. Макилрой (H. D. McIlroy) и Роберт Моррис (Robert Morris) из фирмы Bell Telephone Laboratories (США) изобрели необычную игру «Дарвин», в которой несколько ассемблерных программ, названных «организмами», загружались в память компьютера. Организмы, созданные одним игроком (то есть принадлежащие к одному виду), должны были уничтожать представителей другого вида и захватывать жизненное пространство. Победителем считался тот игрок, чьи организмы захватывали всю память или набирали наибольшее количество очков.[4]

Появление первых вирусов

Появление первых компьютерных вирусов зачастую ошибочно относят к 70-м, и даже 60-м годам XX века. Обычно упоминаются, как «вирусы» такие программы, как Animal, Creeper, Cookie Monster и Xerox worm.

Юрген Краус

В феврале 1980 года студент Дортмундского университета Юрген Краус подготовил дипломную работу по теме «Самовоспроизводящиеся программы»[5], в которой помимо теории приводились так же и листинги строго самовоспроизводящихся программ (которые вирусами на самом деле не являются) для компьютера Siemens.

Вполне очевидно, что все описанные примеры не являются компьютерными вирусами в строгом смысле, и хотя они и оказали существенное влияние на последующие исследования, первыми известными вирусами являются Virus 1,2,3 и Elk Cloner для ПК Apple II. Оба вируса очень схожи по функциональности и появились независимо друг от друга, с небольшим промежутком во времени в 1981.

Первые вирусы

С появлением первых персональных компьютеров Apple в 1977 и развитием сетевой инфраструктуры начинается новая эпоха истории вирусов. Появились первые программы-вандалы, которые под видом полезных программ выкладывались на BBS, однако после запуска уничтожали данные пользователей. В это же время появляются троянские программы-вандалы, проявляющие свою деструктивную сущность лишь через некоторое время или при определённых условиях.

ELK CLONER

В 1981 Ричард Скрента написал один из первых загрузочных вирусов для ПЭВМ Apple II — ELK CLONER.[6] Он обнаруживал своё присутствие сообщением, содержащим небольшое стихотворение:

  ELK CLONER:
  THE PROGRAM WITH A PERSONALITY
  IT WILL GET ON ALL YOUR DISKS
  IT WILL INFILTRATE YOUR CHIPS
  YES, IT'S CLONER
  IT WILL STICK TO YOU LIKE GLUE
  IT WILL MODIFY RAM, TOO
  SEND IN THE CLONER!
Студент Джо Деллинджер

Другие вирусы для Apple II были созданы студентом Техасского университета A&M Джо Деллинджером (Joe Dellinger) в 1981. Они были рассчитаны на операционную систему MS-DOS 3.3 для этой ПЭВМ. Вторая версия этого вируса «ускользнула» от автора и начала распространяться по университету. Ошибка в вирусе вызывала подавление графики популярной игры под названием CONGO, и в течение нескольких недель все («пиратские») копии этой игры перестали работать. Для исправления ситуации автор запустил новый, исправленный вирус, предназначенный для «замещения» предыдущей версии. Обнаружить вирус можно было по наличию в памяти счётчика заражений: «(GEN 0000000 TAMU)», по смещению $B6E8, или в конце нулевого сектора заражённого диска.[7]

Статья Фреда Коэна

В сентябре 1984 была опубликована статья Ф. Коэна (Fred Cohen) [Cohen84], в которой автор исследовал разновидность файлового вируса. Это фактически второе академическое исследование проблемы вирусов. Однако именно Коэна принято считать автором термина «компьютерный вирус».

Грязная дюжина

В 1985 Том Нефф (Tom Neff) начал распространять по различным BBS список «Грязная дюжина— список опасных загружаемых программ» (англ. The Dirty Dozen — An Unloaded Program Alert List), в котором были перечислены известные на тот момент программы-вандалы. В дальнейшем этот список, включающий большинство выявленных троянских программ и «взломанные» или переименованные копии коммерческого программного обеспечения для MS-DOS, стал широко известен под кратким названием «грязная дюжина» (англ. dirty dozen).[8]

Первые антивирусы

Первые антивирусные утилиты появились зимой 1984. Анди Хопкинс (Andy Hopkins) написал программы CHK4BOMB и BOMBSQAD. CHK4BOMB позволяла проанализировать текст загрузочного модуля и выявляла все текстовые сообщения и «подозрительные» участки кода (команды прямой записи на диск и др.). Благодаря своей простоте (фактически использовался только контекстный поиск) и эффективности CHK4BOMB получила значительную популярность. Программа BOMBSQAD.COM перехватывает операции записи и форматирования, выполняемые через BIOS. При выявлении запрещённой операции можно разрешить её выполнение.

Первый резидентный антивирус

В начале 1985 Ги Вонг (Gee Wong) написал программу DPROTECT — резидентную программу, перехватывающую попытки записи на дискеты и винчестер. Она блокировала все операции (запись, форматирование), выполняемые через BIOS. В случае выявления такой операции программа требовала рестарта системы.

Первые вирусные эпидемии

Очередным этапом развития вирусов считается 1987 год. К этому моменту получили широкое распространения сравнительно дешёвые компьютеры IBM PC, что привело к резкому увеличению масштаба заражения компьютерными вирусами. Именно в 1987 вспыхнули сразу три крупные эпидемии компьютерных вирусов.

Brain и другие

Первая эпидемия 1987 была вызвана вирусом Brain (также известен как Пакистанский вирус), который был разработан братьями Амджатом и Базитом Алви (Amdjat и Basit Faroog Alvi) в 1986 и был обнаружен летом 1987. По данным McAfee, вирус заразил только в США более 18 тысяч компьютеров. Программа должна была наказать местных пиратов, ворующих программное обеспечение у их фирмы. В программке значились имена, адрес и телефоны братьев. Однако неожиданно для всех The Brain вышел за границы Пакистана и заразил сотни компьютеров по всему миру. Вирус Brain являлся также и первым стелс-вирусом— при попытке чтения заражённого сектора он «подставлял» его незаражённый оригинал.

Вторая эпидемия, берущая начало в Лехайском университете (США), разразилась в ноябре 1987. В течение нескольких дней этот вирус уничтожил содержимое нескольких сот дискет из библиотеки вычислительного центра университета и личных дискет студентов. За время эпидемии вирусом было заражено около четырёх тысяч компьютеров.

Последняя вирусная эпидемия разразилась перед самым Новым годом, 30 декабря 1987. Её вызвал вирус, обнаруженный в Иерусалимском Университете (Израиль). Хотя существенного вреда этот вирус не принёс, он быстро распространился по всему миру.

В пятницу 13 мая 1988 сразу несколько фирм и университетов нескольких стран мира «познакомились» с вирусом «Jerusalem»— в этот день вирус уничтожал файлы при их запуске. Это, пожалуй, один из первых MS-DOS-вирусов, ставший причиной настоящей пандемии— сообщения о заражённых компьютерах поступали из Европы, Америки и Ближнего Востока.

Червь Морриса

Основная статья: Червь Морриса

В 1988 Робертом Моррисом-младшим был создан первый массовый сетевой червь. 60000-байтная программа разрабатывалась с расчётом на поражение операционных систем UNIX Berkeley 4.3. Вирус изначально разрабатывался как безвредный и имел целью лишь скрытно проникнуть в вычислительные системы, связанные сетью ARPANET, и остаться там необнаруженным. Вирусная программа включала компоненты, позволяющие раскрывать пароли, имеющиеся в инфицированной системе, что, в свою очередь, позволяло программе маскироваться под задачу легальных пользователей системы, на самом деле занимаясь размножением и рассылкой копий. Вирус не остался скрытым и полностью безопасным, как задумывал автор, в силу незначительных ошибок, допущенных при разработке, которые привели к стремительному неуправляемому саморазмножению вируса.

По самым скромным оценкам инцидент с червём Морриса стоил свыше 8 миллионов часов потери доступа и свыше миллиона часов прямых потерь на восстановление работоспособности систем. Общая стоимость этих затрат оценивается в 96 миллионов долларов (в эту сумму, также, не совсем обосновано, включены затраты по доработке операционной системы). Ущерб был бы гораздо больше, если бы вирус изначально создавался с разрушительными целями.

Червь Морриса поразил свыше 6200 компьютеров. В результате вирусной атаки большинство сетей вышло из строя на срок до пяти суток. Компьютеры, выполнявшие коммутационные функции, работавшие в качестве файл-серверов или выполнявшие другие функции обеспечения работы сети, также вышли из строя.

4 мая 1990 года суд присяжных признал Морриса виновным. Он был приговорён к условному заключению сроком на два года, 400 часам общественных работ и штрафу размером 10 тыс. долларов.

DATACRIME и «AIDS»

В 1989 широкое распространение получили вирусы DATACRIME, которые начиная с 12 октября разрушали файловую систему, а до этой даты просто размножались. Эта серия компьютерных вирусов начала распространяться в Нидерландах, США и Японии в начале 1989 года и к сентябрю поразила около 100 тысяч ПЭВМ только в Нидерландах (что составило около 10 % от их общего количества в стране). Даже фирма IBM отреагировала на эту угрозу, выпустив свой детектор VIRSCAN, позволяющий искать характерные для того или иного вируса строки (сигнатуры) в файловой системе. Набор сигнатур мог дополняться и изменяться пользователем.

В 1989 году появился первый «троянский конь» AIDS.[9] Вирус делал недоступными всю информацию на жёстком диске и высвечивал на экране лишь одну надпись: «Пришлите чек на $189 на такой-то адрес». Автор программы был арестован в момент обналичивания чека и осуждён за вымогательство. Также был создан первый вирус, противодействующий антивирусному программному обеспечению— The Dark Avenger. Он заражал новые файлы, пока антивирусная программа проверяла жёсткий диск компьютера.

Глобализация проблемы вирусов

Начиная с 1990 года проблема вирусов начинает принимать глобальные размах.

В начале года выходит первый полиморфный вирус— Chameleon. Данная технология была быстро взята на вооружение и в сочетании со стелс-технологии (Stealth) и бронированием (Armored) позволила новым вирусам успешно противостоять существующим антивирусным пакетам. Во второй половине 1990-го появились два стелс-вируса— Frodo и Whale. Оба вируса использовали крайне сложные стелс-алгоритмы, а 9-килобайтный «Whale» к тому же применял несколько уровней шифровки и анти-отладочных приёмов.

В Болгарии открывается первая в мире специализированная BBS, с которой каждый желающий может скачать свежий вирус. Начинают открываться конференции Usenet по вопросам написания вирусов. В этом же году выходит «Маленькая чёрная книжка о компьютерных вирусах» Марка Людвига.

На проблему противостояния вирусам были вынуждены обратить внимание крупные компании— выходит Symantec Norton Antivirus.

Начало 1991 года отмечено массовой эпидемией полиморфного загрузочного вируса Tequila. Летом 1991 появился первый link-вирус, который сразу же вызвал эпидемию.

1992 известен, как год появления первых конструкторов вирусов для PC — VCL (для Amiga конструкторы существовали и ранее), а так же готовых полиморфных модулей (MtE, DAME и TPE) и модулей шифрования. Начиная с этого момента, каждый программист мог легко добавить функции шифрования к своему вирусу. Кроме того, в конце 1992 появился первый вирус для Windows 3.1 — WinVer.

В 1993 появляется все больше и больше вирусов, использующих необычные способы заражения файлов, проникновения в систему ит. д. Основными примерами являются: PMBS, работающий в защищённом режиме процессора Intel 80386. «Shadowgard» и «Carbuncle», значительно расширившие диапазон алгоритмов компаньон-вирусов. «Cruncher»— использование принципиально новых приёмов сокрытия своего кода в заражённых файлах.

Выходят новые версии вирусных генераторов, а так же появляются новые (PC-MPC и G2). Счёт известных вирусов уже идёт на тысячи. Антивирусные компании разрабатывают ряд эффективных алгоритмов для борьбы с полиморфными вирусами, однако сталкиваются с проблемой ложных срабатываний.

В начале 1994 года в Великобритании появились два крайне сложных полиморфик-вируса— SMEG.Pathogen и SMEG.Queeg. Автор вирусов помещал заражённые файлы на станции BBS, что явилось причиной настоящей эпидемии и паники в средствах массовой информации. Автор вируса был арестован. В январе 1994 появился Shifter — первый вирус, заражающий объектные модули (OBJ-файлы). Весной 1994 был обнаружено SrcVir, семейство вирусов, заражающих исходные тексты программ (C и Pascal). В июне 1994 года началась эпидемия OneHalf.

В 1995 появляется несколько достаточно сложных вирусов (NightFall, Nostradamus, Nutcracker). Появляются первый «двуполый» вирус «RMNS» и BAT-вирус Winstart. Широкое распространение получили вирусы ByWay и DieHard2 — сообщения о заражённых компьютерах были получены практически со всего мира. В феврале 1995 случился инцидент с beta-версией Windows 95, все диски которой оказались заражены Dos вирусом Form.

Вирусы в различных операционных системах

Windows

В 1995 году официально вышла новая версия Windows 95. На пресс-конференции, посвящённой её выходу, Билл Гейтс заявил, что с вирусной угрозой теперь покончено. Действительно, на момент выхода Windows была полностью устойчива к имеющимся DOS вирусам. Однако уже в августе появляется первый вирус для Microsoft Word (Concept), который за несколько недель распространился по всему миру.


В феврале 1997 отмечены первые макровирусы для Office97. Первые из них оказались всего лишь «отконвертированными» в новый формат макровирусами для Word 6/7, однако практически сразу появились вирусы, ориентированные только на документы Office97. Март 1997: «ShareFun» — макровирус, поражающий MS Word 6/7. Для своего размножения использует не только стандартные возможности MS Word, но также рассылает свои копии по электронной почте MS-Mail. Он по праву считается первым mail-червём. В июне появляется и первый самошифрующийся вирус для Windows 95.

В апреле 1997 года появляется и первый сетевой червь, использующий для своего распространения File Transfer Protocol (ftp). Так же в декабре 1997: появилась новая форма сетевых вирусов — черви mIRC.

Начало 1998 года отмечено эпидемией целого семейства вирусов Win32.HLLP.DeTroie, не только заражавших выполняемые файлы Win32, но и способных передать своему «хозяину» информацию о заражённом компьютере. Февраль 1998: обнаружен ещё один тип вируса, заражающий формулы в таблицах Excel — Excel4.Paix. В марте 1998 года появился и AccessiV — первый вирус для Microsoft Access, также в марте был обнаружен и «Cross» — первый вирус, заражающий два различных приложения MS Office: Access и Word. Следом за ним появились ещё несколько макровирусов, переносящих свой код из одного Office-приложения в другое.

В феврале-марте 1998 отмечены первые инциденты с Win95.HPS и Win95.Marburg, первыми полиморфными Win32-вирусами. В мае 1998 началась эпидемия


В августе 1998 появилась широко известная утилита BackOrifice («Backdoor.BO»), применяемая для скрытого администрирования удалённых компьютеров и сетей. Следом за BackOrifice были написаны несколько других аналогичных программ: NetBus, Phase и прочие.

Также в августе был отмечен первый вирус, заражающий выполняемые модули Java — Java.StangeBrew. Этот вирус не представлял какой-либо опасности для пользователей Интернет, поскольку на удалённом компьютере невозможно использовать необходимые для его размножения функции. Вслед за ним в ноябре 1998 появился и VBScript.Rabbi. Интернет-экспансия скриптовых вирусов продолжилась тремя вирусами, заражающими скрипты VisualBasic (VBS-файлы), которые активно применяются при написании Web-страниц. Как логическое следствие VBScript-вирусов стало появление полноценного HTML-вируса (HTML.Internal).

1999 год прошёл под знаком гибридного вируса Melissa, побившего все существовавшие на тот момент рекорды по скорости распространения. Melissa сочетал в себе возможности макровируса и сетевого червя, используя для размножения адресную книгу Outlook.

OS/2

В

Unix-подобные

В
  1. Ошибка цитирования Неверный тег <ref>; для сносок Cohen не указан текст
  2. Ошибка цитирования Неверный тег <ref>; для сносок Turing не указан текст
  3. Penrose L. S., Penrose R. A Self-reproducing Analogue. Nature, 4571, p. 1183, ISSN 0028-0836
  4. McIlroy et al. Darwin, a Game of Survival of the Fittest among Programs
  5. Selbstreproduktion bei programmen
  6. Page dedicated to Elk Cloner on Rich’s home site
  7. Сообщение в alt.folklore.computers
  8. THE DIRTY DOZEN (17-10-1985)
  9. Глава 5. Компьютерные вирусы. Освоение ПК. Краткое руководство. PC Magazine/RE (28 января 2008).  Проверено 5 октября 2008.
Материалы сообщества доступны в соответствии с условиями лицензии CC-BY-SA, если не указано иное.