Реферат: Полиморфные вирусы

Введение вполиморфизм

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

Как же ониработают? Вообще, полиморфизм — высококлассная техника, позволяющая вирусу бытьнезамеченным по стандартной сигнатуре (или, попросту, маске). Обычно детекторыопределяют вирус по характерным кускам его кода. В случае с полиморфным вирусомтакое не пройдет. Два файла, зараженные одним и тем же вирусом, всегда будут иметьразный размер. Засечь такой вирус очень сложно.

Все полиморфныевирусы обязательно снабжаются расшифровщиком кода, который по определенномупринципу преобразует переданный ему код, вызывая при этом стандартные функции ипроцедуры операционной системы. Сами методы шифрования могут быть разными, но,как правило, каждая операция имеет свою зеркальную пару. В ассемблере этореализуется очень просто, и таких пар может быть много — ADD/SUB, XOR/XOR,ROL/ROR и т.п. Подобные операции проводятся для расшифровки ячеек памяти.

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

1. Сложностьизучения кода при трассировке файла. Эта цель актуальна лишь для новичка,профессионал, который  изучением вирусовзанимался многие годы, сразу во всем разберется.

2. Увеличениеэлемента случайности в расшифровщике. Место их вставки имеет огромное влияниена размер кода. С мусором же появляются новые варианты компоновки кода. Размерпри каждом из них будет разным.

Ассемблер даетбезграничные возможности по вставке мусора, поэтому вставки могут бытьразличными. Вот некоторые их виды:

1. Регистровыеоперации. Как правило, арифметические и логические. Примером могут служитьследующие команды: inc ax; mov ax,[si+bx-04]; add ax,1234h и др.

2. Зеркальныекоманды. Такие, как add/sub, inc/dec и прочие.

3. Ложные переходы,а также вызов подпрограмм, содержащих мусор (jmp $+10h; call XXXXh).

4. Простой мусор изодиночных операндов (daa; nop; cld и т.д.).

Выделяют несколькоуровней полиморфизма, используемых в вирусе. Каждый из них по-разному реализуетнеодинаковый размер файлов, которые были заражены.

Уровень 1. Самыепростые олигоморфные вирусы. Они используют постоянные значения для своихрасшифровщиков, поэтому легко определяются антивирусами. Из за этого такиевирусы  прозвали «не оченьполиморфными». Примеры таких вирусов: Cheeba, December_3, Slovakia,V-Sign, Whale.

Уровень 2. Вирусы,имеющие одну или две постоянные инструкции, которые используются врасшифровщике. Также определяются по сигнатуре, но имеют более сложноестроение, чем представители первого уровня. Примеры:ABC, DM, Flip, Jerusalem, Ontario, PC-Flu, Phoenix, Seat, Stasi, Suomi.

Уровень 3. Вирусы,использующие в своем коде команды-мусор. Это, в своем роде, ловушка отдетектирования, помогает запутать собственный код. Но такой вирус может бытьзасечен с помощью предварительного отсеивания мусора антивирусом. ВирусыTequila, StarShip, V2Px, DrWhite принадлежат к третьему уровню полиморфизма.

Уровень 4.Использование взаимозаменяемых инструкций с перемешиванием в коде, бездополнительного изменения алгоритма расшифровки, помогает полностью запутатьантивирус. При этом невозможно «поймать» вирус по стандартной маске.Приходится выполнять перебор, после которого нужная сигнатура будет найдена.Так были написаны вирусы Uruguay, CLME, APE.

Уровень 5.Реализация всех вышеизложенных уровней с поддержкой различных алгоритмов врасшифровщике помогает достичь высокого уровня полиморфизма. При этом можетсуществовать несколько параллельных процессов расшифровки, когда один будетпреобразовывать код другого или наоборот. Распознавание таких вирусов — оченьсложный процесс. Для этого необходимо произвести тщательный анализ кода самогорасшифровщика. С лечением сложнее — приходится трассировать не толькогенератор, но и тело самого вируса для выявления полной информации о зараженномфайле. Эта процедура занимает довольно продолжительное время и может закончитьсянеудачно. Лечить вирусы этого уровня может лишь DrWeb, в остальных программахэто попросту не реализовано. К представителям уровня относятся DAME и др.

Уровень 6(неизлечимый). И, наконец, существуют вирусы, которые состоят из программныхединиц-частей. Они постоянно меняются в теле и перемещают свои подпрограммы.Лечение таких вирусов пока не производится, но и для написания нужно оченьхорошо разбираться в ассемблере. Характерной особенностью такой заразы являютсяпятна. При этом в различные места файла записывается несколько блоков кода, чтообуславливает название метода. Такие пятна в целом образуют полиморфныйрасшифровщик, который работает с кодом в конце файла. Для реализации методадаже не нужно использовать команды-мусор — подобрать сигнатуру будет все равноневозможно. Такой алгоритм используют вирусы BadBoy, CommanderBomber, Leech ит.п.

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

Любой можетнаписать хороший полиморфный вирус. Необходимо лишь немного разбираться вассемблере. На создание среднего полиморфного вируса тратится не более шестичасов.

Очень простареализация поиска зеркальных команд. Для этого необходимо создать своднуютаблицу с операндами. К ней должна прилагаться дополнительная информация:наличие зеркала, необходимость замены команды и прочее. Если человек немногопонимает в вирусологии и ассемблере, то составить подобную таблицу ему будетнесложно. С командами-мусором можно поступить аналогичным образом, как и сзеркалами.

Кстати о мусоре. Ктаким инструкциям прилагается ряд ограничений, которые должен исполнять каждыйвирусописатель, чтобы его творение работало как следует. Итак, команда недолжна:

1. Передаватьуправление за внешнюю программу. То есть управлять кодом может лишьрасшифровщик и никто другой. Если нарушить это правило — вирус будет замечен.

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

3. Вызыватьфатальные ошибки, а также генерировать исключения, так как это остановит работурасшифровщика, либо сделает ее неверной.

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

Еще надо ставитьнерабочую команду после цикла, но перед шифрованным кодом — это избавит отнекоторых проблем с конвейером у процессоров Pentium.

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

Вирусописателипрежде всего акцентируют внимание на трех главных вещах в своем творении:

1. Маскировка. Целькаждого полиморфного вируса — как можно дольше продержаться в системе додетектировании антивирусом.

2. Защита. Послеобнаружения заразы происходит вызов исключающего кода.

3. Сложность. Кодвируса должен быть очень запутанным, содержать в себе инструкции-зеркала,команды-мусор и прочее. Это обычно работает против новичка, но профессионал втечение нескольких часов изучения кода при трассировке, проследит за алгоритмомвируса.

Первый полиморфный  вирус появился в 1990 году и называлсяChameleon. Он вписывал свой код в конец COM-файлов, а также использовал дваалгоритма шифрования. Первый шифрует тело по таймеру в зависимости от значениязаданного ключа. Второй использует динамическое шифрование и при этом активномешает трассировке вируса. Существовала и модификация Chameleon. Вторая версия1 апреля форматировала диск A: (учитывая объемы того времени, это было весьманеприятно).

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

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

На 1993 год пришлосьочень много полиморфных вирусов. При этом программисты, видимо, соревновалисьмежду собой и решали, чей вирус окажется круче всех. Появлялись все новыедешифраторы, которые использовались другими вирусописателями для своих грязныхцелей. Одним из таких опасных вирусов был Predator, который перехватывалпрерывания 13h и 21h и записывал себя в конец всех COM-файлов. Используя int13h, вирь проверял сектора, считываемые с дисков, и изменял в них один бит вопределенное время.

Другое семействовирусов Daemaen записывает себя в COM, EXE и SYS-файлы. При этом бинарники,начинающиеся на SC, VF и F-, не заражаются. С виду эти вирусы выглядят вполнебезопасно, но на самом деле происходит запись в MBR винчестера и в boot-секторадискет, а тело заразы хранится в последних секторах. Вирь содержит в себе рядошибок, которые вполне могут разрушить FAT.

Вирусописателиобычно оставляют вместе с вирусом какую-либо информацию. Так, например,полиморфный вирус Invisible записывается в конец исполняемых файлов. Взависимости от времени зараза заменяет файл другой программой, при запускекоторой юзер слышит музыку и видит перед собой текст песни I'm the invisibleman (хит тех времен). Еще один пример — вирус Seat. После заражения вирусперехватывает 21h, записывает себя в исполняемые файлы. Время от времени наэкране компьютера появляется визульные эффекты, а при нажатии на клавишираздаются звуки ;).

В это же времягруппа программистов из болгарской школы создает полиморфный вирус Todor. Он неиспользовал высококлассных алгоритмов. Его изящность заключалась в том, чтоонразрабатывался по новой технологии. Вес вируса составлял ровно 1993 байта, чтосоответствовало году выпуска.

При запуске Тодорапроисходит расшифровка его тела. Для этого используется  довольно простой алгоритм, основанный на XOR.С каждым шагом слово вируса XOR’ится с непостоянным ключом. После активацииперехватывается адрес 24h и происходит заражение файла command.com. Вдовершение вирус поражает 5 файлов с расширением COM или EXE.

Особенностью вирусаявляется то, что он проверяет носитель на возможность записи. Перед заражениемкаждого бинарника создается временный файл (затем удаляется). Когда этоневозможно (адрес 24h нужен для возврата именно таких ошибок), заразапрекращает свою деятельность, считая, что носитель защищен от записи. Атрибутыи дата файла после заражения становятся прежними. Лишь значение секундстановится равным 22. Это сделано для того, чтобы не инфицировать бинарникповторно (вирус проверяет дату во время поиска). К тому же, 15 числа каждогомесяца, вирус случайным образом шифрует сектор жесткого диска. Это делаетполиморфного вируса  довольно опасным,так как сектором может являться и Root Directory.

Не обошлось и безошибок. Todor некорректно проверяет длину файла. Точнее, если она будет более64 Кб, заразить файл не удастся, а компьютер зависнет. Вторая ошибказаключается в том, что в теле расшифровщика содержится лишняя команда POP.Файл, в который она попадет, неминуемо повиснет после запуска. И напоследок,заражая бинарник, вирус сначала изменяет заголовок файла, а затем записываетсебя в его конец. При ошибке записи либо переполнении носителя исполняемый файлбудет испорчен, и восстановить его уже не удастся.

После выхода Тодорамир узнал о новом полиморфик- генераторе TPE (Trident Polymorphic Engine),который распространялся в архивах BBS с подробным кодом и документацией поиспользованию. Благодаря этому, стали появляться вирусы (семействоTPE), использующие этот модуль.

К концу 1993 годагенераторов стало выпускаться очень много. Антивирусы не справлялись с такимпотоком, это также обуславливалось улучшением технологии полиморфизма.

Рассмотрим примеры.Дешифратор SPE позволял записывать код вируса в исполняемые файлы иорганизовывал специальный счетчик. При его определенных значениях, вирус стиралсодержимое MBR винчестера и перезагружал компьютер. Некоторые генераторыреагировали на команды, введенные пользователем. Например, VICE заражал файлы вкаталоге лишь тогда, когда пользователь в него входил. Также дешифратор умелудалять базы антивируса.

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

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

еще рефераты
Еще работы по компьютерам. программированию