На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Вирусы

Компьютерные вирусы — известный всем вид вредоносного программного обеспе­чения. Это программы, обладающие способностью к самовоспроизведению (размно­жению) в среде стандартной операционной системы путем включения в исполняемые или хранящиеся программы своей, возможно, модифицированной копии, способной к дальнейшему размножению. Указанное свойство присуще всем типам компьютерных вирусов. Кроме того, термин «способность к самовоспроизведению» надо трактовать широко. Различные экземпляры одного вируса не только не обязаны полностью со­впадать, но могут даже не иметь ни одного одинакового байта (речь идет о так называ­емых полиморфных вирусах).
Свойство размножения вирусов само по себе, в принципе, не представляет опасно­сти; размножение вирусов может привести, в основном, к заполнению пространства свободной памяти, увеличению хранящихся файлов и замедлению выполнения про­грамм.
Но если подобный вирус начнет размножаться по сети, то в один прекрасный день
эта сеть может быть полностью заблокирована. Например, в середине января 1999 года в сети Internet был обнаружен компьютерный червь, получивший прозвище Нар-
py99.exe. Он не пытается разрушать файлы на зараженных компьютерах, зато без ве­дома жертвы рассылает электронные письма и объявления для телеконференций и способен не только снизить производительность сети, но даже вывести из строя корпоративный сервер электронной почты.
От опасного вируса СШ (Чернобыль), который активи­ровался 26 апреля 1999 года, в день тринадцатой годовщины
катастрофы на Чернобыльской АЭС, пострадало более
ЮОтыс. компьютеров только в России. По прогнозам Е. Кас-перского, руководителя антивирусного центра «Лаборатория
Файловые -Загрузочные Файлово-загрузочные -
Сетевые —
Компаньон - вирусы Вирусы - черви — Паразитические Студенческие — Вирусы - невидимки — Полиморфик - вирусы — Макро - вирусы
Безвредные Неопасные Опасные Очень опасные
Резидентные t_ Нерезидентные
Классификация компьютерных вирусов
Касперского», основные причины распространения вируса — нелегальное заражен­ное программное обеспечение.
Сами механизмы воспроизведения вирусов тоже могут быть весьма разнообразны. Эти программы незаметно присоединяются к другим исполняемым модулям. Они опас­ны тем, что, прежде чем нанести вред, на который они и запрограммированы, копиру­ют себя в другие программные файлы. Таким образом, компьютерные вирусы заража­ют и воспроизводятся аналогично биологическим.
Считается, что сам термин «компьютерный вирус» впервые употребил сотрудник Лехайского университета (США) Ф. Коэн на конференции по безопасности информа­ции в 1984 году. Прошли годы. И что же сегодня представляют собой компьютерные
вирусы?
Существует формальная система, позволяющая классифицировать компьютерные ви­русы и называть их так, чтобы избежать ситуации, когда один и тот же вирус имеет неузна­ваемо разные имена в классификации разных разработчиков антивирусных программ. Однако еще нельзя говорить о полной унификации имен и характеристик вирусов.
Мы будем исходить из того, что обычному пользователю нет необходимости вни­кать во все тонкости функционирования вируса: объекты атаки, способы заражения, осо­


бенности проявления и пр. Но желательно знать, какими бывают вирусы, понимать об­щую схему их работы. Условно компьютерные вирусы можно подразделить на классы (Эта классификация объединяет, естественно, далеко не все возможные виру­сы; в каждой категории встречаются экзотические варианты, которые не названы. Жизненный цикл компьютерного вируса может включать следующие этапы:
□ внедрение (инфицирование);
□ инкубационный период;
□ саморазмножение (репродуцирование);
□ выполнение специальных функций; проявление.
Данные этапы не являются обязательными и могут иметь другую последователь­ность. Особую опасность представляет этап выполнения специальных функций, кото­рые могут привести к катастрофическим последствиям.
Компьютерные вирусы могут неограниченное время храниться на дискетах и жес­тких дисках, а затем случайно или умышленно инфицировать компьютер при исполь­зовании зараженных файлов.
Вирус проникает в компьютер только при выполнении зараженной программы. Но если компьютер уже заражен, то практически любая операция на нем может привести к заражению программ и файлов, находящихся в памяти и на дискетах, вставленных в дисковод.
При наличии в памяти компьютера программы с телом вируса могут заражаться как выполняемые программы, так и хранящиеся на жестком диске и дискетах, а также файлы на дискетах при просмотре их каталогов, то есть происходит внедрение вируса.
Копия вируса вставляется в зараженную программу таким образом, чтобы при за­пуске зараженной программы вирус получил управление в первую очередь. Первым и
обязательным действием вируса при выполнении инфицированной программы являет­ся саморазмножение. Этот этап может длиться вплоть до уничтожения вирусоносите-ля. Одновременно с внедрением или после некоторого промежутка времени опреде­ленного числа внедренных копий и т. д. вирус приступает к выполнению специальных функций, именуемых еще логическими бомбами, которые вводятся в программное
обеспечение и срабатывают только при выполнении определенных условий, напри­мер, по совокупности даты и времени, и частично или полностью выводят из строя компьютерную систему.
Не следует думать, что логические бомбы — это экзотика, не свойственная наше­му обществу. Логическая бомба, которая срабатывает по достижении определенного момента времени, получила названия временной бомбы. Она «взрывается» неожидан­но, разрушая данные.
Кроме того, часть компьютерных вирусов имеет фазу проявления, которая сопро­вождается визуальными или звуковыми эффектами. Отдельные вирусы сообщают
пользователю о заражении компьютера.
Существует способ внедрения в чужое программное обеспечение, именуемый тро­янским конем (Trojan Horse). Конечно, нельзя узнать, что думали жители Трои на другой день после того, как с радостными криками и песнями вкатили в город огром­ного деревянного коня — «подарок» от якобы побежденных ахейцев. Так же трудно порой бывает восстановить работоспособность компьютера, по «программному полю»


которого «проскачут» такие кони. Действие программ-диверсантов заключается в тай­ном введении в атакуемую программу команд, выполняющих функции, не планируе­мые владельцем программы, но при этом сохранять и прежнюю работоспособность программы.
С помощью троянских программ преступники, например, отчисляют на свой счет определенную сумму с каждой банковской операции. В США получила распростране­ние такая форма компьютерного вандализма, когда «троянский конь» разрушает че­рез какое-то время все программы, хранящиеся в памяти компьютера.
Компьютерные программные тексты обычно чрезвычайно сложны. Они состоят из сотен, тысяч, а иногда и миллионов команд. Поэтому «троянский конь» из нескольких десятков команд вряд ли будет обнаружен, если, конечно, нет подозрений относитель­но его существования в программе, но даже и, предполагая его наличие, экспертам-
программистам потребуется много дней и недель, чтобы найти троянца.
Есть еще одна разновидность «троянского коня». Ее особенность состоит в том, что в безобидно выглядящий кусок программы вставляются не команды, выполняю­щие «грязную» разрушительную работу, а команды, формирующие такие команды и после выполнения их уничтожающие. В этом случае программисту, пытающемуся найти «троянского коня», необходимо искать не его самого, а команды, его формиру­ющие. Развивая эту идею, можно представить себе команды, которые создают другие команды и т. д. (сколь угодно раз), а в итоге, создающие «троянского коня».
Современная техническая литература, посвященная проблемам компьютерных вирусов, изобилует различными терминами, заимствованными из других отраслей на­уки и научно-фантастических книг, поэтому очень часто одни и те же вирусы имеют разное название.
Все известные вирусы можно разделить на классы по следующим признакам:
□ среда обитания;
О способ заражения среды обитания;
О деструктивная возможность;
□ особенности алгоритма вируса.
По среде обитания компьютерные вирусы можно разделить на загрузочные, файло­вые, файлово-загрузочные и сетевые.
Загрузочные (бутовые) вирусы внедряются в загрузочный сектор диска (boot-сек­тор) или в сектор, содержащий системный загрузчик винчестера (Master Boot Record). Часто эти вирусы «всеядны»: они заражают и то, и другое.
Файловые вирусы — в простейшем случае такие вирусы, которые заражают испол­няемые файлы. Если с загрузочными вирусами все более или менее ясно, то файловые вирусы — это гораздо менее определенное понятие. Достаточно, к примеру, сказать, что файловый вирус может вообще не модифицировать файл (вирусы-спутники и виру­сы семейства Dir). Кроме того, к файловым относятся так называемые macro-вирусы. О них мы еще поговорим.
Помимо этого, существуют и их сочетания — например, файлово-загрузочные ви­русы, заражающие файлы и загрузочные сектора дисков. Такие вирусы, как правило, работают по довольно сложным алгоритмам и часто применяют оригинальные мето­ды проникновения в систему. Вирусов этого типа не очень много, но среди них встре­чаются чрезвычайно злобные экземпляры (например, известный вирус OneHalf).


Сетевые вирусы распространяются по компьютерной сети, заражая сотни и тысячи компьютеров. Варианты заражения вирусами представлены заражения среды обитания подразделяется на резидентный и нерезидентный.
Резидентный вирус при инфицировании компьютера оставляет в оперативной па­мяти свою резидентную часть, которая затем перехватывает обращение операцион­ной системы к объектам заражения и внедряется в них. Происходит это следующим образом: резидентный вирус запрашивает у системы участок памяти и копирует себя в него. Он перехватывает прерывания, анализирует их и обеспечивает тем самым уп­равление процессором компьютера. Если следующим этапом жизненного цикла виру­са является инкубационный период, то вирус никак не проявляет себя в течение опре­деленного промежутка времени или до достижения определенного числа подходящих
объектов заражения. После этого наступает этап размножения. Обнаружив обраще­ние к компонентам системы, пригодным для заражения, вирус активизирует процеду­ру копирования. Обычно эта процедура предусматривает проверку, не присутствует ли уже в объекте копия вируса (если копия присутствует, то объект уже заражен); отдельные вирусы проверяют номер версии и заражают объект, если их версия более новая. Если копии вируса нет, то он копируется из памяти в заражаемый объект с
модификацией его первой команды. Объектами заражения в этом случае могут быть
исполняемые программы на жестком диске и дискетах. Резидентные вирусы находят­ся в памяти и активны вплоть до выключения или перезагрузки компьютера.
Многоплатформенный
вирус
Загрузка с зараженного _диска_
Рассылка писем
Заражении) 1RC - каналов
Запуск зараженного ЕХЕ-файла
Варианты заражения вирусами


Нерезидентные (транзитные) вирусы не заражают память компьютера и активны ограниченное время. Некоторые вирусы оставляют в оперативной памяти небольшие резидентные программы, которые не распространяют вирус. Такие вирусы тоже счи­таются нерезидентными.
Транзитные вирусы не остаются в памяти после выполнения зараженной програм­мы. В этом случае вирус перед передачей управления исходной программе ищет еще не зараженный файл, пригодный для внедрения. Тогда выполнение специальных фун­кций не всегда следует за этапом саморазмножения, чтобы успеть создать достаточ­ное количество своих копий, прежде чем факт заражения будет обнаружен. Поэтому
механизм выполнения специальных функций включается достаточно редко и вредные последствия вируса сначала могут быть незаметны. Когда же пользователь заметит изменения в работе компьютера, может оказаться, что вирусом поражены практичес­ки все файлы системы.
По деструктивным способностям вирусы можно разделить на:
□ безвредные; неопасные; опасные; очень опасные.
Безвредные вирусы только уменьшают объем свободной памяти на диске в резуль­тате своего распространения, а больше никак не влияют на работу компьютера.
Влияние неопасных вирусов ограничивается также уменьшением свободной памя­ти на диске и дополнительно сопровождается графическими, звуковыми и другими
эффектами.
Опасные вирусы приводят к серьезным сбоям в работе компьютера.
В результате работы очень опасных вирусов уничтожаются программы, данные,
удаляется необходимая для работы компьютера информация, записанная в системных областях памяти. Особо опасны вирусы, прикрепляемые к объектной библиотеке ка­кого-либо компилятора. Такие вирусы автоматически внедряются в любую програм­му, работающую с инфицированной библиотекой.
Известные в настоящее время вирусы могут выполнять следующие разрушитель­ные функции:
изменение данных в файлах;
изменение данных, передаваемых через параллельные и последовательные порты; изменение назначенного диска (запись информации производится не на диск, указанный пользователем, а на диск, указанный вирусом);
□ переименование файлов (не сообщая об этом пользователю);
О форматирование отдельных частей жесткого диска (дискеты) или даже всего диска
(дискеты);
уничтожение каталога диска; О нарушение работоспособности операционной системы, в результате чего она не воспринимает внешних воздействий пользователя и требует перегрузку;
□ снижение производительности из-за постоянного выполнения паразитных программ;
□ отказ в выполнении определенной функции (например, блокировка клавиатуры, блокировка загрузки программы с защищенной от записи дискеты и т. д.);
□ стирание информации, выводимой на экран дисплея и т. п.;


□ «мелкие» повреждения данных (например, замена первых байтов каждого блока при записи, замена отдельных символов и т. д.), которые пользователь долго не
может обнаружить.
Перечень специальных функций, выполняемых вирусами, практически пополня­ется с каждым новым видом вируса. Исследователи различают множество видов ви­русов, по механизмам размножения и выполняемым специальным функциям. Среди этих видов существует много вариаций (штаммов), которые являются, как правило, результатом усовершенствования одним программистом вируса, созданного другим. Обычно легче модифицировать чужую программу, чем создать оригинальную соб­ственную.
Но даже если в алгоритме вируса не найдено ветвей, наносящих ущерб системе, этот вирус нельзя с полной уверенностью назвать безвредным, так как проникновение его в компьютер может вызвать непредсказуемые, а порой и катастрофические, по­следствия. Ведь в вирусе, как и во всякой программе, встречаются ошибки, в результа­те которых могут быть испорчены как файлы, так и сектора дисков. Возможно также «заклинивание» резидентного вируса и системы при работе в новых версиях DOS, в Windows или в других мощных системах.
По особенностям алгоритма функционирования вирусов их можно подразделить
на следующие группы:
□ компаньон-вирусы (companion);
□ вирусы-черви (worm);
□ паразитические; О студенческие;
О stealth-вирусы (вирусы-невидимки);
□ полиморфик-вирусы (polymorphic); макро-вирусы.
Компаньон-вирусы (companion) представляют собой программы, не изменяющие файлы. Эти вирусы создают для ЕХЕ-файлов, находящихся в памяти компьютера, фай­лы-спутники, имеющие то же самое имя, но с расширением СОМ, например, для фай­ла XCOPY.EXE создается файл XCOPY.COM. Вирус записывается в СОМ-файл и ни­как не изменяет ЕХЕ-файл. При запуске такого файла DOS первым обнаружит и выполнит СОМ -файл, то есть вирус, который затем запустит и ЕХЕ -файл.
Вирусы-черви распространяются в компьютерных сетях. Они, как и компаньон-вирусы, не изменяют файлы или секторы на дисках. Они проникают в память компью­тера из компьютерной сети, вычисляют сетевые адреса других компьютеров и рассы­лают по этим адресам свои копии. Такие вирусы иногда создают рабочие файлы на дисках системы, но могут вообще не обращаться к ресурсам компьютера (за исключе­нием оперативной памяти).
Паразитические вирусы при распространении своих копий обязательно изменяют
содержимое дисковых секторов или файлов. К этой группе относятся все вирусы, ко­торые не являются вирусами-червями или компаньон-вирусами.
Студенческие вирусы — это крайне примитивные вирусы, часто нерезидентные и
содержащие большое число ошибок.
Stealth-вирусы, или вирусы-невидимки, представляют собой весьма совершенные программы, которые перехватывают обращения DOS к пораженным файлам или сек­


торам дисков и «подставляют» вместо себя незараженные участки информации. Кро­ме этого, такие вирусы при обращении к файлам используют достаточно оригиналь­ные алгоритмы, позволяющие обманывать резидентные антивирусные программы.
Способов маскировки вирусов существует великое множество, но все они основа­ны на перехвате вирусами прерываний BIOS и операционной системы. Перехватив
прерывания, вирусы контролируют доступ к зараженным объектам. Например, при просмотре зараженного объекта они могут «подсунуть» вместо него здоровый. Кроме того, вирусы искажают информацию DOS (например, возвращают неверное значения длины файла, скрывая свое присутствие в нем). Для большинства антивирусных про­грамм вирусы, использующие стелс-технологию, являются серьезной проблемой.
— это достаточно трудно обнаруживаемые вирусы, не имею­щие сигнатур, то есть не содержащие ни одного постоянного участка кода. В боль­шинстве случаев два образца одного и того же полиморфик-вируса не будут иметь ни
одного совпадения. Это достигается шифрованием основного тела вируса и модифика­циями программы-расшифровщика.
Вирусы, шифрующие свой код, известны довольно давно. Однако сами процедуры
дешифрования достаточно легко выявить, в частности, потому, что далеко не все авто­ры вирусов имеют достаточно знаний для написания собственных процедур шифрова­ния и дешифрования, поэтому многие вирусы используют для этих целей один и тот же код. Теперь сканеры вирусов ищут определенные процедуры дешифрования. Хотя обнаружение такой процедуры еще ничего не говорит о том, какой именно вирус при­сутствует в зашифрованном виде, но уже сигнализирует о наличии вируса.
Поэтому последней уловкой злоумышленников становится полиморфизм. В пре­жние времена обнаружение вирусов было простым делом: каждый вирус создавал точ­ную копию самого себя при тиражировании и инфицировании новых файлов и загру­зочных секторов, поэтому антивирусным программам требовалось только знать последовательность байтов, составляющих вирус. Для каждого вируса специалисты выявляли уникальную последовательность байтов — его сигнатуру. Наличие такой сигнатуры служило высоконадежным индикатором присутствия нежелательного кода, что и заставило авторов вирусов попытаться скрывать любую последовательность
байтов, способную выдать присутствие их творений. Они стали делать это посред-
ствам шифрования вирусов.
Первые полиморфные вирусы Tequila и Maltese Amoeba появились в 1991 году. Все бы ничего, но в 1992 году автор, известный под псевдонимом Dark Avenger, напи­сал своего рода комплект «Сделай сам» для мутационного механизма, который он
сделал частью вируса Maltese Amoeba.
До 1992 года вирусописатели старались на самом деле зря. Совершенно ясно, что
квалификация профессионалов в сфере антивирусной безопасности никак не ниже их
собственной и, следовательно, все их многомесячные усилия стоили в крайнем случае лишних часов работы для специалистов. Ведь все зашифрованные вирусы обязательно содержали некий незашифрованный фрагмент: сам расшифровщик или некоторую его часть, по которым можно было построить сигнатуру данного вируса и затем уже бо­роться с ним обычными способами.
Ситуация изменилась, когда были придуманы алгоритмы, позволяющие не только
шифровать код вируса, но и менять расшифровщики. Сама постановка такой задачи


вопросов не вызывает: ясно, что можно построить различные расшифровщики. Суть в том, что этот процесс автоматизирован, и каждая новая копия вируса содержит новый
расшифровщик, каждый бит которого может отличаться от битов расшифровщика по­родившей ее копии.
Некоторые вирусы (например, вирусы семейства Eddie, Murphy) используют часть
функций полноценного вируса-невидимки. Обычно они перехватывают функции DOS FindFirst и FindNext и «уменьшают» размер зараженных файлов. Такой вирус невоз­можно определить по изменению размеров файлов, если, конечно, он резидентно на­ходится в памяти. Программы, которые не используют указанные функции DOS (на­пример, Norton Commander), а напрямую обращаются к содержимому секторов,
хранящих каталог, показывают правильную длину зараженных файлов.
При инфицировании файла вирус может производить действия, маскирующие и
ускоряющие его распространение.
К подобным действиям можно отнести обработку атрибута Read-only, снятие его
перед заражением и последующее восстановление этого атрибута. Многие файловые вирусы считывают дату последней модификации файла и восстанавливают ее после заражения. Для маскировки своего распространения некоторые вирусы перехватыва­ют прерывание DOS, возникающее при обращении к диску, защищенному от записи, и
самостоятельно обрабатывают его. Поэтому среди особенностей алгоритма файлово­го вируса можно назвать наличие или отсутствие обработки и скорость его распрост­ранения. Скорость распространения файловых вирусов, заражающих файлы только при их запуске на выполнение, будет ниже, чем у вирусов, заражающих файлы при их открытии, переименовании, изменении их атрибутов и т. д. Некоторые вирусы при создании своей копии в оперативной памяти компьютера пытаются занять область памяти с самыми старшими адресами, разрушая временную часть командного интер­претатора По окончании работы зараженной программы времен­ная часть интерпретатора восстанавливается, при этом происходит открытие файла COMMAND.COM и его заражение, если вирус поражает файлы при их открытии.
Формально macro-вирусы являются файловыми вирусами, заражающими файлы не­которых систем обработки документов (например, Word for Windows, Excel for Windows
и AmiPro). Указанные системы имеют встроенные макро-языки (Word Basic, Visual Basic). Эти языки обладают достаточными возможностями, чтобы производить практически все
операции, необходимые вирусу. Имеются даже шифрованные и полиморфные macro-
вирусы. Кроме того, все чаще стали встречаться вирусы, поражающие как документы, так и исполняемые файлы (иногда обычные ЕХЁ-файлы, иногда NewEXE, иногда и те, и другие). Инфицирующая способность таких вирусов крайне велика.
В настоящий момент более 90% macro-вирусов написаны для Word for Windows.
Это без сомнения объясняется тем, что файлы данного текстового процессора факти­чески стали стандартом для текстовых документов. Самый первый macro-вирус (Word. Concept) также заражал DOC-файлы.
Большинство макро-вирусов имеют типичную структуру. Они начинаются с авто­матически выполняющегося макроса, заражающего глобальный шаблон Также в их состав входят некоторые макросы, которые заражают файлы при опреде­ленных действиях (File > Save As, File > Save и Tools > Macros). Документы заражают­ся при совершении над ними операций, то есть инфицируются уже при открытии.


Макрос — это программа, написанная на некотором языке, обычно используемая для автоматизации определенных процессов внутри приложений. В данном случае разговор пойдет о языках Visual Basic for Applications (VBA) и WordBasic (WB), кото­рые применяет Microsoft в своих программах (в частности, Excel, Project и PowerPoint используют язык VBA, a WinWord — WB).
Макрос VBA представляет собой вызываемые процедуры. Они бывают двух типов: процедуры-подпрограммы;
□процедуры-функции.
Процедуры-подпрограммы могут выполняться непосредственно или вызываться из других макросов. Конечно, в документ можно вставить столько макросов, сколько нуж­но (или сколько хочется), ограничений на их количество нет. Набор макросов (проце­дур-подпрограмм и гфоцег^р-функций), входящих в документ, называется модулем VBA.
Язык VBA универсален, и тому есть несколько причин.
1. Этот язык прост в изучении и использовании. Поскольку он является языком визуального программирования, то ориентирован на события, а не на объекты. С его помощью без особых затрат времени очень легко создавать сложные модули.
2. Можно использовать большое количество предопределенных функций, облегча­ющих работу.
3. Имеются функции (или макросы), выполняющиеся автоматически, за счет чего упрощается написание процедур автокопирования и занесения в память, используе­мых стандартными DOS-вирусами.
Существуют функции, единые для всех версий языка VBA вне зависимости от ис­пользуемого языка (английского, русского, испанского и т. д.). Таких специальных макросов 5, все они выполняются автоматически:
О AutoExec— активизируется при загрузке текстового процессора, но только в том случае, если он сохранен в шаблоне Normal, dot или в каталоге стандартных приложений;
G — активизируется при создании нового документа;
AutoOpen — активизируется при открытии существующего документа; О AutoClose — активизируется при закрытии документа;
AutoExit — активизируется при выходе из текстового процессора.
Процедура SaveAs использует технологию, во многом схожую с процедурой
AutoExec. Она копирует макро-вирус в активный документ при его сохранении через
команду File > SaveAs.
Существует несколько способов скрыть вирус или сделать его более эффективным.
Например, можно создать специальный макрос, прячущий вирус, если меню Tools > Macro открывается для просмотра.
Макро-вирусы также могут включать внешние процедуры. Например, вирус Nuclear пытается откомпилировать и запустить внешний файл-разносчик вируса, некоторые троянские макросы форматируют винчестер при открытии документа.
Рассмотрим несколько подробнее, как действуют наиболее распространенные ви­русы, их особенности, способы внедрения и осуществления разрушительных воздей­ствий.
Начнем с вирусов, поражающих файлы с расширением СОМ (СОМ-файлы). Суще­ствует несколько способов внедрения таких вирусов.


Структура стандартного СОМ-файла (программы) предельно проста. Он содер­жит только код и данные программы, не имея даже заголовка. В начале СОМ-файла обычно находится команда безусловного перехода JMP, состоящая из трех байт. Бла­годаря простому строению СОМ-файла в него очень просто добавить тело вируса и затем указать его адрес в команде JMP.
После старта вирус ищет в текущем каталоге СОМ-файлы. После нахождения нуж­ного файла тело вируса добавляется в конец этого файла, туда же переносится ориги­нальный адрес перехода по JMP, на место которого записывается адрес команды JMP для безусловного перехода на тело вируса.
После загрузки зараженного файла управление получает вирус. Закончив работу, он восстанавливает оригинальный адрес безусловного перехода JMP и передает уп­равление программе, как это показано на рис.
После того как вирус закончит свою работу, он восстанавливает в исходное состояние первые три байта программы (в памяти компьютера) и передает управление на начало программы. Далее, при запуске зараженного файла, управление сначала получает вирус, и только затем — исходная программа. Благодаря такой схеме работы рассматриваемый вирус может спокойно существовать, будучи «выпущенным на волю» один раз.
Кроме такого способа внедрения, существуют и другие способы внедрения СОМ-вирусов. Рассмотрим два варианта внедрения СОМ-вируса в начало файла:
1. Чтобы освободить место для себя, вирус переписывает начало программы в ко­нец файла. После этого тело вируса записывается в начало файла, а небольшая его часть, обеспечивающая перенос вытесненного фрагмента программы, — в конец фай­ла. При восстановлении первоначального вида программы тело вируса будет затерто, поэтому код вируса, восстанавливающий программу, должен находиться в безопас­ном месте, отдельно от основного тела вируса. Схема этого способа внедрения изоб­ражена загрузке файла, зараженного таким способом, управление получит вирус (так как он находится в начале файла). По окончании работы вирус передает управление коду, переносящему вытесненную часть программы на прежнее место. После восста­новления (в памяти, не в файле) первоначального вида программы, она запускается.
2. Второй вариант отличается от первого тем, что вирус, освобождая для себя мес­то, сдвигает все тело программы, а не переносит ее часть в конец файла. Этот способ внедрения и схема работы вируса изображены запуска зараженной программы, как и в предыдущем случае, управление получает вирус. Дальнейшая работа вируса отличается только тем, что часть вируса, восстанавливающая первоначальный вид программы, переносит все тело программы, а не только вытесненную часть
Кроме указанных, существуют вирусы, не дописывающие часть своего тела в конец файла. К примеру, вирус может внедряться в середину файла. В этом случае алгоритм работы вируса является смесью алгоритмов, рассмотренных выше.
(небольшие программы, написанные, в основном, на языке Assembler) со временем устаревают, поэтому им на смену пришли пугающие своими размерами ЕХЕ-файлы. Появились и вирусы, умеющие эти файлы заражать.
По особенностям алгоритма, условно можно разделить на следующие
группы:


□ вирусы, замещающие программный код (Overwrite);
□ вирусы-спутники (Companion);
О вирусы, внедряющиеся в программу (Parasitic).
Вирусы, замещающие программный код, уже стали раритетом: фактически вирусы дан­ного вида давно мертвы. Изредка появляются еще такие вирусы, созданные на языке Assembler, но это, скорее, соревнование в написании самого маленького overwrite-вируса. Главный их недостаток — слишком грубая работа. Инфицированные ими программы не исполняются, так как вирус записывается поверх программного кода, не сохраняя его. При запуске вирус ищет очередную жертву (или жертвы), открывает найденный файл для редактирования и записывает свое тело в начало программы, не сохраняя оригинальный код. Инфицированные этими вирусами программы лечению не подлежат.
Вирусы-спутники получили такое название из-за алгоритма их размножения: для каждого инфицированного файла создается файл-спутник. Рассмотрим более подроб­но два типа вирусов этой группы, отличающихся методом заражения файлов:
□ путем создания СОМ-файла спутника; путем переименования
Инфицирование методом создания СОМ-файла спутника заключается в том, что­бы, не трогая файл (ЕХЕ-программу), создать свою — СОМ-файл с именем ЕХЕ-программы. Алгоритм работы такого вируса предельно прост, так как не нужны лишние действия: например, сохранение в теле вируса размера откомпилированного ЕХЕ-файла с вирусным кодом, считывание в буфер тела вируса, запуск файла, из которого вирус получил управление. Незачем даже хранить метку для определения инфицирования файла.
Для каждого инфицируемого ЕХЕ-файла в том же каталоге создается файл с вирус­ным кодом, имеющий такое же имя, что и ЕХЕ-файл, но с расширением СОМ. Вирус активируется, если при запуске программы в командной строке указано только имя исполняемого файла, без расширения. Дело в том, что DOS сначала ищет в текущем каталоге файл СОФАЙЛ с заданным именем. Если СОМ-файл с таким именем не най­ден, отыскивается одноименный ЕХЕ-файл. Если и он не найден, DOS попробует об­наружить файл с расширением ВАТ (командный). В случае отсутствия в текущем каталоге исполняемого файла с указанным именем поиск ведется во всех каталогах. Другими словами, когда пользователь хочет запустить программу и набирает в команд­ной строке только ее имя (обычно так все и делают), первым управление получает вирус, код которого находится в Он создает СОМ-файл еще к одному
или нескольким ЕХЕ-файлам (распространяется), а затем исполняет ЕХЕ-файл с име­нем, указанным в командной строке. Пользователь же думает, что работает только запущенная ЕХЕ-программа. Вирус-спутник обезвредить довольно просто - доста­точно удалить СОМ-файл.
Инфицирование методом переименования ЕХЕ-файла несколько совершеннее пре­дыдущего, т. к. для излечения от такого вируса нужно не просто удалить СОМ-файл с кодом вируса, а разыскать имя переименованного ЕХЕ-файла, содержащего инфици­рованную программу. Что же происходит?
Имя инфицируемого ЕХЕ-файла остается прежним, а расширение заменяется
каким-либо другим, отличным от исполняемого (COM, EXE, BAT, DAT, OVL и др.). Затем на место ЕХЕ-файла копируется вирусный код. При запуске такой инфици­рованной программы управление получает вирусный код, находящийся в ЕХЕ-файле. Инфицировав еще один или несколько ЕХЕ-файлов таким же образом, вирус
возвращает оригинальному файлу исполняемое расширение (но не EXE, a COM, поскольку ЕХЕ-файл с таким именем занят вирусом), после чего исполняет его. Когда работа инфицированной программы закончена, ее запускаемому файлу воз­вращается расширение неисполняемого. Лечение файлов, зараженных вирусом этого типа, может быть затруднено, если вирус-спутник шифрует часть или все тело инфицируемого файла, а непосредственно перед исполнением его расшифро­вывает.
Вирусы, внедряющиеся в программу (Parasitic), — самые незаметные. Их код запи­сывается в программы, что существенно затрудняет лечение зараженных файлов и дает этому вирусу много преимуществ перед всеми вышеописанными вирусами: на диске не появляются лишние файлы, нет забот с копированием и переименованием файлов. Рассмотрим методы внедрения ЕХЕ-вирусов в ЕХЕ-файл. Эти вирусы услов­но можно разделить на три категории, использующие: стандартное заражение ЕХЕ -файлов; □ сдвиг; перенос.


При стандартном заражении вирус внедряется в конец файла, изменяет заголовок так, чтобы после загрузки файла управление получил вирус. Действие такого вируса
мало чем отличается от действия СОМ-вируса. Оно похоже на заражение СОМ-фай­лов, но вместо задания в коде перехода в начало вируса корректируется собственно адрес точки запуска программы. После окончания работы вирус берет из сохраненно­го заголовка оригинальный адрес запуска программы, прибавляет к его сегментному компоненту значение регистра DS или ES (полученное при старте вируса) и передает управление на полученный адрес.
Внедрение вируса способом сдвига основано на размещении вируса в начале файла со сдвигом кода программы. Механизм заражения такой: тело инфицируемой програм­мы считывается в память, на ее место записывается код вируса, а на место последнего — код инфицируемой программы. Таким образом, код программы как бы «сдвигается» в
файле на длину кода вируса. Отсюда и название способа — «способ сдвига». При за­пуске инфицированного файла вирус заражает еще один или несколько файлов. После этого он считывает в память код программы, записывает его в специально созданный
на диске временный файл с расширением исполняемого файла (СОМ или ЕХЕ), и затем исполняет этот файл. Когда программа заканчивает работу, временный файл
удаляется. Если при создании вируса не применялось дополнительных приемов защи­ты, то вылечить инфицированный файл очень просто. Для этого достаточно удалить код вируса в начале файла и программа снова будет работоспособной. Недостаток это­го метода заключается в том, что нужно считывать в память весь код инфицируемой программы.
Способ заражения файлов методом переноса — самый совершенный из всех пере­численных. Вирусы, использующие для внедрения перенос, размножаются следую­щим образом. Из инфицируемой программы от начала файла считывается часть кода, по размеру равная длине вируса. На освободившееся место вписывается вирус, а ори­гинальное начало программы переносится в конец файла. Отсюда и название метода. После того как вирус инфицировал один или несколько файлов, он выполняет про­грамму, из которой запустился. Для этого он считывает начало инфицированной про­граммы, сохраненное в конце файла, и записывает его в начало файла, восстанавливая работоспособность программы. Затем вирус удаляет код начала программы из конца файла, восстанавливая оригинальную длину файла, и исполняет программу. После завершения программы вирус вновь записывает свой код в начало файла, а оригиналь­ное начало программы — в конец. Этим методом могут быть инфицированы даже ан­тивирусы, которые проверяют свой код на целостность, так как запускаемая вирусом программа имеет точно такой же код, как и до заражения.
Есть и другие варианты. Иногда, например, начало программы записывается в се­редину файла, а середина переносится в конец, чтобы еще сильнее все запутать. Пре­имущество данного метода над другими состоит в том, что инфицированная програм­ма исполняется в том же виде, в каком она была до заражения: из файла с тем же именем и расширением, то есть программы, проверяющие себя на предмет заражения, не замечают вируса.
Недостаток данного метода проявляется при сбоях в работе компьютера. Если при исполнении инфицированной программы компьютер зависнет или произойдет пере­загрузка системы, инфицированная программа окажется «чистой», без вируса.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика