рекламодателям фирмы/add расшифровка штрих-кодов links/add
http://kiev-security.org.ua
Содержание
126. Компьютерная вирусология: анатомия компьютерного вируса
Анатомия компьютерного вируса. Наиболее распространенными видами
компьютерных вирусов в MS DOS являются файловые нерезидентные,
файловые резидентные и бутовые вирусы. Многие из пользователей
имеют ограниченный опыт работы с MS DOS. В то же время для
понимания функционирования файловых вирусов и средств защиты от
них важно понимать структуру файловой системы и прерываний MS
DOS. Поэтому в прил.4 приводится краткий обзор структуры файловой
системы MS DOS, в прил. 5 - структуры исполняемых файлов и
некоторых управляющих блоков. Более подробные сведения можно
получить в учебниках по языку ассемблера [Скенлон89], в
электронном справочнике TechHelp, а также в книгах П.Нортона
[Нортон90] и Жордена. Разбор анатомии компьютерных вирусов начнем
с анализа структуры нерезидентного файлового вируса, как
простейшей разновидности этого класса системных программ.
Структурно компьютерный вирус можно представить состоящим из двух
частей: головы и хвоста. Головой называется часть вируса, которая
первой получает управление. Хвост вируса - это части вируса,
расположенные отдельно от головы. В простейшем случае вирус может
состоять из одной головы , и действительно, файловые вирусы
обычно так и устроены. Такие вирусы будем называть
несегментированными. В отличие от них, сегментированные вирусы
имеют располагающийся отдельно хвост и в какой-то мере аналогичны
оверлейным программам. Примером сегментированных вирусов являются
бутовые вирусы, хотя возможна реализация сегментированных
файловых вирусов. Структура файлового нерезидентного вируса.
Файловые вирусы являются наиблее распространенной разновидностью
компьютерных вирусов. Принципиально они заражают любой тип
исполняемых файлов, существующих в MS DOS: COM, EXE, OVL и т.д.
Однако основными объектами заражения являются файлы типа EXE.
Некоторые сведения о структуре этих файлов приведены в прил.5.
Наиболее просто осуществляется заражение COM - файлов, которые
представляют собой почти точную копию участка памяти с
загруженной программой. Единственная требуемая настройка при
загрузке COM-файлов состоит в загрузке сегментных регистров
значениями, соответствующими месту загрузки программы.
Значительная часть COM-файлов начинается с команды перехода,
обходящей содержащие в начале программы данные. При заражении
COM-файлов вирус запоминает в своем теле первые три или больше
байтов программы и вместо них записывает переход на начало
собственного кода. Так поступает большинство файловых вирусов,
заражающих COM-файлы, но не все. Дело в том, что при дописывании
тела вируса в конец заражаемого файла весь код вируса должен быть
написан специальным образом, обычно называемым
позиционно-независимым программированием: при выполнении
программы все ссылки должны адресоваться через соответствующее
смещение, которое обычно хранится в одном из регистров. Некоторые
вирусы используют более примитивный подход: вместо дописывания
своего тела в конец заражаемого COM-файла они перемещают туда
первые несколько блоков программы, а сами записываются на место
освободившихся блоков.В этом случае только программа
восстановления исходного состояния программы должна быть
позиционно-независимой или она должна размещаться где-то в
фиксированных адресах памяти, используя какой-то неиспользуемый
ее участок. Простейший нерезидентный компьютерный вирус,
заражающий COM-файлы в текущем каталоге и дописывающий свое тело
в конец файла, можно представить в виде следующей неформальной
спецификации. Шаг 1: Восстановить три первые байта программы. Три
байта зараженной программы, сохраненные в теле вируса,
пересылаются на свое старое место. Шаг 2: Проверить среду.
Проверить версию операционной системы. Если не подходящая, то
перейти к шагу 11. Шаг 3: Найти очередную жертву(ы). Найти в
текущем каталоге очередной файл типа COM. При неудаче перейти к
шагу 11. Шаг 4: Проверить зараженность потенциальной жертвы.
Считать область , позволяющую установить, заражен ли уже данный
файл вирусом или нет. Проверить содержимое этой области. Если
файл уже заражен, то перейти к шагу 3, иначе перейти к шагу 5.
Шаг 5: Проверить, подходит ли жертва для заражения. Если длина
файла + длина вируса больше 64К, перейти к шагу 3, иначе перейти
к шагу 6. Шаг 6: Снять атрибут READ ONLY, запомнить дату создания
программы. Снять указанный атрибут и запомнить в своем теле дату
создания программы. Шаг 7: Обеспечить передачу управления вирусу.
Считать первые три байта зараженной программы и записать их в
своем теле. Сформировать команду перехода на байт, следующий за
концом программы, и записать соответствующие три байта в начало
заражаемой программы. При неудаче перейти к шагу 11, иначе
перейти к шагу 8. Шаг 8: Дописать тело вируса в конец заражаемой
программы. Передвинуть указатель файла в конец программы и
установить режим дозаписи. Переписать свое тело в конец
заражаемой программы. При неудаче перейти к шагу 11, иначе
перейти к шагу 9. Шаг 9: Восстановить дату создания зараженной
программы. Записать в элемент каталога, соответствующий
заражаемой программе, дату, сохраненную в теле вируса. Шаг 10:
Восстановить атрибут READ ONLY. Присвоить заражаемому файлу
атрибуты, установленные у файла до заражения и сохраненные в теле
вируса. При неудаче перейти к шагу 11, иначе перейти к шагу 10.
Шаг 11: Восстановить содержимое регистров и передать управление
программе-вирусоносителю. Как видно из приведенной схемы, данный
вирус распространяется не мгновенно по всей файловой системе, а
постепенно, по мере заражения файлов в текущем каталоге. Поэтому
от момента появления в файловой системе первого зараженного файла
до заражения всех файлов в каталоге должно пройти некоторое
время, зависящее от интенсивности использования зараженной
программы. Наиболее уязвимым с точки зрения блокирования
размножения вируса являются шаг 6 (попытка снятия атрибута READ
ONLY), шаги 7,8 - запись в файл, содержащий исполняемую
программу, и шаг 9 - установка даты создания файла, отличающейся
от текущей. Для блокирования этих шагов обычно используются
различные резидентные программы (см.ниже). Кроме того, если на
шаге 4 вирус использует для маркировки зараженных файлов легко
воспроизводимый признак (например, постановку в поле даты
значения 62 с - излюбленный признак для файловых вирусов), можно
блокировать его распространение, присвоив этот признак всем
заражаемым данным вирусом файлам. Этот прием используется так
называемыми программами-вакцинами. Вставка тела вируса при
заражении может выполняться не только в хвост файла. Встречаются
случаи имплантации в начало или середину файла. 1) Ъ1Вставка в
начало файла. Ъ0В этом случае первые блоки (или все тело)
заражаемой программы обычно переписываются в конец, поэтому до
передачи управления зараженной программе вирус должен
предварительно переписать эти блоки (или все тело) на
первоначальное место, заменив ими собственный код.С этой целью
вирус должен переместить свое тело или хотя бы соответствующую
часть своего кода таким образом, чтобы она не была затерта в
процессе операции перезаписи. Некоторые примитивные вирусы,
записываясь в начало заражаемого файла, не сохраняют его
содержимого. При этом, естественно, зараженный файл уничтожается,
а вирус, получив управление, должен как-то замаскировать тот
факт, что вызываемая программа является неработоспособной. Для
этой цели иногда используется какое-нибудь подходящее сообщение
об ошибке. 2) Ъ1Вставка в конец файла. Ъ0Это наиболее
распространенный случай. При этом необходимо обеспечить передачу
управления коду вирусадо начала работы зараженной программы.Для
файлов типа COM чаще всего это реализуется заменой нескольких
первыхбайтов программы (обычно трех в соответствии с размером
кода команды перехода микропроцессора 8088/8086) на команду
перехода к началу вируса (инсталлятору). При этом сами замененные
байты обязательно должны быть сохранены где-то в теле вируса, что
обеспечивает возможность их восстановления (операция поиска этих
трех байтов является составной частью работы любого фага). Когда
инсталлятор вируса получает управление, то обычно в начале своей
работы он восстанавливает измененные вирусом байты в
первоначальном виде. 3) Ъ1Вставка в середину файла. Ъ0Этот способ
заражения файла встречается редко. Во-первых, этот способ
использхуется узкоспециализированными вирусами, поражающими
определенный класс программ, особенности структуры которого
заранее известны, например, только файл COMMAND.COM. Примером
такого вируса может служить вирус RC 0-346.Leh (Lehiqh).
Во-вторых, и это более частый случай, вставка в середину возможна
путем перебрасывания замещаемых блоков в конец файла. В частном
случае, когда заражаемый файл содержит области нулей или других
повторяющихся символов достаточного размера, вставка в середину
происходит без увеличения длины программы, что затрудняет
обнаружение зараженных файлов. Вставка в середину может произойти
и случайно. Например,это происходит для обычных вирусов,
цепляющихся к концу EXE-файла, если в заголовке заражаемого файла
неправильно указана его длина, т.е. часть файла используется в
качестве буфера или неявного оверлея, как, например, в головном
модуле системы FoxBase. В этом случае вирус считает, что файл
имеет длину, указанную в заголовке, и записывает свой код в
область буфера или оверлея. При этом он оказывается в середине
действительно занимаемого данной программой файла. И, наконец,
файл может быть заражен несколькими вирусами, однотипно
заражающими файл (обычно дописывающими свой код в конец файла). В
этом случае вирус, первым заразивший данный файл, оттесняется к
середине файла последующими вирусами. Являясь сравнительно
редкими, указанные случаи довольно часто не учитываются
создателями антивирусных программ, в частности, детекторов и
фагов, которые, увлекаясь оптимизацией времени выполнения
своихпрограмм, принимают "слишком сильные" допущения о
расположении кода вируса в теле зараженной программы. В
результате файл может быть не детектирован как зараженный или
вылечен неправильно. Как уже указывалось, при вставке в середину
или в конец файла вирус должен каким-то образом обеспечить
передачу себе управления. При этом необязательно изменять именно
первые байты программы. Возможно изменение других байтов.
Например, если программа начинается с команды безусловного
перехода, вирус может определять адрес перехода и модифицировать
команды, расположенные по этому адресу. Поэтому часто
высказываемое мнение о том, что для нейтрализации вируса в
зараженном COM-файле достаточно восствановить его первые байты,
следует признать неверным. 2.4.2. Структура файлового
резидентного вируса. Для понимания функционирования файлового
вируса необходимо некоторое знакомство с системой прерывания
компьютера типа IBM PC.
Содержание
HOME
Если у вас есть сайт или домашняя страничка - поддержите пожайлуста наш ресурс, поставьте себе кнопочку, скопировав этот код:
<a href="http://kiev-security.org.ua" title="Самый большой объем в сети онлайн инф-ции по безопасности на rus" target="_blank"><img src="http://kiev-security.org.ua/88x31.gif" width="88" height="31" border="0" alt="security,безопасность,библиотека"></a> |
Идея проекта(C)Anton Morozov, Kiev, Ukraine, 1999-2022,