05.12.2013
С момента создания персональных компьютеров, доступных специалистам и широким слоям населения, начала свой отсчет история компьютерных вирусов. Оказалось, что персональные компьютеры и программы, распространяющиеся на дискетах, представляют собой ту самую «питательную среду», в которой возникают и беззаботно живут компьютерные вирусы. Мифы и легенды, возникающие вокруг способности компьютерных вирусов приникать везде и повсюду, окутывают эти вредоносные создания туманом непонятного и неизвестного.
К сожалению, даже опытные в своем деле системные администраторы (не говоря уже об обычных пользователях) не всегда точно представляют себе, что же такое компьютерные вирусы, как они проникают в компьютеры и компьютерные сети, и какой могут нанести вред. Вместе с тем, не понимая механизма функционирования и распространения вирусов, невозможно организовать эффективную антивирусную защиту. Даже самая лучшая антивирусная программа окажется бессильной, если она будет использована неправильно.
Краткий курс истории компьютерных вирусов
Что же такое компьютерный вирус? Наиболее общее определение компьютерного вируса можно дать как самораспространяющийся в информационной среде компьютеров программный код. Он может внедряться в исполняемые и командные файлы программ, распространяться через загрузочные секторы дискет и жестких дисков, документы офисных приложений, через электронную почту, Web-сайты, а также и по другим электронным каналам.
Проникнув в компьютерную систему, вирус может ограничиться безобидными визуальными или звуковыми эффектами, а может вызвать потерю или искажение данных, а также утечку личной и конфиденциальной информации. В худшем случае компьютерная система, пораженная вирусом, может оказаться под полным контролем злоумышленника.
Сегодня люди доверяют компьютерам решение многих критических задач. Поэтому выход из строя компьютерных систем может иметь весьма и весьма тяжелые последствия, вплоть до человеческих жертв (представьте себе вирус в компьютерных системах аэродромных служб). Об этом не следует забывать разработчикам информационных компьютерных систем и системным администраторам.
На сегодняшний день известны десятки тысяч различных вирусов. Несмотря на такое изобилие, существует довольно ограниченное количество типов вирусов, отличающихся друг от друга механизмом распространения и принципом действия. Есть и комбинированные вирусы, которые можно отнести одновременно к нескольким различным типам. Мы расскажем о различных типах вирусов, придерживаясь по возможности хронологического порядка их появления.
Файловые вирусы Исторически файловые вирусы появились раньше вирусов других типов, и первоначально распространялись в среде операционной системы MS-DOS. Внедряясь в тело файлов программ COM и EXE, вирусы изменяют их таким образом, что при запуске управление передается не зараженной программе, а вирусу. Вирус может записать свой код в конец, начало или середину файла. Вирус может также разделить свой код на блоки, поместив их в разных местах зараженной программы.
Получив управление, вирус может заразить другие программы, внедриться в оперативную память компьютера и выполнить другие вредоносные функции. Далее вирус передает управление зараженной программе, и та исполняется обычным образом. В результате пользователь, запускающий программу, и не подозревает, что она «больна».
Заметим, что файловые вирусы могут заражать не только программы 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. Исходные записи BR или MBR при этом запись обычно не пропадают (хотя так бывает не всегда). Вирус копирует их в один из свободных секторов диска.
Таким образом, вирус получает управление сразу после завершения процедуры POST. Затем он, как правило, действует по стандартному алгоритму. Вирус копирует себя в конец оперативной памяти, уменьшая при этом ее доступный объем. После этого он перехватывает несколько функций BIOS, так что обращение к ним передает управление вирусу. В конце процедуры заражения вирус загружает в оперативную память компьютера настоящий загрузочный сектор и передает ему управление. Далее компьютер загружается как обычно, но вирус уже находится в памяти и может контролировать работу всех программ и драйверов.
Комбинированные вирусы Очень часто встречаются комбинированные вирусы, объединяющие свойства файловых и загрузочных вирусов.
В качестве примера можно привести широко распространенный в прошлом файлово-загрузочный вирус OneHalf. Проникая в компьютер с операционной системой MS-DOS, этот вирус заражает главную загрузочную запись. Во время загрузки компьютера вирус постепенно шифрует секторы жесткого диска, начиная с самых последних секторов. Когда резидентный модуль вируса находится в памяти, он контролирует все обращения к зашифрованным секторам и расшифровывает их, так что все программное обеспечение компьютера работает нормально. Если OneHalf просто удалить из оперативной памяти и загрузочного сектора, то станет невозможно правильно прочитать информацию, записанную в зашифрованных секторах диска.
Когда вирус зашифрует половину жесткого диска, он отображает на экране надпись:
Dis is one half. Press any key to continue ...
После этого вирус ожидает, когда пользователь нажмет на какую-либо клавишу и продолжает свою работу.
Вирус OneHalf использует различные механизмы для своей маскировки. Он является стелс-вирусом и использует при распространении полиморфные алгоритмы. Обнаружение и удаление вируса OneHalf — достаточно сложная задача, доступная далеко не всем антивирусным программам.
Вирусы-спутники Как известно, в операционных системах MS-DOS, и Microsoft Windows различных версий существуют три типа файлов, которые пользователь может запустить на выполнение. Это командные или пакетные файлы BAT, а также исполнимые файлы COM и EXE. При этом в одном каталоге могут одновременно находиться несколько выполнимых файлов, имеющих одинаковое имя, но разное расширение имени.
Когда пользователь запускает программу и то вводит ее имя в системном приглашении операционной системы, то он обычно не указывает расширение файла. Какой же файл будет выполнен, если в каталоге имеется несколько программ с одинаковым именем, но разным расширением имени?
Оказывается, в этом случае запустится файл COM. Если в текущем каталоге или в каталогах, указанных в переменной среды PATH, существуют только файлы EXE и BAT, то выполняться будет файл EXE.
Когда вирус-спутник заражает файл EXE или BAT, он создает в этом же каталоге еще один файл с таким же именем, но с расширением имени COM. Вирус записывает себя в этот COM-файл. Таким образом, при запуске программы первым получит управление вирус-спутник, который затем может запустить эту программу, но уже под своим контролем.
Вирусы в пакетных файлах Существует несколько вирусов, способных заражать пакетные файлы BAT. Для этого ими используется весьма изощренный способ. Мы рассмотрим его на примере вируса BAT.Batman. При заражении пакетного файла в его начало вставляется текст следующего вида:
@ECHO OFF REM [...] copy %0 b.com>nul b.com del b.com rem [...]
В квадратных скобках [...] здесь схематично показано расположение байт, которые являются процессорными инструкциями или данными вируса. Команда @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 компьютеров, подключенных к этой сети.
Очень сложно узнать, является ли программа троянской и заложена ли в нее логическая бомба. Программист имеет полную власть над своим детищем. Изучение сомнительной программы или системы может занять очень много времени и потребовать значительных финансовых затрат. Поэтому мы не рекомендуем обмениваться программным обеспечением со своими знакомыми и приобретать незаконные копии фирменного программного обеспечения. В любую из этих программ могут быть встроены дополнительные вредоносные функции. Их активация может привести к нарушению работы компьютерной системы.
|