Технологии борьбы с вредоносным ПО — HackZona.Ru

Технологии борьбы с вредоносным ПО

Технологии борьбы с вредоносным ПО

Тип статьи:
Со старой ХакЗоны.
Источник:
История компьютерных вирусов насчитывает не один десяток лет. С появлением первых компьютерных вирусов возникла необходимость борьбы с ними. И самыми первыми вирусными аналитиками становились энтузиасты-программисты, на компьютер которых попала вредоносная программа, заражающая файлы. Они разбирали вирус по косточкам, понимали все принципы его работы, и создавали первые в своем роде антивирусы, предназначенные для определенного вредителя. Именно так начала зарождаться индустрия, направленная на борьбу с компьютерными вирусами. Все это время вирусные технологии совершенствовались, обрастали новыми ухищрениями и возможностями, и без сомнения авторам антивирусных средств тоже приходилось дорабатывать свои продукты, что бы те в свою очередь могли противодействовать любому типу заразы. Именно о технологиях борьбы с вирусами которые применяются на сегодняшний день(а они включают в себя еще и те методики, которые использовались 20 лет назад) мы поговорим сегодня.
Старый конь борозды не портит

Наверно вы уже догадались, для того чтобы как-то противодействовать вирусу, в первую очередь необходимо отыскать его. Проблема заключается в том, что с точки зрения рядового пользователя он (вирус) ничем не отличается от обычной программы (если речь идет о Трояне или черве), ну а если речь идет о файловом вирусе, который заражает исполняемый файл? Тут даже опытный пользователь окажется бессилен(хотя стоит заметить что подобные вирусы утратили свою актуальность на сегодняшний день и встречаются все реже, но об этом позже). А теперь собственно, попытаюсь изложить суть этого старого, но достаточно действенного метода обнаружения вирусов. Представьте, что вы являетесь следователем, прибывшим на место преступления. С чего начинается каждое расследование? Правильно, с поиска отпечатков пальцев! Думаю, для вас не является секретом, что отпечатки пальцев каждого человека уникальны и шансы встретить подобные отпечатки пальцев у других людей стремятся к нулю. Зная, кому принадлежат эти отпечатки, мы с легкостью можем вычислить преступника. На схожем принципе и основан так называемый сигнатурный поиск вирусов. Когда новый вирус попадает в руки исследователей, в первую очередь они выделяют сигнатуру — определенная последовательность байт, соответствующая конкретному вирусу(или семейству вирусов), а после чего добавляют ее в антивирусную базу(конечно не забывая добавить способ лечения и ли просто удаления зараженного файла), и с успехом начинаю использовать для детектирования/удаления зловреда, путем проверки всех файлов хранящихся на жестком диске. Как вы могли все достаточно просто, но именно это методика остается одной из основных, применяемых в антивирусах. В итоге мы имеем механизм позволяющий отловить довольно большую долю вирусов. Но не смотря на это у нее все же есть недостатки. Одним из основных является необходимость постоянного обновления баз сигнатур, думаю здесь все очевидно. Как уже ранее говорилось сигнатура — это последовательность байт характерная для конкретного файла. А что будет если несколько байт из этой последовательности, будут изменены или вообще исключены? Как поведет себя антивирус? В такой ситуации все зависит от совести тех людей которые разрабатывали движок антивируса. Если они подошли к этому процессу с умом и не халтурили, то по идее нас должны предупредить, что файл является подозрительным или же является модификацией какого либо вируса. Но к сожаление такое бывает достаточно редко, и БОЛЬШИНСТВО современных продуктов, нацеленных на защиту от данного вида угрозы не справляются с подобной задачей, что грозит заражением компьютера. Имена тех продуктов, которые подвержены данной болезни в целях антирекламы называть не буду, но поверьте, это одни из самых популярных продуктов в России/Европе/Америке.

Полиморфизм

С ростом числа вирусов росло число антивирусов, таким образом, рано или поздно новые вариации вредоносных программ попадали во все антивирусные базы! Одним из переходных моментов стало появление первых полиморфных вирусов — вредоносных программ способных при своем размножении частично изменять(в различной степени) свое тело(ну это не совсем точно сказано, на самом деле речь идет о полиморфизме дескриптора). Это означало, что старый добрый сигнатурный поиск оказывался бесполезным. Раз вирус не обладает четкой структурой, значит нельзя выделить четкую сигнатуруДумаю теперь все стало ясно. Кстати стоит отметить, что полиморфики появились не сразу, этой технологии предшествовали так называемые самошифруещиеся вирусы. По сути, они состояли из 2-х частей: тело самого вируса и шифратор/дешифратор. Основное тело при размножении шифровалось разными ключами(иногда разными алгоритмами), и добавлялся код расшифровки. При запуске зараженного фала(забегаю чуть вперед скажу то, что это технология приобрела свою новую вариацию в наши дни) дешифратор восстанавливает основное тело вируса и передает ему управление. На выходе получался почти полностью отличающаяся от оригинала копия. Опять же для детектирования использовался усложненный сигнатурный подход! Т.е. в качестве изначальной сигнатуры брались постоянные участки дешифровщика, если сигнатура совпадала, то в ход шла заранее заложенная процедура дешифровки, и уже к расшифрованному коду применяли общую сигнатурную базу! Сразу можно сделать вывод, что такой подход не очень эффективен, а в первую очередь трудоемок(написание процедур расшифровки — это длительный процесс, требующий детального изучения кода вирусов)! Но давайте вернемся вновь к полиморфным вирусам! Они работали на схожих принципах и к примеру могли быть так же самошифруещимися, а для своей защиты генерировать полиморфный дешифратор! С их появлением умерло большая доля, существовавших на тот момент антивирусных продуктов, ибо те не могли предоставить защиту от них! Конечно их тоже можно обнаружить использовав процедурно-сигнатурный подход, но ситуация осложнялась тем что число полиморфиков росло в геометрической прогрессии! У разработчиков чисто физически не хватало времени для написания процедуры детектирования для каждого. И все же решение было найденоИзначально им оказалась обычная трассировка программы! Трассировка — это пошаговое исполнение программы! Детали реализации говорить не стоит, отмечу лишь то, что на этом принципе основаны все отладчики. Таким образом мы можем определить некую логику программы, выделить характерные признаки, которые справедливы при исполнении конкретного вируса, и сделать свой вердикт. Но увы, противодействовать ей очень легко, существует огромное число способов узнать находимся ли мы под трассировкой. В лучшем случаи вирус может завершить себя или заблокировав работу антивируса, а в худшем запустить на исполнение деструктивный код. Идеологическим продолжением стало создание Эмулятора кода. В этом случаи непосредственно кусок кода помещается в специальную среду(буфер) в котором разбирается на инструкции и запускаеться на псевдоисполнение! Но везде есть свои нюансы и правильно обработать любую ситуацию достаточно сложно, поэтому к разработки эмуляторов прилагают очень много усилий. Еще одним недостатком является такое понятие как время эмуляции — предельное время, по истечению которого процесс псевдоисполнения будет прекращен. Грубо говоря, эмулятор, может зависнуть, или уйти в бесконечный цикл, да и если тратить много времени на эмуляцию каждого файла, процесс сканирования может затянуться на несколько суток. Также существует проблема связанная с тем что, если эмулятор не знает какой-либо инструкции или неправильно воспринимает логику участка кода, он либо прекращает свою работу, либо начинает не правильный процесс эмуляции в результате чего будет прекращен через некоторое время(время эмуляции). Именно этими недостатками пользуются разработчики вирусов, они часто в свои творения вставляют подобные ловушки. Но, не смотря на это, эмуляторы достаточно часто входят из сложных ситуаций с чистой совестью. И в конце хотелось сказать о достойном наследнике полиморфизма — Метаморфизме. Суть этого метода заключается в ПОЛНОМ изменении тела вируса без изменения его функциональности. Здесь уже нет никаких общих решений для детектирования подобного семейства вирусов, подход индивидуальный. Единственным вариантом который можно применить в общих ситуациях является построение графа потока исполнения. имея один (несколько) экземпляр мы грубо говоря запоминаем его логику, и сравниваем его с логикой проверяемой программы, т.е. оцениваем их семантически, а не синтаксически! Данные методы достаточно сложны в реализации, а других внятных решений подобной проблемы мне отыскать не удалось.

Эвристика

Достаточно загадочное, но часто употребляемое в рекламных акциях слово греческого происхождения. Обычно его употребляют, когда речь идет о детектировании неизвестных вирусов. Ну что ж, давайте, разберемся с самого начала. На мой взгляд, данная технология является скорее попыткой выделиться на рынке антивирусных продуктов, нежели действительно придумать технологию по борьбе с неизвестными вредоносными программами. Вирус хоть и очень сложно отличить от обычной программы, но существует ряд признаков, в совокупности которые дают возможность полагать, что перед нами зловред или зараженная программа. Ну для начало рассмотрим файловые вирусы, при заражении исполняемого файла они должны каким-то образом добавить свой код в него. Существует три основных техники: создание новой секции либо увеличение размера последней в исполняемом файле с последующем помещением кода в новое пространство, либо внедрение в пустые участки файла(например пространство между секциями файла). При этом у каждого исполняемого файла(дальше для простоты будем называть его PE файлом) есть строго определенная структура, и свой заголовок при помощи которого можно ориентироваться в этой структуре. так вот одним из полей заголовка является поле указывавшие на Точку Входа(Entery Point — EP). EP — место(адрес) с которого начинается исполнение программы. При заражении он правит это поле и меняет адрес на тот, откуда начинается его собственный код. После запуска зараженной программы сначала исполниться тело вируса, а потом он передаст управление на оригинальную EP программы. Таким образом, мы имеем зараженный файл, при этом он сохраняет свою работоспособность. Так как же нам в таком случаи поможет эвристика? Очень редко точка входа не зараженного файла находиться в последней секции, и уж тем более не может(с точки зрения правильной программы) не может находиться между другими секциями. Пользуясь этим антивирус делает вывод что перед нами Unknown_WIN32_Virus. В набор подобных правил также входят списки подозрительных команд(или опять же их сочетание), подозрительные строки внутри бинарного файла, API функции, которые использует приложение и.т.д. Данный метод — это попытка имитировать процесс человеческого мышления. Но, на мой взгляд, это не совсем удачная попытка, т.к. часты случаи ложных срабатываний, и порой они по количеству превышают верные.

Проактивная защита(HIPS)

Довольно изобретательная техника, появившаяся совсем недавно. Не все антивирусы успели обзавестись ей, но многие уже к этому стремиться. Начнем как всегда с самого начала. Когда вирус(в качестве примера будем рассматривать троянскую программу) попадает на компьютер первым делам он должен закрепиться в системе: поместить свою копию в каком либо системном каталоге, т.к. обычно рядовые пользователи туда не заглядывают. Следующем этапом закрепления становиться
запись в автозагрузку(существует уйма способов это сделать, поэтому чем больше подобных мест знакомо проактивной защите тем лучше), ну а дальше идет полезная нагрузка-установка вспомогательных драйверов в ситему(достаточно популярная техника), изменение памяти других процессов(в частности внедрение dll библиотеки в адресное пространство доверенного процесса, например Интернет браузера), кража конфиденциальных данных. Как же нам может эта самая проативная защита. ЕЕ основная задача заключается в том чтобы предотвратить потенциально опасные действия производимые в системы, но есть один недостаток. Система не может принимать сама решений, выбор действия предоставляется самому пользователю(собственно он либо разрешает потенциально опасное действие либо нет). В большинстве случаев он способен выбрать адекватное действие для данной ситуации, но как всегда свою роль играет человеческий фактор, поэтому даже наличие подобной системы не способно полностью оградить нас от угрозы. Но существуют более основательные решения, обладающие серьезным аналитическим компонентом, который уже сам может принимать часть решений, без вмешательство пользователя! Возьму на себя смелость отнести часть функций фаирвола к проативной защите(а в большинстве случаев они в полной мере обладают таковой). Как вы могли догадаться это доступ приложений к Интернету, даже если антивирус не смог обнаружить Трояна, то данная возможность просто — напросто заблокирует его работу с сетью, по этому вся украденная информация не будет передана. В технологию создания проактивной защиты углубляться не буду, скажу лишь ключевую фразу, которую стоит ввести в поисковик, и он вам выдаст целую кучу статей по этому поводу. Перехват Api функций — на этот запрос вы получите нужные результаты. А теперь как всегда небольшая ложка дегтя в бочке меда. Т.к. технология относительно молодая, то в ее реализации очень часто допускаться грубые ошибки, что приводит к зависанию системы, или появление BSOD(Blue Screen Of Dead) или даже порой встраиваются механизмы способные отключить данный вид защиты. Подобную технику принято еще называть, словом HIPS. Так же существует некоторое ответвление этой технологии — Sandbox(от англ. песочница) хотя скорей это является логическим продолжением эмулятора, но полноценную реализацию подобной песочницы я встречал всего в одном антивирусе. Его разработчики пошли намного дальше остальных. Можно сказать что они смогли с эмулировать работу операционной системы в защищенной среде, помещаю в нее вирус, и анализируя, его поведение (копирование в системные папки, запись в реестр, попытка доступа к сети, активную запись в файлы и многое другое) способно не только пометить его как потенциальный вирус(не только Трояны, но и все остальные классификации), но и даже определить его тип.

Способы борьбы с Руткитами(Rootkits)

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

КрипторыУпаковщики и прочее


В последнее время вся индустрия создания вирусов перешла на коммерческую основу. Если раньше вирусы разрабатывались только за счет чистого энтузиазма, то теперь ситуация изменилась в корни. Файловые вирусы стали совсем не востребованными, т.к. кроме эстетического удовольствия и деструкции ничего не несут. Поэтому возможность подхватить подобную разновидность вируса очень мала. Большую же популярность получили Трояны. Их основная функция это кража каких-либо данных, например, пароли. А также на особом положении находятся DDoS и Spam боты. Это тоже целая индустрия, приносящая огромные доходы владельцам ботнет сетей. В настоящие время обязанности в этой сфере строго распределены, те люди, которые создают трояновботов сами ими не пользуются, а продают их. И цена зависит от полезной нагрузки. Так же встречаются случаи разработки на заказ. А сейчас перейду к главному. Представьте: нехороший человек заказал создание индивидуального Троянами некоторое время начинает использовать его в своих корыстных целях. В скором времени вирус попадает на анализ в антивирусные лаборатории, и его уже начинают поголовно обнаруживать. И как поступает в таком случаи обладатель этого Трояна? Разумеется, отдавать N-ную суму (которая может достигать нескольких тысяч долларов) за создание нового Трояна не хочет, ну в принципе он может обратиться с просьбой очистки к тому, кто его разрабатывал, но иногда либо возникают какие-то проблемы, либо эта стоимость превышает допустимую. Вот тут-то ему на помощь и приходят крипторыупаковщики. Изначально они использовались для защиты от дизассемблирования и сжатия исполняемого файла, но при этом возникает так сказать побочное действие, а именно меняется полностью код Трояна(т.к. он шифруеться иили сжимается). При этом крипторы основаны на техники самошифрующихся вирусов, как говориться Все новое-это хорошо забытое старое. Да и упаковщики не многим отличаются.

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

Заключение.

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

Комментарии

Нет комментариев. Ваш будет первым!