Компьютерный вирус
Содержание:
Новые и экзотические вирусы
По мере развития компьютерных технологий совершенствуются и
компьютерные вирусы, приспосабливаясь к новым для себя сферам обитания. Новый
вирус W32/Perrun, сообщение о котором есть на сайте компании Network Associates
(http://www.nai.com), способен распространяться… через файлы графических
изображений формата JPEG!
Сразу после запуска вирус W32/Perrun ищет файлы с
расширением имени JPG и дописывает к ним свой код. После этого зараженные
файлы JPEG будут содержать не только изображения, но и
код вируса. Надо сказать, что данный вирус не опасен и требует для своего
распространения отдельной программы.
Среди новых «достижений» создателей вредоносных программ
заслуживает упоминания вирус Palm.Phage. Он заражает приложения «наладонных»
компьютеров PalmPilot, перезаписывая файлы этих приложений своим кодом.
Появление таких вирусов, как W32/Perrun и Palm.Phage,
свидетельствует о том, что в любой момент может родиться компьютерный вирус,
троянская программа или червь, нового, неизвестного ранее типа, или известного
типа, но нацеленного на новое компьютерное оборудование. Новые вирусы могут
использовать неизвестные или несуществующие ранее каналы распространения, а
также новые технологии внедрения в компьютерные системы.
В следующей нашей статье, посвященной проблемам
антивирусной защиты, мы рассмотрим технологии, методики и антивирусные
средства, с помощью которых можно защититься не только от известных, но в ряде
случаев и от новых, доселе не исследованных вредоносных компьютерных программ.
Jerusalem
Вирус Jerusalem был создан в 1988 году в Израиле, и наделал много шума среди пользователей с Ближнего Востока, а также из Европы и США. В те времена никто не знал, как бороться с вирусным программным обеспечением, а антивирусы были диковинкой и не пользовались большой популярностью.
Вреда этот вирус приносил немало: он заражал файлы, созданные или открытые за день, а при запуске просто удалял их. Весь процесс сопровождался медленным удалением всех данных, сохраненных на жёстком диске.
Автор вируса и его мотивы так и остались неизвестными. Однако сам вирус стал одним из самых опасных на планете, и положил начало семейству резидентных вирусов Suriv.
Brain
Вирус «Brain» был создан двумя братьями-программистами Амджат и Базит Алви из Пакистана в 1986 году. Первоначально он создавался как оружие против местных пиратов, ворующих созданное братьями программное обеспечение. Однако вместо этого программа стала распространяться и заражать десятки тысяч компьютеров по всему миру. Brain записывался в загрузочные сектора дискет, а при сканировании компьютера он подставлял вместо зараженного сектора специально созданную нейтральную копию.
Подобные программы, пытающиеся скрыть свое присутствие в операционной системе, получили название «стелс-вирусы», и на данный момент они наиболее опасные враги любых ПК.
Компьютерные вирусы и антивирусные программы
Описание разработки
1 вариант
1. Что такое «компьютерный вирус»?
А) это программы, активизация которых вызывает уничтожение программ и файлов;
Б) это совокупность программ, находящиеся на устройствах долговременной памяти;
В) это программы, которые могут «размножаться» и скрытно внедрять свои копии в файлы, загрузочные секторы дисков и документы;
Г) это программы, передающиеся по Всемирной паутине в процессе загрузки Web-страниц.
2. Какие файлы заражают макро-вирусы?
Б) графические и звуковые;
В) файлы документов Word и элект. таблиц Excel;
Г) html документы.
3. Неопасные компьютерные вирусы могут привести
А) к сбоям и зависаниям при работе компьютера;
Б) к потере программ и данных;
В) к форматированию винчестера;
Г) к уменьшению свободной памяти компьютера.
4. Какой вид компьютерных вирусов внедряются и поражают исполнительный файлы с расширением *.exe, *.com?
А) файловые вирусы;
Б) загрузочные вирусы;
Г) сетевые вирусы.
5. Основные типы компьютерных вирусов:
- Аппаратные, программные, загрузочные
- Программные, загрузочные, макровирусы.
- Файловые, сетевые, макровирусы, загрузочные.
6. На чем основано действие антивирусной программы?
- На ожидании начала вирусной атаки.
- На сравнении программных кодов с известными вирусами.
- На удалении зараженных файлов.
7. Какие программы относятся к антивирусным
- AVP, DrWeb, Norton AntiVirus.
- MS-DOS, MS Word, AVP.
- MS Word, MS Excel, Norton Commander.
8. Какие существуют вспомогательные средства защиты?
- Аппаратные средства.
- Программные средства.
- Аппаратные средства и антивирусные программы.
9. Вставь пропущенное слово, определив тип антивирусной программы
Антивирусные . — это программы, перехватывающие «вирусноопасные» ситуации и сообщающие об этом пользователю.
- Основные меры по защите информации от повреждения вирусами:
- проверка дисков на вирус
- создавать архивные копии ценной информации
- не пользоваться «пиратскими» сборниками программного обеспечения
- передавать файлы только по сети
2 вариант
1. Что такое «компьютерный вирус»?
А) это программы, активизация которых вызывает уничтожение программ и файлов;
Б) это совокупность программ, находящиеся на устройствах долговременной памяти;
В) это программы, которые могут «размножаться» и скрытно внедрять свои копии в файлы, загрузочные секторы дисков и документы;
Г) это программы, передающиеся по Всемирной паутине в процессе загрузки Web-страниц.
2. К каким вирусам относится «троянский конь»?
Г) загрузочные вирусы.
3. Опасные компьютерные вирусы могут привести…
А) к сбоям и зависаниям при работе компьютера;
Б) к потере программ и данных;
В) к форматированию винчестера;
Г) к уменьшению свободной памяти компьютера.
4. Какой вид компьютерных вирусов внедряются и поражают файлы с расширением *.txt, *.doc?
А) файловые вирусы;
Б) загрузочные вирусы;
Г) сетевые вирусы.
5. Основные типы компьютерных вирусов:
- Файловые, сетевые, макровирусы, загрузочные.
- Аппаратные, программные, загрузочные
- Программные, загрузочные, макровирусы.
6.Антивирусные программы — это программы для:
- Обнаружения вирусов
- Удаления вирусов
- Размножения вирусов
- Помещение в карантинную зону зараженных файлов
7. Какие программы относятся к антивирусным
- MS-DOS, MS Word, AVP.
- AVP, DrWeb, Norton AntiVirus.
- MS Word, MS Excel, Norton Commander.
8. По предложенному описанию определите тип вируса.
Заражают файлы документов Word и Excel. Являются фактически макрокомандами, которые встраиваются в документ. Это…
9.Основные признаки проявления вирусов:
- Частые зависания и сбои в работе компьтера
- Уменьшение размера свободной памяти
- Значительное увеличение количества файлов
- Медленная работа компьютера
10. Какие существуют вспомогательные средства защиты?
- Аппаратные средства.
- Программные средства.
- Аппаратные средства и антивирусные программы.
Испорченные и зараженные файлы
Компьютерный вирус может
испортить, т.е. изменить ненадлежащим образом, любой файл на
имеющихся в компьютере дисках. Но некоторые виды файлов вирус может
«заразить». Это означает, что вирус может «внедриться»
в эти файлы, т.е. изменить их так, что они будут содержать вирус,
который при некоторых обстоятельствах может начать свою работу.
Следует
заметить, что тексты программ и документов, информационные файлы баз
данных, таблицы табличных процессоров и другие аналогичные файлы не
могут быть заражены обычным вирусом, он может их только испортить.
Заражение подобных файлов делается только Макро-вирусами. Эти вирусы
могут заразить даже ваши документы.
Обычным
вирусом могут быть заражены (табл.1):
Табл.
1
Виды |
Характеристика |
Исполняемые файлы |
Файлы с расширениями имен .com и .exe, а также оверлейные файлы, загружаемые при |
Загрузчик операционной системы и главная загрузочная запись |
Вирусы, поражающие эти области, называются загрузочными или BOOT-вирусами. Такой вирус начинает свою работу |
Драйверы устройств |
Файлы, указываемые в предложении DEVICE |
Как правило, каждая
конкретная разновидность вируса может заражать только один или два
типа файлов. Чаще всего встречаются вирусы, заражающие исполняемые
файлы. На втором месте по распространенности загрузочные вирусы.
Некоторые вирусы заражают и файлы, и загрузочные области дисков.
Вирусы, заражающие драйверы устройств, встречаются крайне редко,
обычно такие вирусы умеют заражать и исполняемые файлы.
Компьютерное хулиганство
Основная масса вирусов и троянских программ в прошлом создавалась студентами и школьниками, которые только что изучили язык программирования, хотели попробовать свои силы, но не смогли найти для них более достойного применения. Такие вирусы писались и пишутся по сей день только для самоутверждения их авторов. Отраден тот факт, что значительная часть подобных вирусов их авторами не распространялась, и вирусы через некоторое время умирали сами вместе с дисками, на которых хранились — или авторы вирусов отсылали их исключительно в антивирусные компании, сообщая при этом, что никуда более вирус не попадёт.
Вторую группу создателей вирусов также составляют молодые люди (чаще — студенты), которые еще не полностью овладели искусством программирования. Единственная причина, толкающая их на написание вирусов, это комплекс неполноценности, который компенсируется компьютерным хулиганством. Из-под пера подобных «умельцев» часто выходят вирусы крайне примитивные и с большим числом ошибок («студенческие» вирусы). Жизнь подобных вирусописателей стала заметно проще с развитием интернета и появлением многочисленных веб-сайтов, ориентированных на обучение написанию компьютерных вирусов. На таких веб-ресурсах можно найти подробные рекомендации по методам проникновения в систему, приемам скрытия от антивирусных программ, способам дальнейшего распространения вируса. Часто здесь же можно найти готовые исходные тексты, в которые надо всего лишь внести минимальные «авторские» изменения и откомпилировать рекомендуемым способом.
Став старше и опытнее, многие из вирусописателей попадают в третью, наиболее опасную группу, которая создает и запускает в мир «профессиональные» вирусы. Эти тщательно продуманные и отлаженные программы создаются профессиональными, часто очень талантливыми программистами. Такие вирусы нередко используют достаточно оригинальные алгоритмы проникновения в системные области данных, ошибки в системах безопасности операционных сред, социальный инжиниринг и прочие хитрости.
Отдельно стоит четвертая группа авторов вирусов — «исследователи», довольно сообразительные программисты, которые занимаются изобретением принципиально новых методов заражения, скрытия, противодействия антивирусам и т.д. Они же придумывают способы внедрения в новые операционные системы. Эти программисты пишут вирусы не ради собственно вирусов, а скорее ради исследования потенциалов «компьютерной фауны» — из их рук выходят те вирусы, которые называют «концептуальными» («Proof of Concept» — PoC). Часто авторы подобных вирусов не распространяют свои творения, однако активно пропагандируют свои идеи через многочисленные интернет-ресурсы, посвященные созданию вирусов. При этом опасность, исходящая от таких «исследовательских» вирусов, тоже весьма велика — попав в руки «профессионалов» из предыдущей группы, эти идеи очень быстро появляются в новых вирусах.
Традиционные вирусы, создаваемые перечисленными выше группами вирусописателей, продолжают появляться и сейчас — на смену повзрослевшим тинейджерам-хулиганам каждый раз приходит новое поколение тинейджеров. Но интересен тот факт, что «хулиганские» вирусы в последние годы становятся все менее и менее актуальными — за исключением тех случаев, когда такие вредоносные программы вызывают глобальные сетевые и почтовые эпидемии. Количество новых «традиционных» вирусов заметно уменьшается — в 2005-2006 годах их появлялось в разы меньше, чем в середине и конце 1990-х. Причин, по которым школьники и студенты утратили интерес к вирусописательству, может быть несколько.
- Создавать вирусные программы для операционной системы MS-DOS в 1990-х годах было в разы легче, чем для технически более сложной Windows.
- В законодательствах многих стран появились специальные компьютерные статьи, а аресты вирусописателей широко освещались прессой — что, несомненно, снизило интерес к вирусам у многих студентов и школьников.
- К тому же у них появился новый способ проявить себя — в сетевых играх. Именно современные игры, скорее всего, сместили фокус интересов и перетянули на себя компьютеризированную молодёжь.
Таким образом, на текущий момент доля «традиционных» хулиганских вирусов и троянских программ занимает не более 5% «материала», заносимого в антивирусные базы данных. Оставшиеся 95% гораздо более опасны, чем просто вирусы, и создаются они в целях, которые описаны ниже.
Типы вредоносного ПО
Вредоносные программы ведут себя по-разному. Одни могут скрываться во вложениях электронной почты или использовать веб-камеру вашего устройства, чтобы шпионить за вами. Другие (программы-вымогатели) могут удерживают ваши файлы в качестве заложников, пока вы не заплатите выкуп.
Существует несколько типов вредоносных программ. Давайте рассмотрим поведение каждого из них, чтобы вы смогли понять природу угроз, представляющих опасность для вашего устройства:
Черви
Червь – это вредоносная программа, которая многократно копирует сама себя, но не наносит прямого вреда безопасности. Черви могут распространяться по сетям, используя уязвимости каждого устройства.
Как и другие виды вредоносного ПО, червь может нанести вред вашему устройству, загружая на него вредоносные программы и замусоривая канал связи.
Adware
Adware — это программы, которые предназначены для показа рекламы на вашем компьютере, часто в виде всплывающих окон. Вы можете случайно согласиться на просмотр какого-то рекламного объявления и таким образом загрузить нежелательное ПО.
Иногда хакеры встраивают шпионское ПО в Adware, и тогда оно становится особенно опасным, поэтому будьте внимательны, не нажимаете на рекламное объявление, которое выглядит подозрительно.
Шпионское ПО
Шпионское ПО отличается от других типов вредоносных программ тем, что это не техническое определение, а общий термин для Adware, Riskware и троянских программ.
Шпионское ПО отслеживает вашу активность в интернете, наблюдает за тем, какие клавиши вы нажимаете, и собирает ваши личные данные.
Вирус
Вирус — это тип вредоносного ПО, способный к самовоспроизведению и распространению по всей системе на вашем устройстве.
Боты
Боты создаются автоматически для выполнения специальных операций.
Некоторые боты создаются для выполнения вполне легитимных задач. Например, они могут использоваться для сканирования веб-сайтов и сбора их контента с целью занесения этой информации в поисковые системы.
При злонамеренном использовании боты могут искать и собирать личные данные и передавать их киберпреступникам.
Программы-вымогатели
Программы-вымогатели блокируют доступ к вашему устройству или шифруют информацию, которая хранится на нем, а затем требуют плату за расшифровку файлов и восстановление работы системы.
Руткиты
Руткиты — это программы, используемые хакерами для предотвращения обнаружения при попытке получить несанкционированный доступ к компьютеру. Хакеры используют руткиты для удаленного доступа и кражи вашей информации.
Троянские программы
Троянская программа или троян — это вредоносная программа, маскирующаяся под обычный файл и выполняющая на компьютере пользователя вредоносные действия. При загрузке трояна сам пользователь может даже не подозревать, что на самом деле устанавливаете вредоносное ПО.
Троянские программы могут выполнять различные действия, включая кражу персональных данных. Примерами троянских программ являются:
- Дро́пперы: Эти программы используются хакерами, чтобы скрытно устанавливать вредоносные программы на компьютеры пользователей.
- Троянские программы скрытой загрузки: Эти программы способны загружать и устанавливать на компьютер-жертву новые версии вредоносных программ.
- Шпионские программы: Эти программы способны скрытно наблюдать за вашей активностью в интернете и отправлять информацию о ней киберпреступникам.
- Банковские троянцы: Эти программы маскируются под легитимные приложения и крадут банковскую информацию, когда вы их загружаете.
- Бэкдоры: Эти вредоносные программы скрытно проникают в ваш компьютер, используя уязвимости в установленном на нем программном обеспечении.
Распространение
Через Интернет, локальные сети и съёмные носители.
Механизм
Вирусы распространяются, копируя своё тело и обеспечивая его последующее исполнение: вписывая себя в исполняемый код других программ, заменяя собой другие программы, прописываясь в автозапуск через реестр и другое. Вирусом или его носителем могут быть не только программы, содержащие машинный код, но и любая информация, содержащая автоматически исполняемые команды, — например, пакетные файлы и документы Microsoft Word и Excel, содержащие макросы. Кроме того, для проникновения на компьютер вирус может использовать уязвимости в популярном программном обеспечении (например, Adobe Flash, Internet Explorer, Outlook), для чего распространители внедряют его в обычные данные (картинки, тексты и т. д.) вместе с эксплойтом, использующим уязвимость.
После того как вирус успешно внедрился в коды программы, файла или документа, он будет находиться в состоянии сна, пока обстоятельства не заставят компьютер или устройство выполнить его код. Чтобы вирус заразил ваш компьютер, необходимо запустить заражённую программу, которая, в свою очередь, приведёт к выполнению кода вируса. Это означает, что вирус может оставаться бездействующим на компьютере без каких-либо симптомов поражения. Однако, как только вирус начинает действовать, он может заражать другие файлы и компьютеры, находящиеся в одной сети. В зависимости от целей программиста-вирусописателя, вирусы либо причиняют незначительный вред, либо имеют разрушительный эффект, например удаление данных или кража конфиденциальной информации.
Каналы
- Дискеты. Самый распространённый канал заражения в 1980—1990-е годы. Сейчас практически отсутствует из-за появления более распространённых и эффективных каналов и отсутствия флоппи-дисководов на многих современных компьютерах.
- Флеш-накопители («флешки»). В настоящее время USB-накопители заменяют дискеты и повторяют их судьбу — большое количество вирусов распространяется через съёмные накопители, включая цифровые фотоаппараты, цифровые видеокамеры, портативные цифровые плееры, а с 2000-х годов всё большую роль играют мобильные телефоны, особенно смартфоны (появились мобильные вирусы). Использование этого канала ранее было преимущественно обусловлено возможностью создания на накопителе специального файла autorun.inf, в котором можно указать программу, запускаемую Проводником Windows при открытии такого накопителя. В Windows 7 возможность автозапуска файлов с переносных носителей была отключена.
- Электронная почта. Обычно вирусы в письмах электронной почты маскируются под безобидные вложения: картинки, документы, музыку, ссылки на сайты. В некоторых письмах могут содержаться действительно только ссылки, то есть в самих письмах может и не быть вредоносного кода, но если открыть такую ссылку, то можно попасть на специально созданный веб-сайт, содержащий вирусный код. Многие почтовые вирусы, попав на компьютер пользователя, затем используют адресную книгу из установленных почтовых клиентов типа Outlook для рассылки самого себя дальше.
- Системы обмена мгновенными сообщениями. Здесь также распространена рассылка ссылок на якобы фото, музыку либо программы, в действительности являющиеся вирусами, по ICQ и через другие программы мгновенного обмена сообщениями.
- Веб-страницы. Возможно также заражение через страницы Интернета ввиду наличия на страницах всемирной паутины различного «активного» содержимого: скриптов, ActiveX-компонент. В этом случае используются уязвимости программного обеспечения, установленного на компьютере пользователя, либо уязвимости в ПО владельца сайта (что опаснее, так как заражению подвергаются добропорядочные сайты с большим потоком посетителей), а ничего не подозревающие пользователи, зайдя на такой сайт, рискуют заразить свой компьютер.
- Интернет и локальные сети (черви). Черви — вид вирусов, которые проникают на компьютер-жертву без участия пользователя. Черви используют так называемые «дыры» (уязвимости) в программном обеспечении операционных систем, чтобы проникнуть на компьютер. Уязвимости — это ошибки и недоработки в программном обеспечении, которые позволяют удалённо загрузить и выполнить машинный код, в результате чего вирус-червь попадает в операционную систему и, как правило, начинает действия по заражению других компьютеров через локальную сеть или Интернет. Злоумышленники используют заражённые компьютеры пользователей для рассылки спама или для DDoS-атак.
Файловые вирусы
Рассмотрим теперь схему работы простого файлового вируса. В отличие от
загрузочных вирусов, которые практически всегда резидентны, файловые вирусы
совсем не обязательно резидентны. Рассмотрим схему функционирования
нерезидентного файлового вируса. Пусть у нас имеется инфицированный исполняемый
файл. При запуске такого файла вирус получает управление, производит некоторые
действия и передает управление «хозяину» (хотя еще неизвестно, кто в такой
ситуации хозяин).
Какие же действия выполняет вирус? Он ищет новый объект для заражения —
подходящий по типу файл, который еще не заражен (в том случае, если вирус
«приличный», а то попадаются такие, что заражают сразу, ничего не проверяя).
Заражая файл, вирус внедряется в его код, чтобы получить управление при запуске
этого файла. Кроме своей основной функции — размножения, вирус вполне может
сделать что-нибудь замысловатое (сказать, спросить, сыграть) — это уже зависит
от фантазии автора вируса.
Если файловый вирус резидентный, то он установится в память и получит
возможность заражать файлы и проявлять прочие способности не только во время
работы зараженного файла.
Заражая исполняемый файл, вирус всегда изменяет его код -следовательно,
заражение исполняемого файла всегда можно обнаружить. Но, изменяя код файла,
вирус не обязательно вносит другие изменения: он не всегда изменяет длину файла,
может не менять начало файла.
Наконец, к файловым вирусам часто относят вирусы, которые «имеют некоторое
отношение к файлам», но не обязаны внедряться в их код. Рассмотрим в качестве
примера схему функционирования вирусов известного семейства DIR-II.
Нельзя не признать, что, появившись в 1991 г., эти вирусы стали причиной
настоящей компьютерной эпидемии в России. Рассмотрим модель, на которой ясно
видна основная идея вируса. Информация о файлах хранится в каталогах. Каждая
запись каталога включает в себя имя файла, дату и время создания, некоторую
дополнительную информацию, номер первого кластера файла и так называемые
резервные байты.
Таким образом, при запуске любого файла вирус получает управление (операционная
система запускает его сама), резидентно устанавливается в память и передает
управление вызванному файлу. Действие вируса приводит к «размножению» на
винчестере секторов, помеченных как сбойные.
Загрузочно-файловые вирусы
Типичным представителем таких вирусов является «популярный» загрузочно-файловый
вирус OneHalf, заражающий главный загрузочный сектор (MBR) и исполняемые
файлы. Основное разрушительное действие — шифрование секторов винчестера. При
каждом запуске вирус шифрует очередную порцию секторов, а, зашифровав половину
жесткого диска, радостно сообщает об этом.
Основная проблема при лечении данного вируса состоит в том, что недостаточно
просто удалить вирус из MBR и файлов, надо расшифровать зашифрованную им
информацию. Наиболее радикальное действие — просто переписать новый здоровый
MBR.
5 Два антивируса на компьютере лучше, чем один
Антивирус ведет себя в операционной системе ровно как вирус. Второй антивирус будет воспринимать своего «коллегу» как вредоносную программу, которая «сует свой нос» во все дела, где надо и где не надо.
В результате каждый из двух антивирусов будет занят лишь тем, чтобы «уничтожить», «утихомирить», «обезвредить» своего напарника. Но антивирус не так прост, как мы думаем. Его не уничтожить, не притормозить, не заблокировать. По крайней мере, это сделать непросто. Как итог, антивирусы будут непрерывно заняты напрасной борьбой друг с другом без видимого результата, а не защитой компьютера от внешних угроз.
Поэтому, нужен один единственный антивирус. Какой? Тут нет единого мнения. Кому как нравится, кто к чему привык, у кого какие ассоциации.
По себе могу сказать, что уже много лет пользуюсь антивирусом, встроенным в операционную систему Windows. Я не применяю другие антивирусы. Тем более, что в современной «десятке» встроенный антивирус работает спокойно, незаметно. И лишь эпизодически сообщает, что все в порядке.
Формальное определение
Нет общепринятого определения вируса. В академической среде термин был употреблён Фредом Коэном в его работе «Эксперименты с компьютерными вирусами», где он сам приписывает авторство термина Леонарду Адлеману.
Формально вирус определён Фредом Коэном со ссылкой на машину Тьюринга следующим образом:
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) = SM ∧ 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 число базовых операций «перемещения», осуществлённых машиной
- PM ∈ N номер позиции на ленте машины в момент времени t
- SM начальное состояние машины
- CM(t, c) содержимое ячейки c в момент времени t
Данное определение было дано в контексте вирусного множества VS = (M, V) — пары, состоящей из машины Тьюринга M и множества последовательностей символов V: v, v’ ∈ V. Из данного определения следует, что понятие вируса неразрывно связано с его интерпретацией в заданном контексте, или окружении.
Фредом Коэном было показано, что «любая самовоспроизводящаяся последовательность символов: одноэлементный VS, согласно которой существует бесконечное количество VS, и не-VS, для которых существуют машины, по отношению к которым все последовательности символов является вирусом, и машин, для которых ни одна из последовательностей символов не является вирусом, даёт возможность понять, когда любая конечная последовательность символов является вирусом для какой-либо машины». Он также приводит доказательство того, что в общем виде вопрос о том, является ли данная пара (M, X) : Xi ∈ IM вирусом, неразрешим (то есть не существует алгоритма, который мог бы достоверно определить все вирусы) теми же средствами, которыми доказывается неразрешимость проблемы остановки.
Другие исследователи доказали, что существуют такие типы вирусов (вирусы, содержащие копию программы, улавливающей вирусы), которые не могут быть безошибочно определены ни одним алгоритмом.
Люк
Люком называется не описанная в документации на программный
продукт возможность работы с этим программным продуктом. Сущность
использования люков состоит в том, что при выполнении пользователем
некоторых не описанных в документации действий он получает доступ к
возможностям и данным, которые в обычных условиях для него закрыты (в
частности — выход в привилегированный режим).
Люки чаще всего являются результатом забывчивости
разработчиков. В процессе разработки программы разработчики часто
создают временные механизмы, облегчающие ведение отладки за счет
прямого доступа к отлаживаемым частям продукта. По окончанию отладки
большинство люков убирается из программы; но люди есть люди —
зачастую они забывают о существовании каких-то мелких «лючков».
Одним из наиболее показательных примеров использования
«забытых» люков является, пожалуй, широко известный в компьютерном
мире инцидент с вирусом Морриса. Одной из причин, обусловивших
возможность распространения этого вируса, была ошибка разработчика
программы электронной почты, входящей в состав одной из версий
операционной системы UNIX, приведшая к появлению малозаметного лючка.
Для вас, наверное, будет небесполезно знать, что американские
специалисты оценивают ущерб, нанесенный в результате этого инцидента,
более чем в 100 миллионов долларов.
Люки могут образовываться также в результате часто
практикуемой технологии разработки программных продуктов «сверху
вниз». При этом программист приступает сразу к написанию сразу
управляющей программы, заменяя предполагаемые в будущем подпрограммы
так называемыми «заглушками». В теории моментом завершения разработки
конечной программы по такой технологии можно считать момент замены
последней заглушки реальной подпрограммой.
В действительности дело обстоит несколько сложнее. Вся беда в
том, что авторы часто оставляют заглушки в конечном программном
продукте, передаваемом в эксплуатацию. Делают это порой неумышленно:
например, на ранних стадиях разработки предполагалось наличие в
конечном программном продукте некоторой подпрограммы, однако в
процессе разработки выяснилось, что эта подпрограмма в силу
каких-либо причин не нужна. Но заглушка-то осталась! Удалить
заглушку, не заменяя ее подпрограммой, бывает весьма сложно. Это
может спровоцировать программиста оставить заглушку «до лучших
времен».
Возможен вариант, когда заглушки оставляются в конечной
программе сознательно, в расчете на подключение в дальнейшем к
работающей программе новых подпрограмм, реализующих некоторые новые
возможности, либо предполагая возможное подключение к программе
тестирующих средств для более точной настройки программы. Кто может
дать гарантию, что в один прекрасный день такой заглушкой кто-нибудь не
воспользуется для подключения к программе совсем иной подпрограммы,
работающей в интересах этого «кого-нибудь», а не законного владельца?
Наконец, еще одним распространенным источником люков является
так называемый «неопределенный ввод». Не так уж редка ситуация, когда
программа создается неопытным программистом, исходящим из
предположения, что пользователи будут работать с его программой
всегда корректно. В этом случае реакция на неопределенный ввод может
быть в лучшем случае непредсказуемой; гораздо хуже, если программа в
случае одинакового неопределенного ввода выполняет некоторые
повторяющиеся действия — это дает потенциальному захватчику
возможность планировать свои действия по нарушению безопасности.
Таким образом, люк (или люки) может присутствовать в
программе ввиду того, что программист:
- забыл удалить его;
- умышленно оставил его в программе для обеспечения тестирования или
выполнения оставшейся части отладки; - умышленно оставил его в программе в интересах облегчения
окончательной сборки конечного программного продукта; - умышленно оставил его в программе с тем, чтобы иметь скрытое
средство доступа к программе уже после того, как она вошла в состав
конечного продукта.