Уже в середине 60-х гг. разработчики и пользватели обнаружили, что системы разделения времени весьма уязвимы с точки зрения возможности доступа к чужим данным и программам посторонних лиц, и начали принимать меры защиты против "непрошенных гостей" Доверие к той или иной компьютерной системе фактически означает доверие по отношению к тем, кто ее разработал, и тем, кто ею пользуется. Эксперты по безопасности компьютерных систем часто подчеркивают, что эти проблемы в значительной степени являются социальными проблемами. В программировании, как и в других сферах человеческой деятельности, появилась и развивается преступность. Вирусы являются только частью проблемы компьютерной преступности, и их правильнее всего рассматривать в этом, более общем контексте. Современные персональные компьютеры, в действительности не обеспечивают безопасность информации, поскольку любой, кто имеет доступ к компьютеру может изменять,читать или копировать данные. Поэтому наряду с различными специфическими методами защиты от вирусов, важное значение имеют традиционные методы защиты информации с которыми можно познакомиться по учебникам [ Хоффман 80,Сяо82]. Рассмотрение вирусов начнем с их исторических предшественников - программ - вандалов и троянских программ. Программы-вандалы. " Homo homini lupus est" (Человек человеку волк) Плавт Класс программ, направленных на причинение вреда пользователям, часто обозначают термином "Badware", по аналогии с тем, что для обозначения программнрого обеспечения обычно используется термин "Software". На русский язык этот термин иногда переводится "какой" софтвер, который не прижился из-за своей неблагозвучности. Мне кажется, что в технической литературе отдельные общепринятые иностранные слова можно использовать без перевода.Badware включает ряд подклассов, среди которых наиболее распространенными являются троянские программы и компьютерные вирусы. Троянские программы. " О tempora, o mores " ( о времена, о нравы ) Цицерон Троянскими программами (троянскими конями) обычно назыывают программы,содержащие скрытый модуль, осуществляющий несанкционированные действия. Эти действия не обязательно могут быть разрушительными, однако практически всегда направлены во вред пользователю. В свою очередь, троянские программы можно разделить на несколько категорий. Троянские программы-вандалы обычно имитируют выполнение какой-нибудь полезной или экзотической функции. При этом в качестве побочного эффекта они стирают файлы, разрушают каталоги, форматируют диск и т.д. Иногда разрушительный код встраивается в какую-нибудь известную программу. Чтобы привлечь пользователей, полученная троянская программа-вандал часто маскируется под новую версию данного программного продукта. С появлением BBS программы-вандалы получили значительное распространение. При этом технокрыса подсовывает программу в один или несколько BBS, пользователи которых затем "попадаются на удочку". В качестве примера троянской программы-вандала можно привести программу SURPRISE ("Сюрприз"). Написанная на Бейсике, она исполняла команду DEL *.*, а затем выдавала на экран строку "Surprise!". И таких простых и злобных программ создано немало. С их распространением запуск новой программы на компьютере стал небезопасной операцией. Иногда в качестве самостоятельной разновидности троянских программ-вандалов выделяют так называемые логические мины (loqic bomb) - скрытые модули, встроенные в ранее разработанную и широко используемую программу. Такой модуль является безвредным до определенного события, при наступлении которого он срабатывает. Такого рода программы иногда используются уволенными или обиженными сотрудниками как форма мести по отношению к нанимателю. Частный случай логических мин, в которых срабатывание скрытого модуля определяется временем, часто называют минами с часовым механизмом (time bomb). Фактически логические мины являются средством компьютерного саботажа, и их создание должно предусматривать уголовную ответственность. Хотя,как указано выше, компьютерный саботаж обычно связан с "местью" обиженных или уволенных программистов своему бывшему работодателю, он может использоваться как форма конкурентной борьбы. В истории отечественного программирования было несколько "громких" случаев компьютерного саботажа. Так, лет семь назад отечественные газеты сообщали о программисте, который перед своим увольнением встроил в программу, управляющую главным конвейеромГорьковского автомобильного завода, "мину", которая через некоторое время привела к остановке главного конвейера. Программист был выявлен и осужден. На Западе, наряду спопытками хищения средств через банковские компьютеры, распространены случаи компьютерного саботажа по отношению к различного рода финансовым системам, вплоть до шифровки базы данных с последующим требованием выкупа за ключ (программу) расшифровки. Последним известным случаем такого рода было описанное выше распространение дискеты с информацией по СПИДу, в которой программа управления базой данных была троянской. Программы,обеспечивающие вход в систему или получение привилегированной функции (режимы работы) в обход существующей системы полномочий, называют люками (back door). Люки часто оставляются разработчиками соответствующих компонент операционной системы для того, чтобы завершить тестирование или исправить какую-то ошибку, но нередко продолжают существовать и после того, как то, для чего они планировались,завершено или необходимость в нем отпала. Например,в операционной системе OS ES широко использовался люк NewRSW, позволявший программе пользователя получить привилегированный режим, называемый в серии 360/370 режимом супервизора, в обход средств контроля операционной системы. Троянские программы могут использоваться также в целях разведки. К распространенным программам такого рода относятся программы угадывания паролей. Одной из компонент сетевого вируса Морриса была такая программа, причем, как оказалось, она сумела добиться успеха в значительном числе случаев. Компьютерные вирусы. "Да он то как вперед пробрался?" "За хвостик тоненький держался!" И. Франко. Формально компьютерным вирусом называется программа, которая может заражать другие программы путем включения в них своей, возможно модифицированной, копии, причем последняя сохраняет способность к дальнейшему размножению [Cohen88a]. Программа, зараженная вирусом, может рассматриваться как автоматически созданная троянская программа. В данном случае скрытым модулем является тело вируса, а одним из несанкционированных действий - заражение других программ. Помимо заражения, вирус, подобно любой другой троянской программе, может выполнять и другие несанкционированные действия, от вполне безобидных до крайне разрушительных. Последние, в частности, могут включать уничтожение данных на зараженном диске. В этом случае вирус может рассматриваться, как логическая мина. Выполняемые вирусом несанкционированные действия могут быть обусловлены наступлением определенной даты (такие троянские программы в какой-то степени аналогичны минам с часовым механизмом) или определенного количества размножений, или сочетанием определенных условий, например записи зараженной программы на винчестер (последние аналогичны различного рода бесконтактным минам). При этом комбинация этих условий может быть достаточно сложной, чтобы затруднить ее определение (как, например, в вирусе пинг-понг). Инфицируя программы, вирусы могут распространяться от одной программы к другой (транзитно), что делает их более опасными по сравнению с другими методами компьютерного вандализма. Зараженные программы (или их копии) могут передаваться через дискеты или по сети на другие ЭВМ. Учитывая широко распространенную практику обмена и передачи программ на дискетах среди пользователей персональных ЭВМ (ПЭВМ), количество зараженных программ может быть значительным, приводя к своего рода эпидемиям. Этому также способствует распространенная в нашей стране практика использования одной ПЭВМ несколькими пользователями. Опасность существенно возрастет при наличии винчестера, программы на котором используются всеми пользователями. В этом случае один неквалифицированный или злонамеренный пользователь может нанести значительный ущерб другим пользователям. Особую опасность с точки зрения распространения компьютерных вирусов представляют любители компьютерных игр, обычно слабо знающие операционную систему и не вполне понимающие смысл выполняемых ими действий. Такие пользователи подвергают значительному риску своих коллег, работающих с ними на одной ПЭВМ. Упрощенно процесс заражения вирусом программных файлов можно представить следующим образом. Код зараженной программы обычно изменен таким образом, чтобы вирус получил управление первым,до начала программы-вирусоносителя (рис 2). При передаче управления вирусу он каким-то способом находит новую программу и выполняет вставку собственной копии в начало (рис.2б) или добавление ее в конец этой,обычно еще не зараженной,программы (рис.2а). Если вирус дописывается в конец программы, то он корректирует код программы, чтобы получить управление первым. Для этого первые несколько байтов запоминаются в теле вируса, а на их место вставляется команда перехода на начало вируса. Этот способ является наиболее распространенным. Получив управление,вирус восстанавливает "спрятанные" первые байты, а после отработки своего тела передает управление программе-вирусоносителю, и та нормально выполняет свои функции. Возможны случаи, когда вирус включает себя куда-то в середину программы, например, в обьласть стека (рис.2в). Последние случаи встречаются редко.