Лекция
доцента кафедры ИВТ Гродненского госуниверситета
канд. техн. наук Ливак Елены Николаевны
В лекции
- Внедрение вирусов в загрузочные секторы
- Файловые вирусы
- Файлово-загрузочные вирусы
Внедрение вируса в загрузочный сектор
Загрузочный вирус записывает себя в первый сектор диска, а его содержимое переписывает в другой сектор, или, другими словами, оригинальный загрузочный сектор диска вирус переносит в какой-либо другой сектор диска, а себя записывает на его место.
Если длина вируса больше длины одного сектора, то в первый сектор помещается начало вируса, а его продолжение - в другие секторы диска.
Существуют вирусы, которые не сохраняют старое содержимое загрузочного сектора, а содержат в своем теле стандартный загрузчик. При заражении они записываются поверх оригинального загрузочного сектора без его сохранения.
Все загрузочные вирусы внедряются в систему при загрузке с инфицированного диска.
Так как вместо загрузочной записи или главной загрузочной записи у такого диска находится код вируса, то он получает управление первым после завершения процедуры POST и выполняет свои действия.
Существует несколько способов размещения на диске первоначального загрузочного сектора и продолжения вируса:
1) в секторы свободных кластеров логического диска;
2) в неиспользуемые или редко используемые секторы;
3) в секторы, расположенные за пределами диска.
Если вирус размещает оригинальный загрузочный сектор в свободных секторах диска, он анализирует таблицу размещения файлов, выбирает свободные кластеры диска, записывает в них свою информацию, а эти кластеры, как правило, помечает как сбойный кластер (bad cluster). Эти кластеры называются псевдосбойными кластерами.
Неиспользуемым или редко используемым сектором на винчестере является один из секторов (обычно такие есть), расположенных между MBR и первым Boot-сектором.
На дискете неиспользуемый или редко используемый сектор выбирается из последних секторов корневого каталога.
Реже используется метод сохранения продолжения вируса за пределами диска (метод нестандартного форматирования). Он заключается в том, что вирус форматирует дополнительную дорожку и записывает на нее часть своего кода и настоящий загрузочный сектор. Информация с этой дополнительной дорожки не может быть считана или записана обычными средствами операционной системы.
Как работает загрузочный вирус?
Итак, вирус получает управление сразу после завершения процедуры POST. Теперь начинают выполняться инструкции вируса. Они реализовывают, как правило, стандартный алгоритм:
1) вирус уменьшает объем свободной памяти;
2) считывает с диска свое продолжение (если оно есть);
3) переносит себя в другую область памяти (например, в самые старшие адреса памяти);
4) устанавливает необходимые ему векторы прерываний (чаще 13h - работа с дисками). Теперь обращение операционной системы к этим векторам прерываний передает управление на вирус;
5) совершает, если предусмотрены, дополнительные действия;
6) копирует в память оригинальный Boot-сектор и передает на него управление.
7) Далее компьютер загружается как обычно, но вирус уже находится в памяти и может контролировать его работу. Вирус перехватывает обращения операционной системы к дискам и инфицирует их, совершает деструктивные действия или вызывает спецэффекты.
Какие повреждения могут вызывать загрузочные вирусы?
Вкратце рассмотрим повреждения, не связанные с деструктивными функциями загрузочных вирусов, а связанные с внедрением такого вируса. Эти повреждения могут произойти в результате ошибок вируса.
Заражая MBR, который, напомним, состоит из программы начальной загрузки и таблицы разделов диска (Disk Partition Table), загрузочные вирусы часто записывают свое тело вместо программы начальной загрузки. Поэтому любая ошибка вируса может привести к потере этой программы. Очевидно, что без правильной программы первоначальной загрузки невозможно произвести загрузку компьютера.
При повреждении таблицы разделов диска некоторые или все логические диски будут недоступны.
Вирус может внедряться в загрузочную запись (Boot Record) логического диска. Напомним, что там располагается программа начальной загрузки операционной системы, расположенной на данном диске, а также блок параметров BIOS, который называется BPB (BIOS Parameter Block). Блок BPB содержит важную информацию о логическом диске, например, размер кластера. Вирус может записать свое тело на место загрузочной записи и повредить блок BPB. А отсюда вытекают невозможность работы или ошибки при работе с данным логическим диском.
Ошибка вируса при внедрении в загрузочный сектор дискеты чаще приводит к недоступности информации, записанной на данной дискете.
Подчеркнем, что чаще всего для пользователя во всех только что описанных случаях теряется только доступ к информации, сама информация остается на диске и подлежит восстановлению. Только в результате грубых ошибок вируса или специального уничтожения данных вирусом происходит полная потеря информации.
Повреждения могут произойти и в случае заражения компьютера несколькими загрузочными вирусами.
Что происходит в случае заражения несколькими загрузочными вирусами?
Обычно перед заражением диска загрузочные вирусы проверяют диск на свое наличие. Поэтому повторное заражение одним и тем же вирусом не происходит. Но что если диск заражен уже другим загрузочным вирусом?
Новый вирус определит, что он не заразил диск ранее, и будет внедряться в загрузочный сектор. Если новый вирус сохраняет настоящий загрузочный сектор в том же самом месте, что и старый, получается, что на другое место вирус перенесет не загрузочную запись, а тело старого вируса! То есть исходная загрузочная запись потеряется, и компьютер зависнет во время загрузки со всеми вытекающими отсюда последствиями.
Такая же ситуация может получиться и в результате заражения по такой схеме. Первый вирус, потом второй, потом снова первый. В данном случае первый вирус заразит диск во второй раз, так как в результате заражения вторым вирусом он уже не сможет определить свое присутствие. В результате тоже может потеряться загрузочная запись, и компьютер зависнет во время загрузки.
Заметим, что если вирусы используют для хранения оригинальных загрузочных секторов и своих продолжений различные секторы, они будут работать вместе! Первым получит управление вирус, заразивший диск последним. Он выполнит свою работу и загрузит второй вирус, который заразил диск раньше. Может получиться достаточно длинная цепочка из таких вирусов. В конце концов, последний из них загрузит настоящий загрузочный сектор. Но чем длиннее цепочка вирусов, тем дольше будет идти загрузка. То есть в любом случае, пользователь теряет хоть немного времени.
Как вирусы проникают в структуру файловой системы?
Есть очень немногочисленная особая группа вирусов, которые заражают файлы, не внедряя в них свой код явным образом. Но, тем не менее, мы относим их к файловым вирусам, так как объектами для них являются исполнимые файлы.
Эти вирусы используют изощренную технологию размножения, которая позволяет им распространяться с большой скоростью. Технология эта заключается в том, что вирусы этой группы (ее называют DIR-группой) вносят изменения в структуру файловой системы.
Например, вирус записывает свой код в один из кластеров заражаемой дискеты или логического диска, помечая при этом его в как конец файла, то есть последний в цепочке кластеров. Затем изменяет в описаниях исполняемых файлов в структурах каталогов номер первого кластера. Вместо истинного первого номера кластера, принадлежащего файлу, вирус вписывает номер кластера, содержащего его код. А оригинальный номер первого кластера записывает в неиспользуемое поле описания файла. То есть когда запускается на выполнение зараженный файл, операционная система находит только один (он помечен как последний) кластер, который содержит код вируса. Считывает вирус в оперативную память и передает ему управление. Вирус остается резидентным в оперативной памяти и перехватывает все обращения к диску. Он определяет настоящее расположение файла программы и загружает ее.
Какие файлы заражают вирусы?
Файловые вирусы - это самая большая группа вирусов. Они заражают любые исполняемые файлы.
1. Командные файлы. Эти файлы имеют расширение имени BAT (batch - команда), поэтому часто называются просто BAT-файлами. Это файлы, содержащие последовательность команд операционной системы. С другой стороны, это обычные текстовые файлы.
2. Исполняемые файлы в формате COM. Эти файлы имеют расширение имени COM, поэтому их называют COM-файлами. СОМ- формат - это один из основных форматов исполняемых файлов. Размер СОМ-файла должен занимать не более 64 Кб. Они состоят из команд центрального процессора, то есть содержат машинные инструкции. Вместе с ними там могут находиться и данные: числовые константы, тексты и т.п.
3. Исполняемые файлы в формате EXE. Так как такие файлы имеют расширение имени EXE, их называют еще EXE-файлами. Они имеют более сложную структуру и, следовательно, имеют размер больший 64 Килобайт. Кроме процессорных команд и данных эти файлы содержат специальный заголовок, который находится в самом начале файла. Заголовок EXE- файла начинается специальной двухбайтовой меткой. Это два символа “MZ” или, реже “ZM”. По этой метке загрузчик и определяет файл как EXE-файл, независимо от расширения имени!
Заметим, что расширение имени может не соответствовать внутреннему формату файла. То есть файл, имеющий формат EXE, может иметь расширение имени COM, но при загрузке по специальному признаку файла (метке) загрузчик все равно распознает файл как EXE-файл.
EXE-программы содержат несколько сегментов: сегмент кода, сегмент данных и сегмент стека. Поэтому в заголовке EXE-файла также хранится таблица настройки, которую использует загрузчик для инициализации программы. Обычно заголовок имеет размер 512 байт, и значительная его часть не используется (содержит нули).
Итак, когда пользователь запускает EXE-файл на выполнение, операционная система загружает его в оперативную память, считывает информацию из заголовка EXE-файла и настраивает его в соответствии с таблицей настойки. Затем управление передается на точку входа, также содержащуюся в заголовке, т.е. на первую команду программы.
4. Исполняемые файлы в формате PE (Potable Executable). Такие файлы также имеют расширение имени EXE, однако внутренняя структура файла отлична от формата EXE. Подробнее см. дополнительный материал по курсу. Заметим только, что все исполняемые файлы Windows имеют такой формат.
5. Системные драйверы. Файлы драйверов имеют расширение SYS или BIN.
Это специальный вид программ. Драйверы запускаются только на этапе загрузки операционной системы, во время ее инициализации и интерпретации файла конфигурации.
6. Также могут быть инфицированы и файлы оверлеев, и динамически загружаемых библиотек. Это файлы, содержащие исполняемые двоичные коды, используемые основной программой по мере необходимости.
Как внедряются вирусы в COM- и EXE-файлы?
Файловые вирусы записывают свой код в исполняемый файл и изменяют его так, чтобы после запуска первым получил управление код вируса. Очевидно, что вирус может записать свой код в начало, середину или конец файла. Может также разделить свой код на несколько частей и разместить их в разных местах заражаемого файла.
Рассмотрим подробнее внедрение вируса в файл.
Внедрение вируса в начало файла.
Известны три способа внедрения вируса в начало файла.
1. Запись с перекрытием (overwriting). При заражении вирус записывает свои коды в начало файла, не сохраняя старого содержимого начала файла. Такие вирусы называют еще перекрывающими вирусами. Естественно, что при этом программа перестает работать и не восстанавливается. При запуске такой программы ничего не происходит, кроме того, что вирус заражает другой файл. Такие вирусы легко обнаруживаются и, следовательно, медленно распространяются. Это достаточно редкий способ, но очень простой. Чаще его используют “начинающие” авторы вирусов.
2. Запись в начало программы.
Вирус может записаться перед исходным кодом программы (prepending), просто сдвинув коды зараженной программы на число байт, равное длине вируса. Вирус создает в оперативной памяти свою копию, дописывает к ней заражаемый файл и сохраняет полученную конкатенацию на диск.
3. Вирус переписывает начало заражаемого файла в его конец, а сам копируется в освободившееся место. Начало заражаемого файла вирус может переписать и в любое другое место.
В подавляющем большинстве случаев внедрение вируса в начало файла происходит при заражении СОМ - файлов.
Внедрение вируса в середину файла
Все случаи внедрения вирусов в середину файла можно считать экзотическими, так как такой механизм реализовывает небольшое количество вирусов. Рассмотрим такие алгоритмы.
1) Вирус может быть скопирован в таблицу настройки адресов EXE-файла.
2) Вирус внедряется в область стека файла.
3) Вирус как бы “раздвигает” файл для себя.
4) По аналогии с внедрением вируса в начало файла, при котором переписывается содержимое начала файла в конец, возможен вариант, когда вирус записывается в середину файла, сохраняя при этом часть файла в его конец.
5) Достаточно сложный алгоритм компрессирования (сжатия) некоторых участков файлов. В результате при заражении не увеличивается длина файла.
Внедрение вируса в конец файла
У COM-файла изменяет первые три байта (иногда больше
а) либо на коды инструкции “Jmp адрес вируса” (это команда перехода на тело вируса);
б) либо на коды программы, передающей управление на тело вируса.
Оригинальные три байта начала файла вирус обязательно считывает и сохраняет.
У EXE-файла
а) модифицируется его заголовок. В заголовке изменяются
· значение стартового адреса
· значение длины выполняемого файла
· регистры - указатели на стек ( редко )
· контрольная сумма файла ( редко );
б) иногда EXE-файл переводится в формат COM и затем заражается как COM-файл.
Способ, при котором вирус дописывается в конец файла и изменяет у COM-файла
первые несколько байт, а у EXE-файла - несколько полей заголовка, иногда
называется стандартным способом заражения файлов.