Курсовая работа
Автор: Биль Олег Викторович, Костанайский государственный университет имени Ахмета Байтурсынова
Контакт: oleg_bil@mail.ru
Факультет информационных и компьютерных технологий
Кафедра прикладной математики и информационных систем
В конце ушедшего века перед всем “компьютерным” человечеством возникла опасная проблема: компьютерные вирусы. Ученые расходятся в определении понятия “компьютерный вирус”. Мы будем исходить из того, что под компьютерным вирусом понимается программа, обязательным (необходимым) свойством которой является возможность создавать свои дубликаты (не обязательно совпадающие с оригиналом) и внедрять их в вычислительные сети и/или файлы, системные области компьютера и прочие выполняемые объекты, причем дубликаты сохраняют способность к дальнейшему pаспpостpанению.
В начале “эры вирусов” создать программу подобного типа было весьма затруднительно: был необходим опыт программирования на языке ассемблера, или довольно сложных языках высокого уровня, таких как C/C++, что требовало высокой квалификации программиста. В середине 90-х годов XX века, с внедрением в один из наиболее популярных программных продуктов Microsoft Office эффективного языка автоматизации приложений Visual Basic for Applications, данная ситуация резко изменилась. Люди, гордо называющие себя вирусмейкерами получили прекрасный инструмент для реализации своих идей довольно тривиальными методами. Сообщение о появлении вируса, использующего нестандартный способ саморазмножения (документы Microsoft Word) в августе 1995 года прошло практически незамеченным. Данный вирус восприняли как неудачный эксперимент, в результате чего большинство фирм, выпускающих антивирусное программное обеспечение, оказались неспособными противостоять буквально эпидемии макро-вирусов. В спешном порядке менялась специальная компьютерная литература, ранее отвечавшая на вопрос о том, можно ли заразить компьютер при чтении файла категоричным “нет”.
Несмотря на все попытки компании Microsoft обезопасить свои приложения от вирусов, в настоящее время макро-вирусы воспринимаются уже как неотъемлемый атрибут персональных компьютеров, а доступность их создания привела к тому, что макро-вирусы составляют около 70% из почти 70000 известных на сегодня компьютерных вирусов.
Данная работа является попыткой повышения антивирусной защищенности компьютеров и сетей и направлена на снижение как материальных, так и моральных убытков от действия макро-вирусов.
Предлагаемый нами механизм защиты состоит в недопущении запуска макросов без предварительного оповещения пользователя о наличии макросов и, при необходимости, ознакомления с содержимым программных модулей документов Word. На основании этого механизма разработана компьютерная программа по защите от вирусов в макросах, получившая название MacroVirus Detector.
Настоящая работа является анализом существующего положения дел в сфере антивирусных технологий, а также преимуществ, достигаемых при использовании MacroVirus Detector.
Как было сказано выше, до 1995 года, то есть, до появления в пакете Microsoft Office сначала специальных языков автоматизации (Word Basic), а затем и универсального - Visual Basic for Applications (VBA), написание вирусов было уделом высокопрофессиональных программистов. Данный факт способствовал тому, что вирусы появлялись не так часто, и крупных эпидемий удавалось избегать. Довольно низкую скорость распространения вирусов можно объяснить также и недостаточно развитыми в то время коммуникациями.
Вместе с внедрением VBA получил новый импульс развития целый класс вирусов макро-вирусы. Макро-вирусы - это компьютерные вирусы, использующие возможности встроенных макро языков. Наиболее распространены вирусы, поражающие документы Office. В 1995 году проявил себя один из первых макро-вирусов – Concept. Он очень быстро “завладел” тысячами компьютеров во всем мире, так как сеть Internet была уже достаточно популярной, а формат MS Word фактически стал стандартом передачи текстовых данных. Причем, скорость распространения многократно возрастала с увеличением числа зараженных машин, поскольку пользователь зараженного компьютера становился очагом распространения вируса для своих товарищей по электронной переписке.
Летом 1996 года появился первый вирус, заражающий таблицы Excel ─ Laroux (Лару). В этом же году появились конструкторы макро-вирусов, а в 1997 году и первые полиморфик-макро-вирусы (вирусы, самопроизвольно изменяющие свой код, не теряя функциональности, что усложняет процесс обнаружения вируса, так как не всегда можно выявить постоянно повторяющиеся участки кода вируса (сигнатуры)).
Как говорит известный специалист в области вирусологии, Е. Касперский, макpо-виpyсы, являются самой большой проблемой современной виpyсологии.
Алгоритм работы макро-вирусов основан на возможности программного переопределения так называемых авто-макросов, выполняемых автоматически при различных условиях, например AutoOpen – вызывается при открытии документа, AutoExec, - при запуске Word и т. д., а также различных управляющих макросов (наиболее часто встречается, например в Stealth – вирусах, обработка макросов ToolsMacro – вызов диалогового окна “Макрос”, ViewVBCode – вызов окна редактора Visual Basic). Также макро-вирус может содержать и свои собственные макросы, вызываемые из вирусных обработчиков стандартных макросов, или при нажатии на определенную клавишу. Сопоставить нажатие клавиши какому-либо действию можно, выполнив следующий код:
KeyBindings.Add KeyCode := BuildKeyCode ( wdKeySpacebar ),_ KeyCategory:=wdKeyCategorySymbol, Command:="R"
В результате выполнения данной команды, произойдет переопределение нажатия клавиши “Пробел”, при нажатии на которую будет выведен символ “R”. Нетрудно догадаться, что данная возможность может быть с успехом использована вирусами.
Схематичное сравнение зараженного и незараженного документа приведено в таблице 1.
Таблица № 1 - Сравнительная структурная схема зараженного и незараженного документов
Незараженный | Зараженный |
Служебная информация Текст Форматирование Макросы (если есть) Прочие данные |
Служебная информация Текст Форматирование Макросы (если есть) Макросы вируса Прочие данные |
При запуске большинство макро-вирусов для MS Word пытаются записаться в область глобальных макросов, которые обычно (по умолчанию) хранятся в DOT-файле Normal.dot, с тем, чтобы получить управление на себя в то время, когда открывается еще незараженный документ. Затем, опять же, чаще всего, при открытии незараженного документа и/или работе с ним, код вируса, находящийся в области глобальных макросов, производит заражение нового документа, копируя свои строки в него.
О деструктивных возможностях макро-вирусов, а также о возможных размерах ущерба от их воздействия, можно написать очень много, но мы ограничимся наиболее общими положениями, чтобы уложиться в объем данной работы.
Итак, чем же страшны макро-вирусы? Мощность языка VBA очень велика. Он включает в себя функции работы с реестром и файловой системой, что позволяет управлять данными на машинах пользователей (уничтожать, модифицировать, а также предоставлять злоумышленнику конфиденциальную информацию и обеспечивать условия, облегчающие проникновение через Internet в систему или в сеть, в которой находится зараженный компьютер (Backdoor)). Также эти возможности используются для настройки системы таким образом, что, при обеспечении доступа к Internet произойдет автоматическая загрузка и запуск деструктивной программы с какого-либо узла Сети, при этом сам код макро-вируса может и не содержать команд, ведущих к повреждению/модификации данных. Приведенные примеры иллюстрируют, насколько серьезно необходимо относиться к проблеме макро-вирусов. Теперь, вкратце, опишем современные методы борьбы с макро-вирусами.
Сейчас имеется большое разнообразие антивирусных программ. Они различаются количеством известных им вирусов, способами анализа кода, а также некоторыми другими свойствами. Основу современных средств защиты от компьютерных вирусов составляют так называемые вирусные базы, где содержатся постоянные (не изменяющиеся) фрагменты кода вирусов (сигнатуры), по которым антивирусная программа способна определить вирус и либо вылечить вирус, либо, в случае невозможности этого, сообщить о заражении пользователю с предложением об удалении пораженного файла. Данный механизм обнаружения вирусов являлся приемлемым до того, как развитие сети Internet достигло всемирных масштабов. Сегодня же, базы антивирусных программ, обновленные несколько дней назад, не всегда способны защитить компьютеры от новых вирусов. Темпы появления вирусов ошеломляют: в день, по разным оценкам, создаются от 1 - 2 до 10 – 15 новых вирусов. Доступность же написания макро-вирусов довела до того, что сейчас доля макро-вирусов в общей численности вирусных программ составляет около 70% из около 70 000 известных на сегодня компьютерных вирусов. Такая распространенность связана с очень многими факторами как социального, так и технического характера. С технической точки зрения, создание макро-вирусов популярно из-за своей простоты (человек, совершенно не владеющий навыками программирования, после специальной подготовки в течение 2 – 3 месяцев, вполне способен написать вирус с большой деструктивной мощью), доступности документации по языку VBA, Office, а также простотой получения исходного кода большинства макро-вирусов, используемого в качестве образца при написании своих вирусов. Социальный фактор намного сложнее, так как путь к созданию вирусов у каждого свой – кто-то хочет научиться программировать и для него написание вируса является просто интересной “программистской” задачей (данные вирусы предназначены для учебных целей и, в большинстве своем, они не получают широкого распространения, либо не содержат в себе деструктивных функций, ограничиваясь лишь шутливыми эффектами, или вовсе не подают признаков своего присутствия); другого увлекает мания власти над людьми, особенно если данный человек затем узнает о нанесенном его вирусом ущерба в планетарном масштабе из средств массовой информации; третьи же просто мстят каким-либо определенным личностям, но затем, распространение вируса выходит из-под контроля.
Мы разобрали основные аспекты проблемы, которую поставили перед программистами всего мира макро-вирусы, рассказав о макро-вирусах, распространяемых посредством документов пакета Microsoft Office в целом и текстового процессора MS Word в частности. Хотелось бы, вкратце, затронуть макро-вирусы, которые еще не так распространены, но потенциальная опасность которых сопоставима с опасностью макро-вирусов для Office, а может даже и превосходит их – это макро-вирусы, созданные на встроенном языке программирования комплекса 1С – Предприятие. Данный язык обладает довольно гибкими возможностями работы с файловой системы, что может позволить манипулировать информацией, находящейся на пораженном компьютере. Если учесть, что, к примеру, в нашей стране (а также и в странах СНГ), данный пакет применяется практически повсеместно, вплоть до весьма крупных предприятий, то экономический ущерб от воздействия данных вирусов, потенциально, очень велик (ущерб от потери данных, затраты на восстановление информации (а, к примеру, на VBA в Office можно создать вирус, после воздействия которого восстановить информацию можно лишь очень дорогими способами, недоступными в обычных условиях (необходимы специальные лаборатории), ущерб от простоя вычислительной техники и т. д.).
По причине того, что документы MS Word обладают недостаточно эффективной защитой от макро-вирусов, было решено провести анализ путей повышения защищенности компьютеров и сетей от вирусов при работе с документацией в формате Microsoft Word, фактически ставшем основным форматом при обмене текстовой (и не только) информацией.
Результатом данного анализа стало создание программы MacroVirus Detector, разработанной в среде программирования Visual Basic 6.0, входящей в пакет Visual Studio 6.0, компании Microsoft.
Предлагаемая программа призвана обеспечить более высокий уровень безопасности при работе с документами MS Word тем, что она позволяет блокировать запуск макросов без предварительного оповещения пользователя о их наличии в документе, а, при необходимости, ознакомления пользователя с программным кодом макросов и возможностью его корректировки.
При первом запуске данной программы происходит изменение системной базы данных (реестра), что позволяет автоматически контролировать запуск документов Word, то есть программа способна работать как монитор, при этом не занимая ресурсов компьютера в то время, когда в этом нет необходимости. Запуск программы в таком режиме осуществляется за 1 – 2 секунды (Pentium Pro, 300 MHz), что практически не влияет на скорость работы с документами. Согласно проведенному исследованию , документы Word в условиях Высшего учебного заведения открываются 15 – 20 раз, то есть при использовании нашей программы общее время задержки не превысит 1 минуты в сутки, что является весьма необременительным (при запуске программы необходимо немногим более 100 Кбайт оперативной памяти).
Интерфейс программы чрезвычайно прост и интуитивно понятен, что, в современных условиях играет очень важную роль, так как пользователь, по возможности, не должен подстраиваться под программу и такие элементы, как “горячие” клавиши, пункты меню должны быть стандартизированы. Основная форма программы представлена на рис. 1.
Рисунок №1 – Основная форма программы MacroVirus Detector.
В меню Файл размещаются функции работы с файлами: Открыть; Сохранить как, и процедуры перемещения по открытым документам, в случае, если открыто сразу несколько файлов. В меню Правка расположены стандартные функции управления текстом, так как программа имеет специализированный текстовый редактор, это следующие возможности: Вставка; Копирование; Удаление; Выделить все; также данное меню предоставляет специальную функцию – Комментарии, которая используется для полного обезвреживания макроса, но сохранения его при этом в документе практически в неизменном виде (применяется для досконального изучения работы макроса специалистом). Меню Сервис содержит пункты Отмена регистрации и О программе… Отмена регистрации – это функция, восстанавливающая первоначальное состояние реестра (отменяет переопределение запуска документов на себя). Пункт О программе… выводит форму, сообщающую о разработчике и позволяющую получить некоторую информацию о компьютере пользователя.
При выборе команды Открыть в меню Файл, появляется стандартное диалоговое окно Открыть файл, в котором можно выбрать файл для проверки на наличие макросов, а, возможно, и вирусов. После выбора документа, при отсутствии в нем макросов, об этом сообщается пользователю, а при наличии, - главная форма несколько видоизменяется. Для отображения кода первого (по порядку) модуля необходимо нажать кнопку Проверить. Новое изображение формы приведено на рис. 2.
Рисунок № 2 – Основная форма после открытия файла Doc2.doc.
Видно, что стала доступной кнопка Изменить, появились цифры напротив надписей Количество модулей и Текущий модуль и надпись в поле редактора, а также изменился заголовок формы. Из данного рисунка следует, что документ, с которым мы работаем, называется Doc2.doc, он содержит 1 программный модуль, который в данный момент и является активным. Содержит он код, находящийся в поле редактора. После редактирования кода нужно нажать кнопку Изменить. Программа попросит подтверждения изменения модуля, и, получив его, заменит код текущего модуля на новый, находящийся в настоящее время в окне редактора.
При работе с несколькими документами, навигация осуществляется при помощи команд Следующий и Предыдущий меню Файл. В остальном, алгоритм действий не отличается от приведенного выше.
Иногда вирус, заразив документ, пытаясь обезопасить себя и усложняя процесс его нейтрализации, закрывает проект документа паролем. В этом случае становится невозможным просмотр и редактирования кода программных модулей. Программа, в такой ситуации, предлагает пользователю сохранить исходный файл в безопасном формате RTF (Rich Text Format), позволяющем сохранять документы без программного кода макросов. Таким образом, существует возможность безопасного открытия документов. Программа испытывалась в работе со многими вирусами, в том числе и шифрующимися (Cap) и ни в одном случае не было допущено несанкционированного запуска вирусных макросов.
Теперь несколько слов о том, как же можно случайно запустить вирус, работая с форматом RTF. Дело в том, что данный формат абсолютным большинством пользователей (а также и программистов) считается совершенно безопасным, а ошибочная уверенность в полной собственной неуязвимости, с психологической точки зрения, намного страшнее “трезвого” осознания возможной опасности заражения вирусом. При сохранении документов в формате RTF имеется возможность подключения к данному файлу шаблонов, в которых могут находиться вирусы. Причем, что интересно, данные макросы (находящиеся в шаблоне) запускались (до выхода MS Office XP) даже без оповещения пользователя о их наличии. В связи с существованием в программе MS Word XP недокументированной функции отключения защиты от вирусов в макросах, даже в этой версии появляется возможность запуска вредных макросов без ведома пользователя. Потенциальная опасность состоит в том, что RTF файл может ссылаться на документ (находящийся на каком-либо сервере глобальной сети, который является шаблоном, содержащим код вируса, а так же на файл, находящийся на компьютере пользователя, с тем же содержимым (попасть на компьютер шаблон мог при выполнении скрипта на странице злоумышленника)).
В программе, описанию которой и посвящена данная работа, предусмотрены функции проверки файлов формата RTF на наличие небезопасных ссылок, обнаружив которые, программа сообщит о наличии ссылок пользователю и, если необходимо, удалит их (при сохранении документов Word в формате RTF проверка производится автоматически).
Мы раскрыли основные технические характеристики представляемой программы, исходя из результатов тестирования которой, можно считать, что данная программа позволяет значительно повысить надежность антивирусной защиты от вирусов наиболее распространенного на сегодняшний день, и не перестающего развиваться класса, - макро-вирусов.
Для решения задачи по повышению надежности антивирусной защиты документов Word был проведен анализ вирусной уязвимости текстового процессора, а также путей улучшения данной защиты.
Результатом проведенной работы явилось создание программы, резко повышающей эффективность защиты документов от вирусов. В ходе испытания предлагаемой программы не было зафиксировано ни одного случая несанкционированного запуска макросов, причем тестирование проходило с использованием практически всех типов макро-вирусов (в т. ч. стелс и шифрующихся). Стабильная работа программы с довольно сложными вирусами доказывает ее эффективность в борьбе с вирусами и обеспечении безопасной работы с документами.
Учитывая частые жалобы работников различных предприятий и учреждений на проявления работы макро-вирусов (в основном – порча информации), можно говорить о достаточно высокой востребованности предлагаемой программы во многих сферах деятельности.
Как и любая программа, наша программа должна впоследствии улучшаться, с тем, чтобы обеспечивать более комфортную работу с документами Word, а, затем, распространиться на весь пакет MS Office, а также, возможно и на упомянутый в работе комплекс 1С-Предприятие.
1999-2000: макровирусы свирепствуют. Сайт http://www.polynom.rzn.ru/
Е. Касперский, Компьютерные вирусы.
Лицензия на будущее? (Curious Basic – 3). Сайт http://www.izcity.com/
Н.Н.Безруков, Компьютерная вирусология. Киев, 1991
Сайт http://sbvc.net
Сайт http://vx.netlux.org
Сайт http://www.antiviruspro.ru/
Сайт http://www.avp.ru
Эвангелос Петрусос Visual Basic 6.0: Руководство разработчика в двух томах: Издательская группа BHV, 2000г.