Электронная библиотека книг Александра Фролова и Григория Фролова.
 
Библиотека
Братьев
Фроловых
Электронная библиотека книг Александра Фролова и Григория Фролова.
Библиотека системного программиста
Программирование на JAVA
ПК. Шаг за шагом
Другие книги
Восстановление данных
Антивирусная защита
Статьи для
программистов
Пользователю компьютера
[Назад] [Содержание]

Что такое компьютерные вирусы, и как они работают

Том 5, М.: Диалог-МИФИ, 1996, 256 стр.

7 ахиллесова пята операционной системы   1

Операционная система MS-DOS  1

Использование реального режима работы процессора  2

Изменение вирусами структуры памяти  2

Внесение изменений в файловую систему  4

Вирусы в загружаемых драйверах  6

Операционная система Microsoft Windows версии 3.1  7

Нелегкий груз совместимости  7

Отыщи всему начало…    7

Откуда не ждали  7

Операционная система Microsoft Windows 95  8

Операционная система IBM OS/2  8

Операционная система Microsoft Windows NT  8

Операционная система Novell NetWare  9

Литература  9

 

7 ахиллесова пята операционной системы

В этой главе мы попытаемся сделать анализ устойчивости различных операционных систем к “нашествию” вирусов, чтобы помочь системным  администраторам и обычным пользователям выбрать наиболее защищенную от вирусов операционную систему.

Не секрет, что надежность многих современных операционных систем оставляет желать лучшего. Это можно сказать и про устойчивость ко всякого рода внешним воздействиям, таким, например, как поптыки несанкционированного доступа или вирусные атаки. Причина этого лежит в неполном использовании возможности аппаратуры, в необходимости обеспечения совместимости новых операционных систем со старым программным обеспечением, а также, вероятно и в том, что при разработке операционных систем для персональных компьютеров вопросам защищенности не уделялось достаточно внимания.

Наиболее беззащитной является операционная система MS-DOS и все совместимые с ней, такие как Novell DOS, IBM DOS и т. д. Основная причина заключается в том, что эта операционная система использует реальный режим работы процессора и предоставляет запущенным программам полный и бесконтрольный доступ ко всем системным ресурсам компьютера (в том числе и к модулям самой операционной системы).

Операционная система Microsoft Windows версии 3.1 (а также Microsoft Windows for Workgroups версии 3.11) запускается из MS-DOS. Хотя она использует защищенный режим работы процессора, ее устойчивость к вирусным воздействиям также невысока.

С точки зрения полноты использования возможностей защищенного режима одно из первых мест принадлежит такой операционной системе, как IBM OS/2. Если системный администратор (или пользователь) запретит запуск в ее среде программ MS-DOS (а также приложений Windows), эта операционная система будет работать очень стабильно. Однако файловая система рабочей станции OS/2 может оказаться баззащитной перед нашествием вирусов. Тем не менее создание вируса для OS/2 - непростая задача. Возможно поэтому нигде в мире не наблюдается лавинообразного роста вирусов, ориентированных на OS/2, что говорит в пользу этой операционной системы.

Операционная система Microsoft Windows 95 может подвергнуться нападению со стороны вирусов, предназначенных для DOS, так как из соображений совместимости она предоставляет таким программам полный доступ к файловой системе и стартует из среды MS-DOS версии 7.0. Последний факт нигде особенно не афишируется, однако на диске C: по-прежнему существуют файлы AUTOEXEC.BAT и CONFIG.SYS, которые не изменили своего назначения. Следовательно, для вируса есть возможнсоть остаться резидентным в памяти до загрузки Windows 95.

Такая операционная система, как Novell NetWare, заслуживает всяческих похвал и потому широко распространена. Ее файловая система хорошо защищена и сама по себе может выдержать вирусную атаку. Однако вирус не обязательно будет пытаться обойти защиту Novell NetWare (что весьма и весьма непросто). Вместо этого он может, например, подсмотреть пароль системного администратора на рабочей станции и таким образом получить неограниченные привилегии. К счастью, работоспособных вирусов подобного типа не так много.

В операционной системе Microsoft Windows NT предусмотрены специальные меры, исключающие возможность выманить у пользователя его пароль. Файловая система NTFS, которая используется в Microsoft Windows NT, содержит мощные встроенные средства защиты от несанкционированного доступа. На сегодняшний день нам не известен ни один вирус, специально разработанный для этой операционной системы.

Операционная система MS-DOS

Подавляющее большинство вирусов было создано для операционной системы MS-DOS, которая и до сегодняшнего дня является наиболее популярной. Популярность MS-DOS и ее “доверчивость” к программам способствуют появлению все новых и новых вирусов.

В этом разделе мы расскажем вам о некоторых уязвимых местах операционной системы MS-DOS, которые активно используются вирусами для своего закрепления и распространения, а также для того чтобы скрыть свое существование (как это делают стелс-вирусы).

Вы увидите, что вирус в MS-DOS имеет полный доступ к любому байту оперативной памяти и к любому сектору любого диска. Поистине трудно найти более беззащитную операционную систему, чем MS-DOS.

Использование реального режима работы процессора

Как мы уже говорили, использование реального режима работы процессора значительно ухудшает защищенность и стабильность операционной системы MS-DOS.

Напомним, как выполняется адресация памяти в реальном режиме (рис. 7.1).

Рис. 7.1. Адресация памяти в реальном режиме работы процессора

Программы (как системные, так и программы, запускаемые пользователем) работают с адресом, состоящим из двух 16-разрядных компонент, которые называются сегментом и смещением.

Для вычисления физического адреса памяти (который попадает на системную шину компьютера) значение сегмента сдвигается влево на четыре бита и складывается со значением смещения, расширенного до 20 разрядов. Задавая различные значения для компонент адреса, любая программа может получить доступ к любой области памяти (в границах первого Мбайта адресного пространства).

В результате программы, которые запускают пользователи, а также, разумеется, вирусы, могут изменить любую область оперативной памяти, распределенную операционной системе MS-DOS или другой программе, обычной или резидентной. Поэтому вирусу не составляет никакого труда встроить себя, например, в цепочку драйверов устройств, перехватить программное или аппаратное прерывание, или сделать что-нибудь еще.

Другой недостаток реального режима работы процессора заключается в том, что программы могут бесконтрольно обращаться к портам периферийных устройств.

Изменение вирусами структуры памяти

Система управления памятью, встроенная в MS-DOS, является чисто символической, так как ее нормальная работа зависит от того, будут ли программы выполнять заранее оговоренные соглашения, или нет. Однако ничто не помешает программе стать “нарушителем”, полностью разрушив всю операционную систему или внеся в нее те или иные “незаконные” изменения.

Например, программа может запросить у MS-DOS блок памяти размером 10 Кбайт. В ответ соответствующая функция MS-DOS предоставит программе сегментный адрес выделенного блока. Используя полученный адрес как указатель на массив, программа может записать в этот массив не 10, а 20 или 30 Кбайт данных, и ничто не помешает ей в этом, так как MS-DOS не будет проверять значение указателя на предмет выхода за пределы массива.

Какие же изменения могут внести вирусы в структуру памяти?

Вспомним, как распределен первый мегабайт оперативной памяти в операционной системе MS-DOS:

 

Диапазон адресов

Описание

0000h:0000h

Векторы прерываний

0000h:0400h

Область данных BIOS

0000h:0500h

Область данных MS-DOS

xxxx:0000h

Область программ MS-DOS.

Здесь располагаются обработчики прерываний MS-DOS, буферы, внутренние структуры данных MS-DOS, встроенные и загружаемые драйверы устройств

xxxx:0000h

Резидентная часть командного процессора COMMAND.COM

xxxx:0000h

Резидентные программы (если загружены)

xxxx:0000h

Запущенные прикладные программы

xxxx:0000h

Транзитная часть командного процессора COMMAND.COM

0A000h:0000h

Память видеоадаптера EGA

0B000h:0000h

Память монохромного видеоадаптера

0B800h:0000h

Память видеоадаптера CGA

0C800h:0000h

Внешнее ПЗУ или адреса периферийных устройств, отображаемые на память

0F600h:0000h

ПЗУ интерпретатора BASIC или адреса периферийных устройств, отображаемые на память

0FE00h:0000h

ПЗУ BIOS

 

Первый килобайт памяти занимает таблица векторов прерываний. Она содержит 256 элементов, имеющих размер 4 байта. Таблица содержит адреса обработчиков прерываний, состоящие из компонент сегмента и смещения.

Таблица векторов прерываний - любимый объект для нападения вирусов. Вирусы могут изменять содержимое этой таблицы прерываний напрямую или с помощью соответствующего сервиса, предоставляемого операционной системой MS-DOS.

Цель изменений заключатеся в том, чтобы подключить обработчики прерываний, расположенные в теле вируса, вместо стандартных. При этом вирус получает доступ к важнейшим функциям MS-DOS и BIOS, полностью контролируя их. Подменяя обработчики аппаратных прерываний, вирус может держать под контролем работу периферийных устройств, например, жесткого диска или накопителя на гибких магнитных дисках.

Так как современные антивирусные программы проверяют целостность таблицы векторов прерываний, некоторые вирусы используют для внедрения в обработчики прерываний другие технологии. Например, вирус изменяет несколько первых команд стандартного обработчика прерывания, сохраняя оригинальные команды в своем теле. На место этих команд он записывает другие, передающие управление вирусу. Таким образом, хотя таблица векторов прерываний не изменяется, вирус полностью контролирует ситуацию.

Область памяти с адресами 0000h:0400h - 0000h:04FFh занимает область данных BIOS. Это внутренние переменные BIOS. Здесь хранится важная информация, например, параметры жеских дисков, накопителей на гибких магнитных дисках, текущие параметры операционной системы и т. д. В некоторых случаях вирусы намеренно изменяют некоторые параметры, расположенные в этой области, нарушая нормальную работу операционной системы, или хранят собственные параметры и флаги. Например, вирусы могут отключать накопитель на гибком магнитном диске с целью затруднения загрузки MS-DOS с чистой дискеты.

В области памяти, которая начинается с адреса 0000h:0500h, располагается область данных MS-DOS. Здесь MS-DOS  хранит свои внутренние таблицы, переменные и структуры данных. Вслед за областью данных находятся модули системы ввода/вывода MS-DOS, обработчики прерываний MS-DOS, внутренние буферы и внутренние структуры данных, а также загружаемые драйверы. После драйверов располагается резидентная часть командного процессора COMMAND.COM.

И драйверы, и командный процессор могут быть подвергнуты вирусной атаке. В частности, вирусы могут встраивать себя в тело драйвера, перехватывая поступающие в него команды.

Далее в оперативной памяти располагаются резидентные программы и программа, которая выполняется в текущий момент времени.

В нижней части адресного пространства (до адреса 0A000h:0000h) находится транзитная часть командного процессора COMMAND.COM, которая может перекрываться выполняющейся программой.

Область адресов от 0A000h:0000h до 0C800h:0000h используется видеоадаптерами. Так как в этом диапазоне адресов может располагаться оперативная память (которая физически установлена в видеоадаптере), здесь тоже могут “жить” вирусы.

Вся оперативная память, принадлежащая MS-DOS, разделена на фрагменты, перед которыми расположены блоки управления памятью MCB (Memory Control Block). Внутри блока MCB хранится длина описываемого данным MCB фрагмента памяти. Следующий фрагмент памяти начинается сразу за предыдущим. При этом все блоки MCB связаны в список.

В ранних версиях MS-DOS формат блока MCB не был документирован, что, тем не менее, не останавливало разработчиков вирусов от попыток изменения структуры памяти на уровне этих блоков. Теперь же сведения о формате блока MCB можно почерпнуть из руководства программиста, полученного в Microsoft:

 

Смещение, байт

Размер, байт

Описание

0

1

Тип блока MCB (M или Z)

1

2

Сегментная компонента адреса владельца блока или 0, если блок описывает сам себя

3

2

Число параграфов в этом блоке (размер параграфа равен 16 байт)

5

11

Зарезервировано

 

Блоки MCB бывают двух типов - M и Z. M-блоки - это промежуточные блоки. Блок типа Z является последним блоком в списке и может быть только один.

Так как любой программе, запущенной под управлением MS-DOS, доступна для записи вся оперативная память, вирус может изменить количество и расположение фрагментов памяти, создав для себя новый фрагмент и, соответственно, новый блок MCB. При этом вирус остается резидентным в памяти, не обращаясь для этого к соответствующим функциям операционной системы. Таким образом вирус предпринимает простейшую попытку скрыть тот факт, что он пытается стать резидентным в оперативной памяти.

Sayha.DieHard

Опасный резидентный шифрованный вирус. Перехватывает прерывания INT 10h, 13h, 21h. Вирус трассирует данные  прерывания для выяснения адресов оригинальных обработчиков  и  для попытки "внедрения" в цепочки обработчиков прерываний.

Когда происходит открывание ASM-файлов, вирус записывает в них следующий текст:

 

        .model small

        .code

        org 256

        s:      push    cs

                pop     ds

                call    t

        db      'Tе$'

        t:      pop     dx

                mov     ah,9

                int     33

                mov     ah,76

                int     33

        end s

 

Аналогично, при открывании файлов с расширением имени PAS в них записывается такой текст:

 

        begin

        write('Tе');

        end.

 

При установке графического режима с номером 13h (разрешение 320x200, 256 цветов) вирус рисует в центре экрана буквы "SW".

Если возникают ошибки при попытке записи на диск (переход за границу 64 Kбайт при работе с DMA или если данные были скорректированы с использованием ECC), вирус пытается их исправить!

В своем теле вирус одержит текстовые строки "SW Error", "SW DIE HARD 2"

 

Тщательно изучая структуру блоков MCB (например, при помощи программы MEM.EXE, которая входит в состав MS-DOS), при наличии достаточного опыта вы сможете обнаружить фрагменты памяти, созданные вирусами. Для этого вы должны знать, какие резидентные программы и драйверы загружаются через файлы AUTOEXEC.BAT и CONFIG.SYS, какие они создают блоки, а также понимать назначение блоков памяти, принадлежащих MS-DOS. Более полную информацию об этом вы можете получить из 18 тома нашей серии книг “Библиотека системного программиста”, которая называется “MS-DOS для программиста”.

Внесение изменений в файловую систему

Для того чтобы “закрепиться” в компьютере, вирус, как правило, вносит те или иные изменения в файловую систему.

Файловая система MS-DOS не содержит абсолютно никаких защитных механизмов, которые могли бы воспрепятствовать проникновению в ее логические структуры вирусов. Более того, системные прерывания BIOS и MS-DOS предоставляют вирусам весь инструментарий, необходимый для такого проникновения. Эти прерывания хорошо описаны как в документации, поставляемой Microsoft, так и в различной компьютерной литературе (например, в 18 и 19 томах “Библиотеки системного программиста”).

Для обеспечения совместимости с периферийными устройствами, выпускаемыми различными фирмами, операционная система MS-DOS выполняет операции ввода/вывода не самостоятельно, а с помощью базовой системы ввода вывода BIOS. При этом любая программа (в том числе вирусная), также может обращаться к прерываниям BIOS.

Прерывание INT  13h

Прерывание INT 13h, обработчик которого находится в BIOS, позволяет любой программе беспрепятственно читать и записывать любые секторы жесткого или гибкого диска. Зная логическую структуру файловой системы MS-DOS (частично описанную в предыдущей главе), разработчик вируса при помощи этого прерывания может встроить вирусный код в загрузочную запись или в любое другое подходящее с его точки зрения место.

Разумеется, о прерывании INT 13h знают не только разработчики вирусов, но и авторы антивирусных программ. И те и другие борятся за получение “настоящей” точки входа в обработчик этого прерывания, который должен быть расположен в постоянном запоминающем устройстве. Целью вируса является перехват прерывания INT 13h, а целью антивирусной программы - обнаружение такого перехвата.

Тем не менее, даже надежно защитив точку входа в обработчик прерывания INT 13h, нельзя гарантировать полную защиту от вирусной атаки.

Как вы, возможно, знаете, в реальном режиме работы процессора программе разрешается выполнять операции обмена данными с любыми портами периферийных устройств. В том числе и с портами контроллера жесткого диска или накопителя на гибком магнитном диске. В 19 томе “Библиотеки системного программиста” мы привели пример программы, которая работает именно таким образом, читая сектор дискеты без обращения к прерыванию INT 13h.

Для того чтобы у вас было некоторое представление о том, что может сделать вирус при помощи прерывания INT 13h, приведем краткое описание функций этого прерывания:

 

Номер функции

Описание

00h

Сброс дисковой системы

01h

Определение состояния дисковой системы

02h

Чтение сектора

03h

Запись сектора

04h

Проверка сектора

05h

Форматирование дорожки

06h

Форматирование дорожки НМД

07h

Форматирование НМД

08h

Получить текущие параметры НГМД или НМД

09h

Инициализация таблиц параметров НМД

0Ah

Чтение длинное (только для НМД)

0Bh

Запись длинная (только для НМД)

0Ch

Поиск цилиндра (только для НМД)

0Dh

Альтернативный сброс НМД

0Eh

Чтение буфера (только для НМД)

0Fh

Запись буфера (только для НМД)

10h

Проверка готовности НМД

11h

Рекалибровка НМД

12h

Проверка памяти контроллера НМД

13h

Проверка НМД

14h

Проверка контроллера НМД

15h

Получить тип НМД или НГМД

16h

Проверка замены диска

17h

Установка типа дискеты

18h

Установка среды носителя данных для форматирования

19h

Парковка головок (только для НМД)

1Ah

Форматирование НМД с интерфейсом ESDI

 

Как видите, вирус может прочитать, записать и отформатировать дорожку диска. Используя команды 0Ah и 0Bh, разработанные для диагностических целей, вирус может изменить контрльные суммы секторов данных, которые обычно подсчитываются, записываются и проверяются автоматически.

SillyRE.666

Опасный шифрованный вирус.

После загрузки в память своей резидентной копии вирус записывает "мусор" в 11 сектор нулевой дорожки (головка с номером 1), пользуясь для этого операцией длинной записи. Обычно на этом месте диска находится первая копия таблицы размещения файлов FAT

 

С помощью функций прерывания INT 13h вирус может получить доступ к внутреннему буферу, расположенному непосредственно в дисковом накопителе.

Другой “лакомый кусочек” для вирусов - прерывание INT 76h, которое вырабатывается при завершении операции в контроллере жесткого диска. Вирус может перехватывать это прерывание для реализации стелс-технологии.

Прерывания INT 25h и INT 26h

Операционная система MS-DOS предоставляет для работы с файловой системой и логическими дисками свои средства. Это прерывания INT 25h, INT 26h, а также ряд функций прерывания INT 21h. Кроме того, программа может работать с дисковыми устройствами через соответствующий драйвер, обращаясь к нему косвенно с помощью функций интерфейса IOCTL. Все эти средства были нами подробно описаны в 19 томе “Библиотеки системного программиста”.

С помощью прерываний INT 25h и INT 26h любая программа (а также вирус) может, соответственно, прочитать и записать любой сектор логического диска. Используя эти прерывания, вирусу ничего не стоит, например, подменить загрузочный сектор логического диска, выполнив таким образом заражение этого диска.

Так как эти два прерывания используются MS-DOS для выполнения операций с логическими дисками, многие вирусы пытаются их перехватить, чтобы получить контроль над операциями ввода/вывода (например, для реализации стелс-механизма).

MIREA.4156

Полиморфный вирус.

Выполняет поиск EXE-файлов, чтение из файла и запись в файл через прерывания INT 25h и INT 26h. Файлы могут быть поражены в любом подкаталоге текущего диска.

Содержит ошибки, из-за которых неработоспособен на диске с 12-разрядной таблицей размещения файлов FAT.

Иногда по окончании своей работы, может выдать текст:

 

Заранее прошу извинения.

Чистая случайность, что ЭТО попало к Вам.

По классификации Е.Касперского это типичная  "студенческая" программа, причем в наихудшем ее исполнении:

- портит оверлеи (если не повезет, то и резиденты тоже),

- портит забитый до отказа диск,

- содержит большое число ошибок,

- имеет большой размер,

и т.д.

Чего еще можно ожидать от студента МИРЭА.

Ничего гадкого, кроме распространения программа не делает (я на это надеюсь, хотя от "студенческой" можно ожидать всего из-за ее крайней примитивности и большого числа ошибок ).

 

МИРЭА - хороший ВУЗ!!!

МИРЭА - это звучит гордо!!!

МИРЭАзм не объяснить, в нем надо жить!!!

Перехват прерываний можно выполнить разными способами. Можно напрямую отредактировать таблицу векторов прерываний. Можно также воспользоваться услугами функций 25h и 35h прерывания INT 21h, предназначенных, соответственно, для установки нового вектора прерывания и получения текущего вектора прерывания.

Однако антивирусные программы тщательно проверяют таблицу векторов прерываний, поэтому для их изменения вирусы используют различные изощренные приемы. Например, вирус может подменить первые несколько команд обработчика прерывания, сохранив эти команды в своем теле. При этом, несмотря на то что таблица векторов прерываний остается нетронутой, прерывание оказывается перехваченным. Такая методика, разумеется, может быть использована для перехвата любых прерываний, а не только прерываний INT 25h и INT 26h.

Функции прерывания INT 21h

Что касается функций прерывания INT 21h, предназначенных для работы с файловой системой, то их набор является полным и позволяет выполнять практически любые операции над файлами и каталогами.

Пользуясь этими функциями, вирусы могут беспрепятственно изменять загрузочные файлы программ, дописывая к ним новый код и редактируя заголовок файла. При этом стелс-вирусы маскируют внесенные изменения, перехватывая многие функции прерывания INT 21h и возвращая ложную информацию, например, о размере файла.

Интерфейс GENERIC IOCTL

Еще одно средство, которое может быть использовано вирусами для внесение изменений в файловую систему, это интерфейс общего управления вводом/выводом GENERIC IOCTL.

Этот интерфейс реализован в рамках функции 44h прерывания INT 21h (операция с кодом 0Dh), которая обеспечивает механизм взаимодействия между прикладным программным обеспечением и драйверами блочных устройств.

Указанная функция позволяет программам (и вирусам) читать и изменять параметры устройств, выполнять чтение, запись, форматирование и проверку дорожек диска на низком уровне с помощью драйвера устройства.

При вызове функции регистры процессора загружаются следующим образом:

 

Регистр

Описание содержимого

AH

44h

AL

0Dh

BL

Номер устройства НМД или НГМД

CH

Код категории устройства: 08h - дисковое устройство

CL

Операция:

40h - установить параметры устройства;

60h - получить параметры устройства;

41h - записать дорожку;

61h - прочитать дорожку;

42h - форматировать дорожку;

62h - проверить дорожку

DS:DX

Указатель на блок параметров

 

Через регистры DS:DX функции передается адрес подготовленного блока параметров, формат которого зависит от выполняемой операции. Из приведенного выше описания видно, что набор выполняемых функцией операций более чем достаточен для того чтобы с его помощью вирусы могли сделать любые изменения логических структур файловой системы.

Вирусы в загружаемых драйверах

Драйвер является расширением операционной системы, предназначенным, как правило, для работы с тем или иным периферийным устройством. Обычно в составе любой операционной системы имеется набор драйверов, предназначенных для разных устройств.

Что касается операционной системы MS-DOS, то для нее все драйверы можно разделить на встроенные в ядро и подгружаемые через файл CONFIG.SYS.

Встроенные и подгружаемые драйверы после загрузки объединяются в цепочку, адрес которой можно найти с использованием недокументированных средств, описанных нами в 18 томе “Библиотеки системного программиста”.

Для того чтобы понять, каким образом вирус может заразить драйвер, вспомним, что в самом начале драйвера находится заголовок следующего формата:

 

Смещение, байт

Размер, байт

Описание

0

4

Указатель на заголовок драйвера, следующего в цепочке. Если смещение адреса следующего драйвера равно 0FFFFh, это последний драйвер в цепочке

4

2

Атрибуты драйвера

6

2

Смещение программы стратегии драйвера

8

2

Смещение программы обработки прерывания для драйвера

0Ah

8

Имя устройства для символьных устройств или количество обслуживаемых устройств для блочных устройств

 

Обратите внимание на поля смещений программы стратегии и обработки прерывания драйвера. Эти поля используются операционной системой MS-DOS для вызова драйвера.

Вызов драйвера представляет собой двухступенчатый процесс.

Вначале операционная система вызывает программу стратегии, пользуясь смещением, полученным из заголовка драйвера (поле со смещением 6). Перед этим она формирует в своей области данных запрос, передавая программе стратегии адрес соответствующего блока данных в регистрах ES:BX. Программа стратегии обычно очень проста, так как ее задача заключается в запоминании адреса блока данных, содержащего запрос, в области памяти, принадлежащей драйверу.

Запрос операционной системы к драйверу содержит заголовок, имеющий фиксированный формат и длину 13 байт, а также структуру переменного размера и формата, которые зависят от выполняемой функции (переменная область запроса). Формат первой области запроса приведен ниже:

 

Смещение, байт

Размер, байт

Описание

0

1

Общий размер блока запроса в байтах

1

1

Номер устройства. Используется для блочных устройств; указывает, с каким именно устройством (из числа обслуживаемых данным драйвером) будет работать операционная система

2

1

Код команды, которую требуется выполнить

3

2

Слово состояния устройства. Заполняется драйвером перед возвращением управления операционной системе

5

8

Зарезервировано

 

На втором этапе операционная система MS-DOS вызывает программу обработки прерывания, взяв ее смещение из заголовка драйвера (поле со смещением 8). Программа обработки прерывания анализирует код команды, расположенный в фиксированной области запроса (поле со смещением 2) и выполняет ее.

Заражение драйвера, загруженного в оперативную память, выполняется достаточно просто. Вирус находит в цепочке драйверов жертву и изменяет заголовок драйвера, либо подменяет несколько команд, расположенных в начале программ стратегии и обработки прерывания. После этого вирус становится способен контролировать выполнение всех команд, поступающих в драйвер.

Dir-II (1,2)

Неопасные резидентные вирусы, встраивающиеся в цепочку дисковых драйверов.

Вирусы записывают свой код в последний кластер диска. Для файлов с расширениями имени COM и EXE устанавливают указатели первого кластера данных на последний кластер диска, содержащий вирусный код

 

Заражение файла с драйвером выполняется примерно также, как и заражение файла обычной исполнимой программы с расширением имени EXE. Для определения смещения программ стратегии и прерывания вирус должен проанализировать заголовок драйвера, который находится в самом начале файла, содержащего драйвер. Дальнейшие действия вируса очевидны - замена нескольких начальных команд и дописывание в конец файла вирусного кода.

ExeHeader.Dragon

Инсталлируется в память и внедряется в цепочку дисковых драйверов.

Содержит в своем теле строку "DRAGON-2 Anti"

Операционная система Microsoft Windows версии 3.1

Первые версии операционной системы Microsoft Windows представляли из себя не более чем надстройку над MS-DOS и потому воспринимались как красивые, но не слишком нужные оболочки для работы с файловой системой. Однако версия 3.1 этой операционной системы, в которой впервые была применена технология масштабируемых шрифтов True Type, получила громадную, ни с чем не сравнимую популярность. В большой степени это произошло еще и потому, что многие ведущие производители программных средств создали для Microsoft Windows очень хорошие приложения, ставшие в последнее время просто незаменимыми.

Однако многие согласятся с тем, что надежность операционной системы Microsoft Windows версии 3.1 (и ее более поздняя модификация Microsoft Windows for Workgroups весрии 3.11) не слишком высока. Некорректно написанная программа может полностью нарушить работоспособность всей системы, что приведет к необходимости перезагрузки компьютера.

Как устроена операционная система Microsoft Windows версии 3.1?

Полный ответ на этот вопрос займет очень много места. Интересующихся подробностями мы отсылаем к томам с 11 по 17 включительно нашей “Библиотеки системного программиста”, в которых мы рассмотрели различные аспекты программирования для Microsoft Windows.

Если же сказать кратко, то Microsoft Windows создает одну системную виртульную машину для запуска всех приложений Microsoft Windows, и по одной виртульаной машине для каждой программы MS-DOS. Каждая такая виртульная машина имеет собственное виртуальное адресное пространоство, что позволяет (теоретически) исключить их взаимное влияние друг на друга. Однако на практике такое влияние все же есть. Именно оно приводит к такой ситуации, когда аварийное завершение одной из программ приводит к аварийному завершению всей операционной системы.

Вы можете спросить - а при чем тут вирусы?

Но ведь вирус - это программа, а раз обычная программа может влиять на все остальные и даже на операционную систему в целом, то и вирус тоже сможет. И еще как.

Нелегкий груз совместимости

Мы не сделаем открытия, если скажем, что успех новой операционной системы в большой степени определяется ее способностью выполнять старые программы. Операционная система никому не нужна сама по себе - она используется только как рабочая среда для запуска прикладных программ. И если пользователи, установив новую операционную систему, обнаружат что все их любимые программы перестали работать, они едва ли будут довольны.

Осознавая этот факт, Microsoft при создании операционной системы Microsoft Windows приложила много усилий для обеспечения совместимости с программами MS-DOS. При этом вольно или невольно она обеспечила прекрасную совместимость почти со всеми вирусами, разработанными в свое время для MS-DOS.

Как сделать, чтобы программы MS-DOS хорошо чувствовали себя в среде виртуальной машины, создаваемой для них операционной системой Microsoft Windows?

В лучшем случае виртуальная машина должна быть сделана так, чтобы работающая в ее среде программа и не подозревала, что машина на самом деле “не настоящая”. Для этого программам должно быть позволено все, что и раньше. И хотя теперь программы несколько ограничены в правах, так как имеют доступ только к своему виртуальному пространству оперативной памяти, диски и файловая система для них доступны как и раньше. Аналогично, программы (и вирусы) могут напрямую работать с портами периферийных устройств, что также не повышает устойчивости системы к вирусам.

Отыщи всему начало…

Строго говоря, операционная система Microsoft Windows версии 3.1 не является… операционной системой. Скорее это очень большая программа MS-DOS, которая составлена с использованием расширителя DOS (нам кажется, что это был DOS Extender фирмы Phar Lap). О расширителях DOS вы можете узнать из 6 тома “Библиотеки системного программиста”, который называется “Защищенный режим работы процессоров Intel 80286/80386/80486”).

Расширитель DOS при запуске программы переводит процессор в защищенный режим работы, обеспечивая при этом интерфейс с обработчиками прерываний, функциями BIOS и DOS, рассчитанные на реальный режим работы процессора. При этом программа получает, с одной стороны, возможность воспользоваться преимуществами защищенного режима работы процессора (такими, например, как прямая адресация расширенной памяти), с другой стороны - возможность работы с файловой системой средствами прерываний MS-DOS. Удобно и практично.

Так как Microsoft Windows версии 3.1 не может работать без MS-DOS, то вирусы могут сделать многое еще до старта этой операционной системы. Например, вирусы могут удобно расположиться в главной загрузочной записи MBR или загрузочной записи Boot Record, перехватить и взять под свой контроль ключевые прерывания BIOS и MS-DOS.

Поэтому операционная система Microsoft Windows весрии 3.1 по своей “питательности” для вирусов ни в чем не уступает MS-DOS. И хотя на сегодняшний день мы не наблюдаем лавинообразного роста вирусов, специально ориентированных на операционную систему Microsoft Windows весрии 3.1, вы не должны расслабляться. Даже если вы давно забыли команды MS-DOS и работаете только с приложениями Microsoft Windows, вам по-прежнему угрожают несколько тысяч старых вирусов, созданных “в стиле” MS-DOS.

Откуда не ждали

В начале этой книги мы рассказали вам о макрокомандных вирусах, которые являются последним “достижением” в этой области. Хотя эти вирусы родились в среде Microsoft Windows версии 3.1, они не пользуются (пока) “слабостями” этой операционной системы. Потенциально такие вирусы могут существовать в среде любой операционной системы, если для нее созданы приложения, работающие с объектными документами, содержащими наряду с обычными данными последовательности макрокоманд.

Можно даже сказать, что макрокомандные вирусы живут не в среде операционной системы, а в среде прикладных программ, работающих с докумантами. Так как в последнее время разрабатываются кросс-платформные операционные системы и приложения, потенциально любая операционная среда может оказаться подвержена заражению макрокомандными вирусами.

Операционная система Microsoft Windows 95

Несмотря на значительный прогресс в области пользовательского интерфейса, более устойчивую работу за счет разделения виртульных адресных пространств отдельных приложений и реальной мультизадачности, операционная система Microsoft Windows 95 устойчива к вирусам не более, чем Microsoft Windows версии 3.1.

Причина все та же - эта операционная система очень хорошо совместима с программами MS-DOS, “привыкшим” к бесконтрольному владению компьютером.

Несмотря на то что Microsoft хорошо спрятала MS-DOS версии 7.0 от пользователя, вирусы найдут ее функции и логические структуры данных без особого труда, точно также как и привычные вам файлы CONFIG.SYS и AUTOEXEC.BAT. Заразив главную загрузочную запись и резидентные программы, запускаемые через файл AUTOEXEC.BAT, вирусы смогут доставить вам немало хлопот, повредив, например, другие программные файлы, файлы данных или даже всю файловую систему.

К сожалению, файловая система Microsoft Windows 95 по-прежнему не имеет никакой защиты, поэтому вирусные программы, работающие, например, в среде виртуальной машины MS-DOS, смогут повредить ее без особого труда, воспользовавшись, например, вполне “легальными” функциями прерывания INT 21h.

Добавьте к сказанному выше возможность заражения макрокомандными вирусами, и вы поймете, что единственная гарантия предохранения компьютера с операционной системой Microsoft Windows 95 от вирусов - это грамотное использование антивирусных программ.

Операционная система IBM OS/2

Операционная система IBM OS/2 защищена от вирусов намного лучше всех других описанных выше операционных систем. В самом деле, на настоящий момент не существует вирусов, разработанных специально для IBM OS/2. В отличие от Microsoft Windows и Microsoft Windows 95 эта операционная система является полнофункциональной и работает, разумеется, без всякой помощи со стороны MS-DOS, которой может даже не быть на диске.

Все программы, запускаемые в среде OS/2, работают в отдельных адресных пространствах, и потому не могут повлиять друг на друга. Подробнее о том как устроена и работает операционная система IBM OS/2 Warp версии 3.0, а также о том как ее установить и настроить, вы можете узнать из 20 тома нашей серии “Библиотека системного программиста”, который называется “Операционная система IBM OS/2 Warp”.

А как же, спросите вы, совместимость с программами MS-DOS?

Эта совместимость имеется, хотя в наиболее отвественных случаях ее можно отключить.

Операционная система способна работать с различными файловыми системами, самыми важными из которых является файловая система FAT и HPFS. Первая из них используется операционной системой MS-DOS и нужна главным образом как раз для совместимости. Вторая является высокопроизводительной файловой системой HPFS (High Performance File System), специально разработанной для OS/2.

В ответственных случаях вы можете работать только с файловой системой HPFS, запретив пользователю запускать программы MS-DOS. Для этого в файле CONFIG.SYS необходимо указать следующую строку:

PROTECTONLY=YES

В этом случае оперативная память в пределах первого мегабайта адресного пространства будет использоваться для запуска программ OS/2.

Учтите, что если вы запретите запуск программ MS-DOS, вы не сможете запускать в среде IBM OS/2 и приложения Microsoft Windows.

Дополнительно можно усилить защиту, указав в файле CONFIG.SYS такую строку:

IOPL=NO

При этом обычные (несистемные) программы не будут иметь доступ к портам периферийных устройств.

В том случае, если вы работаете в среде IBM OS/2 с программами MS-DOS или приложениями Microsoft Windows, существует опасность поражения программных файлов вирусами, разработанными для операционной системы MS-DOS. Такие вирусы могут оставаться резидентными в памяти во время работы сеанса DOS и способны повредить программные файлы, расположенные на диске. Хотя, разумеется, возможностей для повреждения файловой системы у них будет намного меньше, чем в среде MS-DOS. В частности, вирусы не смогут воспользоваться прерыванием INT 13h для перезаписи главной загрузочной записи и не смогут повредить системные области файловой системы HPFS.

Если компьютер с операционной системой IBM OS/2 используется в качестве файл-сервера IBM LAN Server, загружается драйвер 386 HPFS, который дополнительно повышает защищенность файловой системы HPFS, позволяя указывать права доступа к каталогам и файлам. Вы можете защитить каталоги, содержащие программные файлы, от записи, и при этом вирусы не смогут их повредить.

Операционная система Microsoft Windows NT

Операционная система Microsoft Windows NT предназначена для высокопроизводительных файл-серверов (в варианте Microsoft Windows NT Advanced Server), а также для элитных рабочих станций класса High End (вариант Microsoft Windows NT Workstation).

Оба варианта снабжены надежной системой защиты, непреодолимой для вирусов и злоумышленников, поэтому операционная система Microsoft Windows NT сертифицирована для использования в государственных и правительственных учреждениях.

Если объем оперативной памяти в вашем компьютере равен или превышает 16 Мбайт, а объем диска - 500 Мбайт, вам нужна высокая надежность, совместимость с программами MS-DOS и приложениями Microsoft Windows, прекрасные средства работы в локальных или глобальных сетях, подумайте об операционной системе Microsoft Windows NT версии 3.51 или более новой.

Файловая система NTFS, примененная в Microsoft Windows NT, позволяет вам управлять доступом к программным файлам и файлам данных. Защитив каталоги с прогрфаммными файлами от записи, вы надежно защитите их от нападения вирусов, в том числе и от тех, что разработаны для MS-DOS.

В отличие от своих предшественников, операционная система Microsoft Windows NT является полнофункциональной и не нуждается в услугах MS-DOS. В корневом каталоге нет файлов AUTOEXEC.BAT и CONFIG.SYS. Нет также резидентных программ, получающих управление на этапе загрузки операционной системы.

Несмотря на то что Microsoft Windows NT может работать с файловой системой FAT, в ответственных случаях мы советуем вам ограничиться файловой системой NTFS, которая на сегодняшний день является наиболее развитой и защищенной.

Операционная система Novell NetWare

Мы уже рассказывали вам о том, как следует организовывать антивирусную защиту локальных сетей, в частности, созданных на базе операционной системы Novell NetWare.

В этом разделе мы еще раз напомним вам об одном уязвимом месте этой весьма и весьма хорошо защищенной операционной системы.

Речь идет о том, что вирусы могут подсмотреть пароль супервизора, когда тот вводит его на рабочей станции.

Как это можно сделать?

Напомним, что для входа в сеть супервизор (как и любой другой пользователь) запускает с сетевого диска программу LOGIN.EXE и вводит в ответ на приглашение свое имя и пароль.

Процесс ввода пароля таит в себе опасность, так как коды введенных символов имени и пароля проходят через буфер клавиатуры, расположенных в области данных BIOS. Вирус, загруженный резидентно в оперативную память, может организовать сканирование этого буфера с целью обнаружения имени и пароля. В этом нет ничего трудного.

Затем, пользуясь программным интерфейсом сетевой оболочки рабочей станции MS-DOS, вирус может попытаться определить привилегии пользователя. И если пользователь ввел пароль супервизора, вирус может получить полный доступ над файл-сервером. Заметим, что подобную процедуру вирусы могут проделать не только с файл-сервером Novell NetWare, но и с файл-серверами, созданными на базе других сетевых операционных систем.

Например, он может записать новую nlm-программу в системный каталог и включить ее имя в файл STARTUP.NCF, который интерпретируется на этапе загрузки операционной системы Novell NetWare. Такая программа может иметь права на чтение или запись в любой каталог файл-сервера.

Более подробную информацию о процессе подключения пользователя к файл-серверу Novell NetWare вы можете получить из 9 тома нашей серии книг “Библиотека системного программиста”, который называется “Локальные сети персональных компьютеров. Работа с сервером Novell NetWare”.

Для того чтобы избежать подобной неприятности, супервизор должен входить в сеть, только загрузив свою рабочую станцию с чистой заклееной системной дискеты, свободной от вирусов. На эту же дискету нужно переписать программу LOGIN.EXE, предварительно убедившись, что она сама не заражена. Это можно сделать, например, при помощи программ Doctor Web и Aidstest из антивирусного комплекта АО “ДиалогНаука”.

Ни при каких обстоятельсвах не следует входить в сеть пользователем с правами супервизора, если нет полной уверенности, что рабочая станция не заражена вирусами.

Литература

1. Фролов А.В., Фролов Г.В. Библиотека системного программиста. М.: ДИАЛОГ-МИФИ, 1991-1996

Т.16. Модемы и факс-модемы. Программирование для MS-DOS и Windows.

Т.18, 19. MS-DOS для программиста.

Т.20. Операционная система IBM OS/2 Warp.

2. Фролов А.В., Фролов Г.В. Персональный компьютер. Шаг за шагом. М.: ДИАЛОГ-МИФИ, 1994-1996

Т.1. Введение в MS-DOS, MS Windows, MS Word for Windows.

Т.2. Операционная система Microsoft Windows. Руководство пользователя.

Т.3. Сети компьютеров в вашем офисе.

Т.4. Что вы должны знать о своем компьютере.

3. Д.Н. Лозинский, Д.Ю. Мостовой, И.А. Данилов, В.С. Ладыгин, Д.Г. Зуев, Ю.Н. Фомин. Антивирусный комплект АО “ДиалогНаука”. Руководство пользователя. М.: ДИАЛОГ-МИФИ, 1995-1996

4.     Survivor’s Guide to Computer Viruses. Virus Bulletin, 21 The Quadrant, Abingdon, OX14 3YS, England, 1993

5. Безруков Н.Н. Компьютерные вирусы. - М.: Наука, 1991

6. Безруков Н.Н. Компьютерная вирусология: справочное руководство. - Киев: Укр. сов. энцикл., 1991

 

[Назад] [Содержание]


Создание интернет-магазинов: http://www.shop2you.ru/ © Александр Фролов, Григорий Фролов, 1991-2016