Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Общее понятие и используемые методы




Если существует меч, то для противостояния ему нужен щит. Если есть вирусы, то с ними должны бороться антивирусы. Разумеется, ни один программный продукт не заменит человека, и самым надёжным способом обнаружения и обезвреживания вирусов является вмешательство пользователя. Данный процесс требует знаний и смекалки, достаточных для противодействия тем приёмам, которые применил автор вируса в своём творении. Учитывая нетривиальный ум вирусописателей, задача может стать не решаемой в одночасье, а при нынешних темпах появления новых вирусов всей жизни может не хватить для «ручного» отлавливания всех вирусов, которые будут появляться на машине пользователя. Поэтому, несмотря на недостатки автоматизации данного процесса, антивирусное программное обеспечение является востребованным, ведь количество пользователей компьютеров исчисляется миллиардами, и далеко не каждый из них обладает необходимыми для «ручной» борьбы с вирусами опытом, желанием и временем. Антивирус является необходимостью, а не роскошью. Сегодня каждый может найти лицензионный или пиратский антивирусный пакет по своему вкусу.

Для борьбы с вирусами используются определённые методы, и именно их мы сейчас рассмотрим.

Статический сканер

Если поставить антивирус на машину и не вылазить в интернет, то через некоторое время он начнёт «ругаться» и просить обновить устаревшие базы данных. Зачем он это делает и что хранится в этих самых базах?

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

Эвристический анализ

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

В процессе эвристического анализа проверяется структура файла, его соответствие вирусным шаблонам, выявляются конструкции, характерные для вредоносных программ. Но если в программах, не являющихся вирусами, используются некоторые конструкции и методы, которые могут быть характерны для вирусов, то не стоит удивляться ложным срабатываниям. К примеру, написанный автором на Delphi поисковик файлов определяется антивирусным пакетом NOD32 2.7 с версией антивирусных баз 4625 (20091120) как модифицированный Win32/Induc.A вирус. Тем не менее эта программа не делает ничего кроме собственно поиска файлов и вирусом гарантированно не заражена.

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

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

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

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

Как обмануть антивирус

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

Первое, что может прийти на ум, - подмена сигнатур вируса. Это ужасный способ, долгий и непродуктивный. Нужно точно знать места и байты, которые следует поменять. Если Вы имеете на руках готовый вирус с навороченной структурой, очень интересно, сколько времени уйдёт на перебор возможных вариантов и определение тех мест и тех байтов, по которым именно этот вирус детектируется во-о-он тем антивирусом. Поменять Вы их сможете, если вирус ничем не упакован и никак не защищён от такой вот «прямой» модификации, но в нынешние времена это большая редкость. А ведь есть ещё другие антивирусы…

Если готовый экземпляр вируса можно скрыть от обнаружения путём перебора вариантов, то имея на руках исходный код сделать это несравненно проще. Вот пример. Однажды на контрольной работе автору и его одногруппникам сказали написать кейлоггер. Надо сказать, что это стало тем хорошим пинком под зад, который позволил сделать несколько уверенных шагов вперёд, в частности, скачать комплект для разработки драйверов и разобраться, как их всё-таки пишут. Так вот, всё начиналось с Delphi. В Windows есть API-функция GetAsyncKeyState, которая определяет, была ли нажата клавиша на клавиатуре, и если да, то позволяет узнать, какая именно. Как только первые 4 строчки на Delphi были готовы, мы сделали “Build” и получили ругательство от NOD32 2.7 по поводу, что это «возможно модифицированный вирус такой-то». Стоило написать те же самые строчки на C++, как антивирус замолчал, более того, программа прекрасно работала, но при наличии какого-никакого файрвола её деятельность пресекалась в два счёта, поэтому и захотелось написать драйвер режима ядра, чтобы иметь равные с файрволами и антивирусами привилегии.

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

Если есть какая-то вредоносная функция, вызываемая способом “call bad_func”, то можно попробовать заменить этот код на “push offset bad_func; ret”. Это достаточно известный способ передачи управления функции альтернативным образом и тем не менее в некоторых случаях он приносит желаемый результат.

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

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

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

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

Какой антивирус выбрать

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

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

На страничке www.antivirus.ru/AntiVirPS.html можно ознакомиться со статистикой по пропущенным вирусам за период наблюдений c 10.2008 по 09.2009 у различных антивирусных продуктов (на момент 24.11.2009). Надёжность защиты определяется соотношением пропущенных вредоносных программ к общему их количеству, причём неважно, с помощью какого метода был обнаружен вирус. Выделяется следующее антивирусное программное обеспечение:

  • Dr. Web (пропущено 16 из 294, коэффициент надёжности 0.945)
  • McAfee-GW-Edition (пропущено 18 из 294, коэффициент надёжности 0.938)
  • GData (пропущено 22 из 294, коэффициент надёжности 0.925)
  • Avira (пропущено 23 из 294, коэффициент надёжности 0.921)
  • Kaspersky (пропущено 27 из 294, коэффициент надёжности 0.908)

Автор публикации на страничке www.antivirus.ru/VirAnalizC.html предложил результаты проверки реакции различных антивирусов на вредоносные объекты, с которыми он столкнулся в период с января 2006 по июль 2007. Общее число зафиксированных вредоносных объектов 51. Надёжность защиты определяется так же, как и в предыдущем способе, метод обнаружения вируса значения не имеет. Выделяются следующие антивирусы:

  • Dr. Web (пропущено 17 из 51, коэффициент надёжности 0.667)
  • Kaspersky (пропущено 21 из 51, коэффициент надёжности 0.588)
  • Avira (пропущено 22 из 51, коэффициент надёжности 0.569)
  • Fortinet (пропущено 23 из 51, коэффициент надёжности 0.549)
  • Sophos (пропущено 24 из 51, коэффициент надёжности 0.529)

Страничка www.anti-malware.ru/proactive_test_2009 предлагает результаты теста проактивной защиты, в расчёт брались процент обнаруженных вирусов и процент ложных срабатываний. Правда, в этой публикации эвристический анализ и проактивная защита смешаны воедино и тем не менее, это в своём роде тоже пища для размышлений:

  • Kaspersky (обнаружено 61% - ложных срабатываний 0.01%)
  • NOD32 (обнаружено 61% - ложных срабатываний 0.02%)
  • BitDefender (обнаружено 60% - ложных срабатываний 0.04%)
  • Avira (обнаружено 71% - ложных срабатываний 0.13%)
  • Dr.Web (обнаружено 61% - ложных срабатываний 0.2%)

Как нетрудно заметить, на русскоязычных порталах лидируют русские же продукты: Dr. Web и Kaspersky. Тем интереснее пойти дальше и обратиться к англоязычным ресурсам, попутно задав вопрос: предвзяты ли результаты?

Например, NOD32, не попавший в два предыдущих ТОП-5, на своей домашней страничке www.eset.com/products/compare-NOD32-vs-competition.php выставляется в крайне выгодном для этого продукта и невыгодном для всех остальных свете. Особенно интересной представляется следующая диаграмма, где недвусмысленно утверждается, что NOD32 никогда в период с мая 1998 года по октябрь 2009 года не пропускал вирусов в «диком» виде, то есть тех, чьи сигнатуры ещё не содержались на момент «отлова» в базах данных. Это намёк на совершенный эвристический анализ, и тем не менее, идеальной защиты не существует, о чём можно сказать хотя бы по результатам вышеприведённых тестов.

На страничке www.anti-virus-software-review.toptenreviews.com к категории «отлично» отнесены BitDefender, Kaspersky, Webroot и NOD32. Причём использовалось не такое глубокое тестирование, как на русскоязычных порталах, а простое сравнение того, что может и чего не может антивирус.

На страничке www.av-comparatives.org/comparativesreviews/main-tests можно скачать результаты тестирования антивирусных пакетов в pdf-формате. Оценка производится не только по количеству обнаруженных вредоносных программ и ложных срабатываний, но также и по скорости сканирования по требованию. Подборка различных вирусов впечатляет: в тестировании в августе 2009 года (последним проведённым на момент 26.11.2009) было использовано 1562092 экземпляров, это не русское тестирование с количеством вирусов, в 100 раз меньшим.

Лучшими антивирусами в данном тестировании были:

  • GData – абсолютно лучший продукт с высочайшей скоростью сканирования, наибольшим количеством найденных вирусов (99,8%) и низким показателем ложных срабатываний
  • Symantec – второй по совокупности показателей антивирусный пакет (обнаружено 98,4%) с высочайшей скоростью сканирования и низким показателем ложных срабатываний
  • Avast – третий по совокупным показателям антивирус (обнаружено 98%) с высочайшей скоростью сканирования и низким показателем ложных срабатываний
  • BitDefender – процент обнаруженных вирусов (97,8%) не самый высокий, но средняя скорость сканирования и низкий показатель ложных срабатываний позволяет поставить данный продукт на 4ое место
  • NOD32 – обнаружено 97,2%, это не самый высокий класс, но средняя скорость сканирования и низкий процент ложных срабатываний обеспечивают данному пакету 5ое место

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

В мае 2009 года была протестирована проактивная защита антивирусов, и явно выделились только 3 пакета:

  • OneCare – абсолютный лидер (60% обнаруженных вирусов) с самым низким уровнем ложных срабатываний
  • NOD32 – 56% обнаруженных вирусов и низкий уровень ложных срабатываний
  • Kaspersky - 50% обнаруженных вирусов и низкий уровень ложных срабатываний

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

  • McAfee – 99,1% обнаруженных вирусов, низкий уровень ложных срабатываний и средняя скорость сканирования по требованию
  • Symantec – 98,7% обнаруженных вирусов, низкий уровень ложных срабатываний и высочайшая скорость сканирования по требованию
  • NOD32 – 97,6% обнаруженных вирусов, низкий уровень ложных срабатываний и средняя скорость сканирования по требованию
  • Kaspersky – 97,1% обнаруженных вирусов, низкий уровень ложных срабатываний и средняя скорость сканирования по требованию

Как говорится, думайте сами, решайте сами. Компания Symantec сделала огромный шаг вперёд со своей разработкой Norton Antivirus 2009 по сравнению с теми продуктами, что были выпущены ею ранее. NOD32 и Kaspersky не зря считаются одними из лучших в своём роде. GData, McAfee, BitDefender также являются достойными кандидатами быть установленными на рабочей машине пользователя. По показавшему высокие результаты в российском тестировании Dr.Web сложно сказать однозначно и объективно «да» или «нет», потому что на Западе об этой отечественной разработке, похоже, неизвестно.

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

· не открывайте присоеденённые к электронным письмам вложения, особенно, если они пришли от неизвестного отправителя;

· архивируйте ключевые файлы на внешних носителях, таких как флешки, CD, DVD;

· не применяйте активное содержимое документов.

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

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...