Файл: Исследование проблем борьбы с вирусами и антивирусные программы ..pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 06.04.2023

Просмотров: 204

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

С увеличением числа вирусов число антивирусов выросло - так рано или поздно новые версии вредоносного ПО попадут во все антивирусные базы! Одним из переходных моментов было появление первых полиморфных вирусов - вредоносных программ, способных частично (в разной степени) изменять их тело во время их воспроизведения (ну, это не совсем точно сказано - на самом деле это полиморфизм дескриптора) , Это означало, что поиск «доброй старой» подписи оказался бесполезным. Поскольку у вируса нет четкой структуры, это означает, что невозможно выделить четкую подпись ... Я думаю, что теперь все стало ясно. Кстати, стоит отметить, что полиморфы не появились сразу - этой технологии предшествовали так называемые «самошифрующие» вирусы.

Фактически, они состояли из 2 частей: тела самого вируса и кодировщика / декодера. Во время воспроизведения основное тело было зашифровано разными ключами (иногда с разными алгоритмами), и был добавлен код дешифрования. Когда вы запускаете зараженный файл (я немного бегу впереди, я скажу, что эта технология получила новое изменение сегодня), декодер восстанавливает основную часть вируса и передает управление ему. Результат был почти полностью отличен от оригинала. Опять же, для обнаружения был использован сложный подход подписи. Т.е. в качестве исходной подписи использовались постоянные секции декодера, если подпись совпала, тогда была использована предопределенная процедура дешифрования, и к декодированному коду была применена общая база сигнатур! Мы можем сразу же заключить, что этот подход не очень эффективен, но в основном трудоемкий (написание процедур дешифрования - это длительный процесс, требующий детального изучения кода вируса). Но вернемся к полиморфным вирусам. Они работали над аналогичными принципами и, например, также могли быть самошифруемыми, и для их защиты генерирует полиморфный декодер!

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

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


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

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

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

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


Существует три основных метода: создание нового раздела или увеличение размера последнего в исполняемом файле, затем размещение кода в новом пространстве или вставка его в пустые части файла (например, пространство между разделами файлов ). Кроме того, каждый исполняемый файл (для простоты мы будем называть его файлом PE) имеет строго определенную структуру и свой собственный заголовок, с помощью которого вы можете перемещаться по этой структуре. Таким образом, одним из полей заголовка является поле, которое указывает на точку входа (Entery Point - EP). EP - это место (адрес), с которого начинается программа. При заражении он управляет этим полем и меняет адрес на тот, где начинается его собственный код. После запуска зараженной программы сначала будет запущен корпус вируса, а затем он перенесет управление в исходную программу EP. Таким образом, у нас есть зараженный файл, в то время как он сохраняет свою производительность. Итак, как эвристика помогает нам в таких случаях?

Очень редко точка входа неинфицированного файла находится в последнем разделе и даже больше, поэтому он не может (с точки зрения правильной программы) находиться между другими разделами. Используя это, антивирус заключает, что у нас есть Unknown_WIN32_Virus. Набор аналогичных правил также включает списки подозрительных команд (или, опять же, их комбинацию), подозрительные строки внутри двоичного файла, функции API, которые использует приложение и т.д. Этот метод является попыткой подражать процессу человеческого мышления , Но, на мой взгляд, это не совсем успешная попытка, поскольку часто встречаются случаи ложных срабатываний, а иногда они превышают правильные числа.

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


Но есть более солидные решения, в которых есть серьезный аналитический компонент, который сам может принимать участие в решениях без вмешательства пользователя. Я возьму на себя смелость отнести некоторые функции брандмауэра к активной защите (и в большинстве случаев они полностью обладают этим). Как вы могли догадаться, это доступ к интернет-приложениям - даже если антивирус не смог обнаружить троян, эта возможность просто заблокировала бы его работу с сетью, поэтому вся похищенная информация не будет передаваться. Я не буду вдаваться в технологию создания проактивной защиты - я просто скажу ключевую фразу, что вы должны войти в поисковую систему, и она даст вам целую кучу статей об этом. Перехват функций API - вы получите необходимые результаты для этого запроса. И теперь, как всегда, маленькая муха в мазе. Поскольку технология относительно молода, в ее реализации часто возникают грубые ошибки, которые приводят к зависанию системы или появлению BSOD (Blue Screen Of Dead) или даже иногда создаются механизмы, которые могут отключить этот тип защита. Как уже упоминалось, этот метод также называется словом HIPS. Существует также отрасль этой технологии - песочница (от английской «песочницы») - хотя это скорее логическое продолжение эмулятора, но я нашел полную реализацию этой «песочницы» только в одном антивирусе. Его разработчики пошли намного дальше, чем остальные. Мы можем сказать, что они могли эмулировать работу операционной системы в защищенной среде, помещать в нее вирус и анализировать его поведение (копирование в системные папки, запись в реестр, попытку доступа к сети, активное использование файлов , и многое другое). Это может не только отметить его как потенциальный вирус (не только трояны, но и все другие классификации), но даже определить его тип.

Для людей, которые не знакомы с этим термином, я попытаюсь четко объяснить, что такое руткиты. Таким образом, вирус не может быть вызван, потому что они не обладают никакими деструктивными действиями, не размножаются, не крадут конфиденциальную информацию. Это всего лишь метод, используемый для скрытого присутствия в системе. Как ни странно, но все HIPS основаны именно на технологии, которая была первоначально включена в руткиты. Так что они делают? Прежде всего, они способны скрывать файлы на жестком диске, ключи реестра, загруженные драйверы, процессы, сетевые подключения, входящий / исходящий трафик. Уже, наверное, стало очевидно, что это будет означать. Без специальных программ невозможно определить наличие вирусов с использованием этого метода сокрытия в системе (Rku, AVZ, GMER).


Каждый уважающий себя антивирус просто обязан иметь способы противодействовать руткитам. Другим важным моментом является то, что обычно компонент rootkit находится в драйвере (я упоминал ранее, используя драйверы), что позволяет ему работать в Ring0 (ring zero) - в этом режиме все разрешено ... Конечно, антивирусы также прибегают к доступ к этому режиму для борьбы с руткитами, но поскольку в этом режиме нет ограничений, охота за руткитом напоминает игру «кошки-мышки» - вирусописатели прибегают к недокументированным функциям операционной системы, что добавляет головную боль к разработчики антивирусов. Никто не показывает сами методы поиска, но если вы хорошо ищите в Интернете, вы можете найти несколько способов. Обсуждать их - это тема отдельной статьи. Я могу только сказать, что антивирусы уверенно справляются только с теми руткитами, которые используют стандартные технологии (в настоящее время существует так много способов реализовать эту технику), и есть очень сложные случаи, которые шли в Интернете в течение очень долгого времени, и нет один не был обнаружен (пример: руткит Rustok).

В последнее время вся индустрия создания вирусов перешла на коммерческую основу. Если до того, как вирусы были разработаны только за счет чистого энтузиазма, теперь ситуация изменилась в корни. Файловые вирусы стали совершенно невостребованными, потому что, помимо эстетического удовольствия и разрушения, они не имеют ничего. Таким образом, способность получать подобный тип вируса очень мала. Трояны стали более популярными. Их основная функция - украсть любые данные, такие как пароли. Боты DdoS и Spam находятся в особом положении. Это также целая индустрия, приносящая огромную прибыль владельцам сетей бот-сетей. В настоящее время обязанности в этой области строго распределены - те люди, которые создают трояны / боты, сами не используют их, а продают. И цена зависит от полезной нагрузки. Также есть случаи развития на заказ. И теперь я обращусь к главному.

Представьте себе: плохой человек заказал создание индивидуального трояна и какое-то время начинает использовать его для своих эгоистических целей. Вскоре вирус входит в анализ в антивирусных лабораториях, и он уже начинает обнаруживаться людьми. А что произойдет, если владелец этого трояна? Конечно, он не хочет давать N-ю сумму (которая может достигать нескольких тысяч долларов) для создания нового трояна. Ну, в принципе, он может попросить «очистить» того, кто его разработал, но иногда либо возникают некоторые проблемы, либо стоимость этой услуги превышает допустимую. Именно здесь крипторы / упаковщики приходят ему на помощь. Первоначально они использовались для защиты от дизассемблирования и сжатия исполняемого файла, но это вызывает, так сказать, побочный эффект, а именно, код троянца полностью изменяется (поскольку он зашифрован и / или сжат). В то же время крипторы основаны на методе «самошифрующих» вирусов - как говорится, «все новое хорошо забыто старым». Да, и упаковщики не сильно отличаются друг от друга. Из-за этого подписи становятся бесполезными, и вирус не обнаруживается снова. Но это всего лишь минимальная нагрузка, которую они могут нести - почти все современные крипторы используют полиморфизм, во-вторых, они также включают в себя компоненты для обхода проактивной защиты и брандмауэров, различные методы для усложнения ее анализа, антиэмуляции и анти-отладочных трюков. В общем, полный букет. В то же время стоимость таких утилит находится в приемлемом ценовом диапазоне (если речь идет о покупке самого криптографа).