Что нужно знать о компьютерных вирусах (с) Александр Фролов, Григорий Фролов, 2002 alexandre@frolov.pp.ru; http://www.frolov.pp.ru, http://www.datarecovery.ru
С момента создания персональных компьютеров, доступных специалистам и широким слоям населения, начала свой отсчет история компьютерных вирусов. Оказалось, что персональные компьютеры и программы, распространяющиеся на дискетах, представляют собой ту самую «питательную среду», в которой возникают и беззаботно живут компьютерные вирусы. Мифы и легенды, возникающие вокруг способности компьютерных вирусов приникать везде и повсюду, окутывают эти вредоносные создания туманом непонятного и неизвестного. К сожалению, даже опытные в своем деле системные администраторы (не говоря уже об обычных пользователях) не всегда точно представляют себе, что же такое компьютерные вирусы, как они проникают в компьютеры и компьютерные сети, и какой могут нанести вред. Вместе с тем, не понимая механизма функционирования и распространения вирусов, невозможно организовать эффективную антивирусную защиту. Даже самая лучшая антивирусная программа окажется бессильной, если она будет использована неправильно. Краткий курс истории компьютерных вирусовЧто же такое компьютерный вирус? Наиболее общее определение компьютерного вируса можно дать как самораспространяющийся в информационной среде компьютеров программный код. Он может внедряться в исполняемые и командные файлы программ, распространяться через загрузочные секторы дискет и жестких дисков, документы офисных приложений, через электронную почту, Web-сайты, а также и по другим электронным каналам. Проникнув в компьютерную систему, вирус может ограничиться безобидными визуальными или звуковыми эффектами, а может вызвать потерю или искажение данных, а также утечку личной и конфиденциальной информации. В худшем случае компьютерная система, пораженная вирусом, может оказаться под полным контролем злоумышленника. Сегодня люди доверяют компьютерам решение многих критических задач. Поэтому выход из строя компьютерных систем может иметь весьма и весьма тяжелые последствия, вплоть до человеческих жертв (представьте себе вирус в компьютерных системах аэродромных служб). Об этом не следует забывать разработчикам информационных компьютерных систем и системным администраторам. На сегодняшний день известны десятки тысяч различных вирусов. Несмотря на такое изобилие, существует довольно ограниченное количество типов вирусов, отличающихся друг от друга механизмом распространения и принципом действия. Есть и комбинированные вирусы, которые можно отнести одновременно к нескольким различным типам. Мы расскажем о различных типах вирусов, придерживаясь по возможности хронологического порядка их появления. Файловые вирусыИсторически файловые вирусы появились раньше вирусов других типов, и первоначально распространялись в среде операционной системы MS-DOS. Внедряясь в тело файлов программ COM и EXE, вирусы изменяют их таким образом, что при запуске управление передается не зараженной программе, а вирусу. Вирус может записать свой код в конец, начало или середину файла (рис. 1). Вирус может также разделить свой код на блоки, поместив их в разных местах зараженной программы. Рис. 1. Вирус в файле MOUSE.COM Получив управление, вирус может заразить другие программы, внедриться в оперативную память компьютера и выполнить другие вредоносные функции. Далее вирус передает управление зараженной программе, и та исполняется обычным образом. В результате пользователь, запускающий программу, и не подозревает, что она «больна». Заметим, что файловые вирусы могут заражать не только программы COM и EXE, но и программные файлы других типов — оверлеи MS-DOS (OVL, OVI, OVR и другие), драйверы SYS, библиотеки динамической компоновки DLL, а также любые файлы с программным кодом. Разработаны файловые вирусы не только для MS-DOS, но и для других ОС, таких как Microsoft Windows, Linux, IBM OS/2. Однако подавляющее большинство вирусов данного типа обитает именно в среде ОС MS-DOS и Microsoft Windows. Во времена MS-DOS файловые вирусы жили припеваючи благодаря свободному обмену программами, игровыми и деловыми. В те времена файлы программ имели относительно небольшой размер и распространялись на дискетах. Зараженную программу можно было также случайно загрузить с электронной доски объявлений BBS или из Интернета. А вместе с этими программами распространялись и файловые вирусы. Современные программы занимают немалый объем и распространяются, как правило, на компакт-дисках. Обмен программами на дискетах уже давно ушел в прошлое. Устанавливая программу с лицензионного компакт-диска, Вы обычно не рискуете заразить свой компьютер вирусом. Другое дело — пиратские компакт-диски. Здесь ни за что ручаться нельзя (хотя нам известны примеры распространения вирусов и на лицензионных компакт-дисках). В результате сегодня файловые вирусы уступили пальму первенства по популярности вирусам других типов, о которых мы еще расскажем. Загрузочные вирусыЗагрузочные вирусы получают управление на этапе инициализации компьютера, еще до начала загрузки операционной системы. Чтобы понять, как они работают, нужно вспомнить последовательность инициализации компьютера и загрузки операционной системы. Сразу после включения питания компьютера начинает работать процедура проверки POST (Power On Self Test), записанная в BIOS. В ходе проверки определяется конфигурация компьютера и проверяется работоспособность основных его подсистем. Затем процедура POST проверяет, вставлена ли дискета в дисковод A:. Если дискета вставлена, то дальнейшая загрузка операционной системы происходит с дискеты. В противном случае загрузка выполняется с жесткого диска. При загрузке с дискеты процедура POST считывает с нее загрузочную запись (Boot Record, BR) в оперативную память. Эта запись всегда расположена в самом первом секторе дискеты и представляет собой маленькую программу. Кроме программы BR содержит структуру данных, определяющую формат дискеты и некоторые другие характеристики. Затем процедура POST передает управление BR. Получив управление, BR приступает непосредственно к загрузке операционной системы. При загрузке с жесткого диска процедура POST считывает главную загрузочную запись (Master Boot Record, MBR) и записывает ее в оперативную память компьютера. Эта запись содержит программу первоначальной загрузки и таблицу разделов, в которой описаны все разделы жесткого диска. Она хранится в самом первом секторе жесткого диска. После чтения MBR управление передается только что прочитанной с диска программе первоначальной загрузки. Она анализирует содержимое таблицы разделов, выбирает активный раздел и считывает загрузочную запись BR активного раздела. Эта запись аналогична записи BR системной дискеты и выполняет те же самые функции. Теперь о том, как «работает» загрузочный вирус. При заражении дискеты или жесткого диска компьютера загрузочный вирус заменяет загрузочную запись BR или главную загрузочную запись MBR (рис. 2). Исходные записи BR или MBR при этом запись обычно не пропадают (хотя так бывает не всегда). Вирус копирует их в один из свободных секторов диска. Рис. 2. Вирус в загрузочной записи Таким образом, вирус получает управление сразу после завершения процедуры POST. Затем он, как правило, действует по стандартному алгоритму. Вирус копирует себя в конец оперативной памяти, уменьшая при этом ее доступный объем. После этого он перехватывает несколько функций BIOS, так что обращение к ним передает управление вирусу. В конце процедуры заражения вирус загружает в оперативную память компьютера настоящий загрузочный сектор и передает ему управление. Далее компьютер загружается как обычно, но вирус уже находится в памяти и может контролировать работу всех программ и драйверов. Комбинированные вирусыОчень часто встречаются комбинированные вирусы, объединяющие свойства файловых и загрузочных вирусов. В качестве примера можно привести широко распространенный в прошлом файлово-загрузочный вирус OneHalf. Проникая в компьютер с операционной системой MS-DOS, этот вирус заражает главную загрузочную запись. Во время загрузки компьютера вирус постепенно шифрует секторы жесткого диска, начиная с самых последних секторов. Когда резидентный модуль вируса находится в памяти, он контролирует все обращения к зашифрованным секторам и расшифровывает их, так что все программное обеспечение компьютера работает нормально. Если OneHalf просто удалить из оперативной памяти и загрузочного сектора, то станет невозможно правильно прочитать информацию, записанную в зашифрованных секторах диска. Когда вирус зашифрует половину жесткого диска, он отображает на экране надпись: Dis is one half. После этого вирус ожидает, когда пользователь нажмет на какую-либо клавишу и продолжает свою работу Вирус OneHalf использует различные механизмы для своей маскировки. Он является стелс-вирусом и использует при распространении полиморфные алгоритмы. Обнаружение и удаление вируса OneHalf — достаточно сложная задача, доступная далеко не всем антивирусным программам. Вирусы-спутникиКак известно, в операционных системах MS-DOS, и Microsoft Windows различных версий существуют три типа файлов, которые пользователь может запустить на выполнение. Это командные или пакетные файлы BAT, а также исполнимые файлы COM и EXE. При этом в одном каталоге могут одновременно находиться несколько выполнимых файлов, имеющих одинаковое имя, но разное расширение имени. Когда пользователь запускает программу и то вводит ее имя в системном приглашении операционной системы, то он обычно не указывает расширение файла. Какой же файл будет выполнен, если в каталоге имеется несколько программ с одинаковым именем, но разным расширением имени? Оказывается, в этом случае запустится файл COM. Если в текущем каталоге или в каталогах, указанных в переменной среды PATH, существуют только файлы EXE и BAT, то выполняться будет файл EXE. Когда вирус-спутник заражает файл EXE или BAT, он создает в этом же каталоге еще один файл с таким же именем, но с расширением имени COM. Вирус записывает себя в этот COM-файл. Таким образом, при запуске программы первым получит управление вирус-спутник, который затем может запустить эту программу, но уже под своим контролем. Вирусы в пакетных файлахСуществует несколько вирусов, способных заражать пакетные файлы BAT. Для этого ими используется весьма изощренный способ. Мы рассмотрим его на примере вируса BAT.Batman. При заражении пакетного файла в его начало вставляется текст следующего вида: @ECHO OFF В квадратных скобках [...] здесь схематично показано расположение байт, которые являются процессорными инструкциями или данными вируса. Команда @ECHO OFF отключает вывод на экран названий выполняемых команд. Строка, начинающаяся с команды REM, является комментарием и никак не интерпретируется. Команда copy %0 b.com>nul копирует зараженный командный файл в файл B.COM. Затем этот файл запускается и удаляется с диска командой del b.com. Самое интересное, что файл B.COM, созданный вирусом, до единого байта совпадает с зараженным командным файлом. Оказывается, что если интерпретировать первые две строки зараженного BAT-файла как программу, она будет состоять из команд центрального процессора, которые фактически ничего не делают. Центральный процессор выполняет эти команды, а затем начинает выполнять настоящий код вируса, записанный после оператора комментария REM. Получив управление, вирус перехватывает прерывания ОС и активизируется. В процессе распространения вирус следит за записью данных в файлы. Если первая строка, записываемая в файл, содержит команду @echo, тогда вирус считает, что записывается командный файл и заражает его. Шифрующиеся и полиморфные вирусыЧтобы затруднить обнаружение, некоторые вирусы шифруют свой код. Каждый раз, когда вирус заражает новую программу, он зашифровывает собственный код, используя новый ключ. В результате два экземпляра такого вируса могут значительно отличаться друг от друга, даже иметь разную длину. Шифрование кода вируса значительно усложняет процесс его исследования. Обычные программы не смогут дизассемблировать такой вирус. Естественно, вирус способен работать только в том случае, если исполняемый код расшифрован. Когда запускается зараженная программа (или начинается загрузка с зараженной загрузочной записи BR) и вирус получает управление, он должен расшифровать свой код. Для того чтобы затруднить обнаружение вируса, для шифрования применяются не только разные ключи, но и разные процедуры шифрования. Два экземпляра таких вирусов не имеют ни одной совпадающей последовательности кода. Такие вирусы, которые могут полностью изменять свой код, получили название полиморфных вирусов. Стелс-вирусыСтелс-вирусы пытаются скрыть свое присутствие в компьютере. Они имеют резидентный модуль, постоянно находящийся в оперативной памяти компьютера. Этот модуль устанавливается в момент запуска зараженной программы или при загрузке с диска, зараженного загрузочным вирусом. Резидентный модуль вируса перехватывает обращения к дисковой подсистеме компьютера. Если операционная система или другая программа считывают файл зараженной программы, то вирус подставляет настоящий, незараженный, файл программы. Для этого резидентный модуль вируса может временно удалять вирус из зараженного файла. После окончания работы с файлом он заражается снова. Загрузочные стелс-вирусы действуют по такой же схеме. Когда какая-либо программа считывает данные из загрузочного сектора, вместо зараженного сектора подставляется настоящий загрузочный сектор. Маскировка стелс-вирусов срабатывает только в том случае, если в оперативной памяти компьютера находится резидентный модуль вируса. Если компьютер загружается с «чистой», не зараженной системной дискеты, у вируса нет шансов получить управление и поэтому стелс-механизм не работает. Макрокомандные вирусыДо сих пор мы рассказывали о вирусах, обитающих в исполняемых файлах программ и загрузочных секторах дисков. Широкое распространение пакета офисных программ Microsoft Office вызвало лавинообразное появление вирусов нового типа, распространяющихся не с программами, а с файлами документов. На первый взгляд это может показаться невозможным — в самом деле, где спрятаться вирусам в текстовых документах Microsoft Word или в ячейках электронных таблиц Microsoft Excel? Однако на самом деле файлы документов Microsoft Office могут содержать в себе небольшие программы для обработки этих документов, составленные на языке программирования Visual Basic for Applications. Это относится не только к документам Word и Excel, но и к базам данных Access, а также файлам презентаций Power Point. Такие программы создаются с использованием макрокоманд, поэтому вирусы, живущие в офисных документах, называются макрокомандными. Как распространяются макрокомандные вирусы? Вместе с файлами документов. Пользователи обмениваются файлами через дискеты, сетевые каталоги файл-серверов корпоративной интрасети, через электронную почту и по другим каналам. Чтобы заразить компьютер макрокомандным вирусом, достаточно просто открыть файл документа в соответствующем офисном приложении — и дело сделано! Сейчас макрокомандные вирусы очень распространены, чему в немалой степени способствует популярность Microsoft Office. Они могут принести вреда не меньше, а в некоторых случаях даже больше, чем «обычные» вирусы, заражающие выполнимые файлы и загрузочные секторы дисков и дискет. Наибольшая опасность макрокомандных вирусов, на наш взгляд, заключается в том, что они могут изменять зараженные документы, оставаясь незамеченными долгое время. Вредоносные программы других типовК сожалению, не только вирусы мешают нормальной работе компьютера и его программному обеспечению. Принято выделять еще, по крайней мере, три вида вредоносных программ. К ним относятся троянские программы, логические бомбы и программы-черви. Четкого разделения на эти виды не существует, троянские программы могут содержать вирусы, в вирусы могут быть встроены логические бомбы и так далее. Троянские программыИзвестен греческий миф о том, как была завоевана неприступная Троя. Греки оставили ночью у ворот Трои деревянного коня, внутри которого притаились солдаты. Когда горожане, движимые любопытством, втащили коня за стены города, солдаты вырвались наружу и завоевали город. Троянские программы действуют подобным образом. Их основное назначение совершенно безобидное или даже полезное. Но когда пользователь запишет программу в свой компьютер и запустит ее, она может незаметно выполнять другие, чаще всего, вредоносные функции. Чаще всего троянские программы используются для первоначального распространения вирусов, для получения удаленного доступа к компьютеру через Интернет, для кражи данных или их уничтожения. После того как троянская программа выполнит свою скрытую функцию, она может самоуничтожиться, чтобы затруднить обнаружение причины нарушений в работе системы. Логические бомбыЛогической бомбой называется программа или ее отдельные модули, которые при определенных условиях выполняют вредоносные действия. Логическая бомба может сработать по достижении определенной даты, когда в базе данных появится или исчезнет запись и так далее. Условие, при котором срабатывает логическая бомба, определяется ее создателем. Логическая бомба может быть встроена в вирусы, троянские программы, и даже в обыкновенное программное обеспечение. Программы-червиПрограммы-черви нацелены их авторами на выполнение определенной функции. Они могут быть ориентированы, например, на проникновение в систему и модификацию некоторых данных. Можно создать программу-червь, подсматривающую пароль для доступа к банковской системе и изменяющую базу данных таким образом, чтобы на счет программиста была переведена большая сумма денег. Широко известная программа-червь была написана студентом Корнельского (Cornell) университета Робертом Моррисом (Robert Morris). Червь был запущен в Интернет второго ноября 1988 года. За пять часов червь Морриса смог проникнуть на более чем 6000 компьютеров, подключенных к этой сети. Очень сложно узнать, является ли программа троянской и заложена ли в нее логическая бомба. Программист имеет полную власть над своим детищем. Изучение сомнительной программы или системы может занять очень много времени и потребовать значительных финансовых затрат. Поэтому мы не рекомендуем обмениваться программным обеспечением со своими знакомыми и приобретать незаконные копии фирменного программного обеспечения. В любую из этих программ могут быть встроены дополнительные вредоносные функции. Их активация может привести к нарушению работы компьютерной системы. Сложно ли создать компьютерный вирусВ среде хакеров бытует мнение о том, что для создания компьютерного вируса необходимо обладать какими-то необыкновенными способностями и талантами. Возможно, что создание «с нуля» шифрующегося полиморфного вируса и в самом деле доступно не каждому, однако и для этого не надо быть гением. Подавляющее большинство вирусов пишут посредственные программисты, которые, по всей видимости, не могут найти себе более достойное занятие. Современные антивирусные программы без особого труда расправляются с их «шедеврами». Более того, можно создавать вирусы, не вникая в детали их внутреннего устройства и даже без программирования. Существуют десятки специальных программ, представляющих собой ни что иное, как настоящие лаборатории компьютерных вирусов! Обладая дружественным (если это слово здесь уместно) пользовательским интерфейсом (рис. 3), такие программы позволяют злоумышленнику при помощи меню, списков и галочек задать все атрибуты создаваемого вируса — его тип, способ распространения и маскировки, а также вредоносное воздействие. Далее программа автоматически генерирует зараженный файл, готовый к распространению! Рис. 3. Генератор
вирусов Virus Creation В результате каждый день появляется значительное количество новых вирусов, некоторые из которых могут представлять собой серьезную опасность. Надо, однако, заметить, что даже простейшие вирусы, написанные дилетантами или созданные автоматическими генераторами вирусов, могут вызвать потерю данных и доставить много других неприятностей. Поэтому никогда не стоит пренебрегать средствами защиты от компьютерных вирусов. Основные каналы распространения вирусовДля того чтобы разработать эффективную систему антивирусной защиты компьютеров и корпоративных интрасетей, необходимо четко представлять себе, с какой стороны грозит опасность. Для своего распространения вирусы находят самые разные каналы, причем к старым способам распространения постоянно добавляются все новые и новые. Классические способы распространенияКак мы уже говорили, первые файловые вирусы распространяются вместе с файлами программ в результате обмена дискетами и программами, загрузки программ из сетевых каталогов, Web- или FTP-серверов. Вы можете приобрести вирус на компакт-диске с пиратским ПО, взять его вместе с игрой у своего друга или коллеги по работе. Загрузочные вирусы попадают на компьютер, когда пользователь забывает зараженную дискету в дисководе, а затем перезагружает ОС. Надо сказать, что загрузочный вирус может также быть занесен на компьютер вирусами других типов. Макрокомандные вирусы распространяются аналогичным образом в результате обмена пользователей зараженными файлами офисных документов, таких как файлы Microsoft Word, Microsoft Excel, Microsoft Access и других. Если зараженный компьютер подключен к локальной сети, вирус может легко «перепрыгнуть» на файл-сервер, а оттуда через каталоги, доступные для записи, — на все остальные компьютеры сети. Так начинается вирусная эпидемия. Системный администратор должен помнить, что вирус имеет в сети такие же права, что и пользователь, на компьютер которого этот вирус пробрался. Поэтому он может попасть во все сетевые каталоги, доступные пользователю. А если вирус завелся на рабочей станции администратора сети — надо ждать беды… Вирус по почтеСегодня электронная почта проникла во все сферы человеческой деятельности — от личной переписки до деловой корреспонденции. Как Вы знаете, вместе с сообщением электронного письма может передаваться практически любой файл, а вместе с файлом — и компьютерный вирус. Злоумышленник может прислать Вам исполнимый модуль вирусной или троянской программы, вредоносный программный сценарий Visual Basic Script, зараженную или троянскую программу сохранения экрана монитора — словом, любой опасный программный код. Разумеется, электронная почта служит и каналом распространения для макрокомандных вирусов, так как вместе с сообщениями часто отправляются офисные документы. Для маскировки распространители вирусов часто пользуются тем фактом, что по умолчанию диалоговая оболочка Microsoft Windows не отображает расширения зарегистрированных файлов. При этом файл с именем, например, FreeCreditCard.txt.exe будет показан пользователю как FreeCreditCard.txt. Если пользователь попытается открыть такой файл в надежде найти в нем интересную информацию, будет запущена на выполнение вредоносная программа. Более того, из-за различных ошибок, присутствующих в программном обеспечении почтовых клиентов, иногда файл вложения может запуститься автоматически! В качестве примера вредоносной программы, вызвавшей недавно целую эпидемию, и распространяющей по почте, можно привести вирус-червь W32/Klez. Он может проникнуть на компьютер благодаря ошибке в браузере Microsoft Internet Explorer версии 5.01 или 5.5 без пакета обновлений SP2. Этот вирус заменяет заголовок From в сообщении найденным на компьютере-жертве. Далее он пытается деактивировать антивирусные программы, запущенные на компьютере. Этот вирус способен распространяться по локальной сети через сетевые каталоги общего доступа, записывать себя в архивы типа RAR. Вирус-червь W32/Klez рассылает по Интернету документы, хранящиеся на дисках компьютера, и потому может вызвать утечку конфиденциальной информации. Сообщения электронной почты часто приходят в виде документов HTML. Следует заметить, что такие документы могут включать в себя ссылки на элементы управления ActiveX, аплеты Java и другие активные компоненты. Из-за ошибок в программных клиентах злоумышленники могут воспользоваться такими активными компонентами для внедрения вирусов и троянских программ на Ваш компьютер. При получении сообщения в формате HTML почтовый клиент показывает его содержимое в своем окне. Если сообщение содержит вредоносные активные компоненты, они сразу же запускаются и делают свое черное дело. Чаще всего таким способом распространяются троянские программы и черви. Троянские Web-сайтыДаже во время простого серфинга сайтов Интернета есть риск получить вирусное заражение или «подцепить» троянскую программу. Ошибки в браузерах зачастую приводят к тому, что вредоносные активные компоненты троянских Web-сайтов (элементы управления ActiveX или аплеты Java) могут внедрить на Ваш компьютер вирус или другую вредоносную программу. Здесь используется тот же самый механизм распространения вирусов, что и при получении сообщений электронной почты в формате HTML. Но заражение происходит незаметно — активные компоненты Web-страниц могут не иметь пользовательского интерфейса и внешне никак себя не проявлять. Вы можете получить приглашение посетить троянский сайт в обычном электронном письме. Заинтересовавшись описанием сайта и щелкнув ссылку, расположенную в теле электронного сообщения, легко оказаться в опасном месте всемирной паутины. Вирусы в системах документооборотаДокументы, хранящиеся в базах данных таких систем документооборота, как Lotus Notes и Microsoft Exchange, тоже могут содержать вирусы, а точнее говоря, вредоносные макрокоманды. Они могут активизироваться при выполнении каких-либо действий над документом (например, когда пользователь щелкает кнопку). Так как эти вирусы «живут» не в файлах, а в записях баз данных, для защиты от них необходимо использовать специализированные антивирусные программы. Новые и экзотические вирусыПо мере развития компьютерных технологий совершенствуются и компьютерные вирусы, приспосабливаясь к новым для себя сферам обитания. Новый вирус W32/Perrun, сообщение о котором есть на сайте компании Network Associates (http://www.nai.com), способен распространяться… через файлы графических изображений формата JPEG! Сразу после запуска вирус W32/Perrun ищет файлы с расширением имени JPG и дописывает к ним свой код. После этого зараженные файлы JPEG будут содержать не только изображения, но и код вируса. Надо сказать, что данный вирус не опасен и требует для своего распространения отдельной программы. Среди новых «достижений» создателей вредоносных программ заслуживает упоминания вирус Palm.Phage. Он заражает приложения «наладонных» компьютеров PalmPilot, перезаписывая файлы этих приложений своим кодом. Появление таких вирусов, как W32/Perrun и Palm.Phage, свидетельствует о том, что в любой момент может родиться компьютерный вирус, троянская программа или червь, нового, неизвестного ранее типа, или известного типа, но нацеленного на новое компьютерное оборудование. Новые вирусы могут использовать неизвестные или несуществующие ранее каналы распространения, а также новые технологии внедрения в компьютерные системы. В следующей нашей статье, посвященной проблемам антивирусной защиты, мы рассмотрим технологии, методики и антивирусные средства, с помощью которых можно защититься не только от известных, но в ряде случаев и от новых, доселе не исследованных вредоносных компьютерных программ. |