Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [ 39 ] 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88


Ш "приваживаемые", т. е. злоумышленник должен добавить в файлы системной конф гурации команды активизации троянца, записанного им на компьютер-жертву вру ную или по сети.

Классификация по методу скрытия своего нахождения в системе. По методу скр,, тия своего наличия в системе вирусы бывают:

не скрывающие своего наличия в системе;

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

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

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

Свойства "невидимости" и полиморфности (или самозашифровки) могут, очевидно, быть скомбинированы.

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

Классификация по исходному языку программирования. Вредные прогр; могут быть написаны на:

языке Ассемблера;

языке высокого уровня;

командном языке ОС;

Ш встроенном языке/макроязыке прикладного профаммного комплекса.

3.2.2.1. Стандартные алгоритмы заражения файловыми вирусами

Вирусы-спутники заражают профамму, никак не изменяя содержимое профаммного файла- Существуют два алгоритма заражения вирусом-спутником. Первый из них основан на том, что командный процессор DOS при вводе имени запускаемой профаммы без расширения сначала ищет файл с расширением СОМ, затем ЕХЕ, и в последнюю очередь - ВАТ. Такой вирус-спутник, найдя ЕХЕ-файл, просто создает файл с тем же именем и расширением СОМ. Активность таких вирусов полностью или почти полностью парализуют обычные файловые оболочки типа VC/DN/NC, которые по клавише ENTER запускают выполнимый файл с указанием расширения.

Второй алгоритм заражения вирусами-спутниками основан на том, что офаничения на расширение выполнимого файла накладывает только командный процессор. Функции же DOS, зафужающие и выполняющие профамму, позволяют запускать на вшолнение файлы с любым расширением. Вирус-спутник, реализующий данный алгоритм, находит ЕХЕ-файл, переписывает его содержимое в файл с тем же именем и другим расширением, а в ЕХЕ-файл записывается код вируса. Расширение, под которым хранится программа-жертва, может быть либо стандартным, либо оно дописывается в конец ЕХЕ-файла, после кода вируса (в этом случае вирус должен знать свою длину - для вирусов на Ассемблере это просто, для HLLC (High Level Language, Companion) вирусов требуется смотреть размер готового файла вируса, править, если надо, константу в исходном тексте, перекомпилировать вирус заново и заново его сжимать).

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

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

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

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

2,2, Алгоритмы заражения



Глава 3. Программные средства защиты информации 249

ца диске дополнительную дорожку (чаще всего при заражении дискет) и копирует

область-жертву и "хвост" (если он есть) туда.

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

Troian.Suфrise.456.

3.2.2.3. Модификации алгоритмов заражения

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

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

Задача резко усложняется, если вирус разделен на несколько подпрофамм и относит произвольное число этих подпрофамм к "хвосту" при каждом новом заражении. Такой вирус, не будучи полиморфным, может не иметь фиксированных сигнатур не только относительно начала или конца файла, но и относительно точки входа (впрочем, последнее бывает очень редко). Чистка такого вируса может потребовать либо проверки сигнатур каждой из этих подпрограмм с вычислением длин головы и хвоста, либо даже прохода от точки входа по командам вызова подпрофамм (если вирус может пермутировать, т. сменять их местами и не терять при этом работоспособность).

Еще сложнее чистка вирусов, "пятнающих" файл-жертву. Так, вирусы OneHalf стандартно дописывают в конец файла свой зашифрованный код, но полиморфный расшифровщик сохраняется в десяти "пятнах" по 10 байт, раскиданных по профамме-жертве.

Псевдозафузочные вирусы (например, "ЗАРАЗА") поражают не зафузочные сектора, а системные файлы, находящиеся в фиксированных областях на диске. Эти файлы записываются в другое место (нередко при этом модифицируется корневой каталог, в нем появля-я второй файл с именем зараженного, но система его не видит - видит вирус, который "•итает каталог напрямую), а вирус пишется поверх системного файла. Для чистки такого Вируса необходимо прямое обращение к FAT и корневому каталогу.

Возможно появление и других алгоритмов заражения или их модификаций.

3-2.2,4. Алгоритмы заражения резидентными вирусами

Резидентные вирусы не обходят каталоги в поиске файлов, подходящих для зараже-uV ™ перехватывают системные прерывания (или - в других ОС - системные вызо-> в число аргументов которых входит и имя файла (или его можно определить по дру-

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

Вирус, стандартно дописывающийся в конец файла, вычисляет смещение точки вхол в себя, запоминает первые несколько байт (обычно 3, реже 5 или 6) и записывает на место команду передачи управления на себя. Завершаясь, вирус выполняет запомненн! команды, либо (что более надежно) восстанавливает байты по адресу CS: lOOh и пере] ет туда управление, например, так:

mov ах, lOOh push ах retn

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

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

Вирусы, заражающие структуризованные выполнимые файлы (MZ ЕХЕ, LE ЕХЕ, ELF и т. д.), применяют более сложные алгоритмы заражения.

Вообще вирус опасен, если он некорректно выявляет структуру выполнимого файла. Так, опасны все вирусы, выявляющие СОМ/ЕХЕ-файлы по расширению - они портят файлы, у которых расширение не соответствует внутренней структуре.

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

3.2.2.2. Стандартные алгоритмы заражения загрузочными вирусами

Зафузочные вирусы заражают системные области по трем стандартным алгоритмам. Первый алгоритм, используемый, например, вирусом "Brain", заключается взапис

области-жертвы (и "хвоста" вируса, если вирус не помещается в один сектор) в свободны

от файлов кластер, который помечается в FAT как сбойный.

Второй алгоритм, используемый, например, вирусом "Stone", - область-жертва коп

руется в неиспользуемые или редко используемые сектора. Иногда вирус форматирУ



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

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

В первом алгоритме содержимое файла-жертвы дописывается полностью в конец gHpyca. Во втором алгоритме из начала заражаемого файла "вырезается" фрагмент того

размера, что и вирус. Он дописывается в конец файла, а вирус читает себя из своего файла-носителя и записывает на освободившееся место. Иными словами, оба эти алгоритма не предусматривают ни модификации ЕХЕ заголовка профаммы-жертвы, ни передачи ей управления из тела вируса командами CALL FAR, JMP FAR или RETF, ни считывания копии вируса из памяти при заражении очередного файла. Копия вируса просто считывается из начала зараженного файла, откуда вирус был запущен. После выполнения же заражающих алгоритмов вирус создает некоторый исполнимый файл, переписывает туда код зараженной профаммы и запускает этот файл, а потом удаляет его. Известны и еще более нелепые варианты - например, вирус HLLP.Mlya 24.12991 создает такой исполнимый файл, потом создает ВАТ-файл, запускающий и стирающий этот файл и запускает созданный ВАТ-файл.

Рассмотрим, к каким деструктивньгм последствиям могут привести такого рода алгоритмы заражения.

Запаковка и распаковка исполнимых файлов. Исполнимый файл, зараженный HLLP-вирусом, с точки зрения DOS, представляет собой относительно короткую программу с "хвостом", который может быть оверлеем или чем-то еще. При этом вирус, как правило, уже запакован. Часть запаковщиков исполнимых файлов (PKLite, DIET без опции командной строки -i, WWPACK и т. д.) просто не пакуют такие файлы, так как либо распознают файл с хвостом, либо не могут сжать уже запакованный вирус. Однако есть профаммы, способные запаковать такой файл.

Относительно корректно сделанные HLLP-вирусы (например, HLLP.Yarik.7991) при спуске проверяют свою сигнатуру и, не найдя ее, сообщают об этом, просят распаковать файл и отказываются работать. Но это зачастую не помогает. Тот же самый HLLP.Yarik.7991 "Осле такой распаковки становится невычищаемым.

Замещение вирусами существующих исполнимых файлов. HLLP-вирус, автор которого и в мыслях не имел профаммирования деструктивных функций, на поверку ожет оказаться очень опасным, и это не следствие ошибок в реализации алгоритмов ражения, как случается с вирусами на Ассемблере. Нужные исполнимые файлы или Фйлы данных могут быть стерты таким вирусом из-за нефамотного подбора имен и/или Расширений файлов, которыми манипулирует вирус.

гим аргументам). Резидентный вирус может заражать файлы при их открытии, закрыт переименовании, запуске на выполнение и т. д. Теоретически можно сделать вщ заражающий файлы, например, при смене позиции в файле, но в перехвате таких фу ций для заражения - такой вирус был бы достаточно заметен уже по замедлению раб( машины. Системные функции типа смены позиции в файле перехватывают только pt: дентные "стелс"-вирусы, чтобы не дать другим программам записать что-либо повеох кода вируса, испортив его.

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

Существуют три алгоритма этой проверки. Первый алгоритм - перехват некоторого прерывания с введением новой функции "Я здесь", которую и вызывает вирус в начале своего выполнения. Второй алгоритм - сканирование памяти компьютера на предмет своих сигнатур - чаще всего применяется вирусами, записывающими резидентную копию в строго определенные адреса, например, в страницы видеопамяти с ненулевыми номерами (в расчете на пользователя, сидящего в текстовом видеорежиме 80*25). Однако возможно и базирование относительно вектора перехватываемого прерывания при проверке сигнатуры. Третий алгоритм основан на том, что резидентные вирусы уменьшают слово размера памяти DOS, например, ставят 639К вместо 640. Выполнение этого условия означает зараженность памяти (не обязательно данным вирусом).

3.2.2.5. Опасность алгоритмов заражения HLLP вирусами

HLLP (High Level Language, Parasitic) вирусы представляют собой программы, написанные на языке высокого уровня. В этом и заключается их главная опасность.

Дело в том, что эти профаммы компилируются в исполнимый файл формата ЕХЕ, который, в отличие от СОМ-файла, дампом кода профаммы в памяти не является. Сделать HLLP-вирус, который читает себя из памяти и заражает исполнимый файл нормальным способом, т. е. дописывая себя к файлу, сохраняя точку входа в своем теле (для передачи управления профамме-жертве) и модифицируя заголовок ЕХЕ - задача сложная требует высокой квалификации и хорошего знания используемого компилятора на уро не генерируемого им кода. Как бы парадоксально это ни звучало, вирус с нормальные алгоритмом заражения проще написать на Ассемблере, чем на Паскале или Си. Авторь" же HLLP-вирусов Ассемблер, как правило, не знают и знать не хотят. Поэтому они в по давляющем своем большинстве реализуют примитивные алгоритмы заражения, которые по сути дела, представляют собой неявные деструктивные функции. Причина этог" в том, что при заражении нового файла типичный HLLP-вирус читает себя не из памят" а из того файла, откуда он запустился.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [ 39 ] 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88