Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #110, ФЕВРАЛЬ 2008 г.

Какой антивирус лучше?

Степан «Step» Ильин

Хакер, номер #110, стр. 110-026-1

(step@gameland.ru)

Тест-драйв антивирусных пакетов

Сколько мы бы ни писали о том, что любой антивирус можно обойти, сколько бы ни рассказывали, как без него обойтись, иметь при себе качественный сканер и антивирусный монитор в наше время условие почти обязательное. Но что выбрать? У каждого на этот счет свое мнение и даже внутри команды ][ используются совершенно разные продукты. Мы решили положить конец спорам и, наконец, разобраться, каким продуктам можно довериться, а какие стоит незамедлительно отправить в отстой. Этот тест-драйв антивирусов для тебя!

С самого начала работы над материалом встал очень важный вопрос: а как, собственно, проводить тестирование? Какой антивирус считать хорошим, а какой — плохим? Как вообще можно оценить эффективность работы, продуманность эвристических алгоритмов, результативность поиска? Интересно было посмотреть, как с этой задачей справились другие, поэтому мы первым делом изучили уже имеющиеся тестирования, которые в небольшом количестве доступны в Сети. Все они строились примерно на одном принципе: бралась внушительная коллекция всевозможной заразы (20-30 тысяч вирусов, троянов и прочей малвари), рассортировывалась по категориям и на нее натравливались по очереди все тестируемые антивирусы. Эффективность антивируса в таком случае прямо пропорциональна количеству найденной малвари: чем больше нашел, тем лучше. Ознакомиться с результатами можно здесь: www.antivirus.ru/OknoA.html, www.anti-malware.ru, www.virus.gr. Исследования эти довольно свежие, и повторять их не было никакого желания, да и смысла тоже, поэтому мы все сделали по-другому :).

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

Да и вообще, почему вирус обязательно должен быть в базе? Тупое сканирование подборки, включающей пускай даже редкие, но уже известные вирусы, не учитывает эвристические возможности продуктов. А именно этим отличаются действительно продвинутые пакеты: суметь определить вирус по потенциально опасным участкам кода, собрать сигнатуры для них и грамотно обработать ситуацию (а не обзывать вирусами все подряд) — вот что действительно сложно. Поэтому для проверки эвристических алгоритмов мы провели отдельный тест, предварительно придумав простую, но показательную методику. Проактивная защита, которую сейчас активно вводят производители антивирусных пакетов, — это третий пункт нашей программы.

Итак, все наше тестирование можно разделить на три части:

  1. Статическое сканирование.
  2. Эвристические алгоритмы.
  3. Проактивная защита.

Подготовка к тестированию

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

  • Антивирус Касперского 7.0
  • NOD32 2.70.39
  • avast! 4 Professional Edition
  • AVG Anti-Virus Free Edition 7.5
  • Avira AntiVir PersonalEdition Classic 7.06
  • BitDefender Antivirus 2008
  • Dr.Web Антивирус 4.44
  • F-PROT Antivirus for Windows
  • F-Secure Anti-Virus 2008
  • Norton AntiVirus 2008
  • Panda Antivirus 2008
  • Sophos Norman Virus Control
  • McAfee VirusScan 8.5.0i

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

  • Intel Core Duo 1,8 МГц
  • 2048 Мб
  • Windows XP SP2 со всеми апдейтами
  • VMware 6.0

Для каждого антивируса был сделан свой снимок (snapshot), что позволяло быстро переключаться между ними для тестирования. И первым в нашей программе был статический скан.

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

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

  1. msblast.exe – тело вируса MSBlast, по умолчанию упакованное UPX'ом;
  2. msblast-aspacked.exe – MSBlast, упакованный поверх UPX’а с помощью ASPack 2.12;
  3. msblast-deunpxed.exe – MSBlast, распакованный;
  4. msblast-deunpxed-aspacked.exe – MSBlast, распакованный и переупакованный ASPack 2.12;
  5. msblast-deunpxed-vmprotected.exe – MSBlast, распакованный и запротекченный VMProtect 1.22.2;
  6. msblast-deunpxed-telocked.exe - MSBlast, распакованный и переупакованный tElock 0.98;
  7. msblast-deunpxed-niceprotect - MSBlast, распакованный и запротекченный NiceProtect 0.98. Вместе с различными модификациями MSBlast, антивирусам также предлагался следующий файл, очень похожий на троян, но таковым не являющийся:
  8. visible-dwnldr.exe – тулза скачивает gif-файл с помощью API-функции URLDownloadToFile и запускает ассоциированное с ним приложение через ShellExecute, что совершенно безобидно и вполне безопасно. Учитывая, что в куче приложений найдены ошибки парсинга графических файлов, открытие gif'ов, полученных из ненадежных источников, потенциально ведет к заражению, но в данном конкретном случае скачиваемый приложением gif абсолютно нормален. Вот только антивирусам это не докажешь…

Все эти файлы мы записали на болванку и тестировали отдельно на каждом антивирусном пакете, работая с различными snapshot’ами системы в VMware.

Результаты, честно говоря, нас немного удивили. Если с нахождением нативного MSBlast справились все (еще бы было по-другому!), то с криптованными файлами возникли совершенно неожиданные проблемы. Исполнение защищенных участков кода на виртуальной машине в случае использования специального криптора VMProtect сильно осложнили анализ для некоторых антивирусов. Сканеры Avira AntiVir PersonalEdition, BitDefender Antivirus 2008, популярнейший на Западе Panda Antivirus и в России — Dr.Web Антивирус не смогли распознать в исследуемом файле малварь. Еще хуже дела обстоят с морфером tElock. Несмотря на то что мы использовали публичный билд, уже давным-давно распространяющийся в Сети, полиморфный движок до сих пор не по зубам большинству антивирусов. Лишь только NOD32 смог увидеть в тестируемом экземпляре потенциально опасный файл. Последним криптором, который использовался для создания тестовых файлов, был NiceProtect, разработанный нашим автором GPcH и скачанный с официального сайта www.niceprotect.com. Avast, AVG, Dr.Web, F-Secure, Norton, McAfee с ним, к сожалению, оказались незнакомы!

А что с программой, очень похожей на вирус? Тут 50 на 50: одна половина антивирусов указала на то, что это потенциально опасный код, другая просканировала файл без какой-либо реакции. Что лучше? Сложный вопрос: с одной стороны, ложное срабатывание всегда бесит и вводит в заблуждение пользователей. С другой стороны, это ведь действительно мог быть какой-нибудь опасный загрузчик, и тогда отчет антивируса о потенциальной угрозе был бы очень кстати!

Итоги: среди всех пакетов заметно выделяется NOD32, который обнаружил заразу во всех предложенных нами файлах, за что и получает премию «Лучший статический сканер». Чуть хуже показали себя Антивирус Касперского и Sophos, пропустив файл, закриптованный tElock. Все остальные пакеты находятся примерно на одном уровне, явных аутсайдеров сегодня нет.

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

Новые вирусы и их всевозможные модификации появляются каждый день. Антивирусные компании, несмотря на все свои ухищрения, не могут моментально реагировать на появление малвари, поэтому проходит порядочное время, прежде чем тело вируса будет проанализировано и соответствующие сигнатуры добавлены в базу данных. Именно поэтому в любом сканере помимо сигнатурного поиска предусмотрен более сложный — эвристический. В процессе эвристического анализа проверяется структура файла, его соответствие вирусным шаблонам, выявляются конструкции, характерные для червей, вирусов и прочей малвари. В результате становится возможным обнаружение еще неизвестной малвари. Эта технология неспособна на 100% определить, вирус перед ней или нет, и, как любой вероятностный алгоритм, грешит ложными срабатываниями. Мы подготовили несколько программ, которые не являются вирусами, но используют характерные для них приемы. Посмотрим, как отреагируют на них антивирусы. Всего у нас девять заготовок:

  1. notepad-1.exe — в конец кодовой секции внедрен код, передача управления осуществляется не коррекцией точки входа (как делает большая часть малвари), а заменой call WinMain call MalwareMain;
  2. notepad-2.exe — то же самое, что и в предыдущем примере, но на этот раз передача управления на MalwareMain осуществляется через сладкую парочку CALL/RET;
  3. invisible-dwldr.exe — программа, скрыто скачивающая файл из интернета (в данном случае gif-файл) и запускающая ассоциированное с ним приложение;
  4. invisible-dwldr-seh.exe — такой же downloader, как и предыдущий, но получающий управление посредством структурных исключений, которые не все антивирусы умеют эмулировать;
  5. invisible-dwldr-longloop.exe — такой же downloader, как и предыдущий, но перед получением управления мотающий очень долгий цикл; эвристики умирают, не доходя до его конца;
  6. msblast-deunpxed-aspacked-seh.exe — вирус MSBlast, в котором передача управления осуществляется через структурные исключения;
  7. msblast-deunpxed-aspacked-longloop.exe — в точку входа тела MSBlast внедрен очень длинный цикл; эмулятор успевает отключиться, прежде чем реальный код получит управление;
  8. visible-dwnldr-seh.exe – уже известный нам downloader, только получающий управление через структурные исключения;
  9. visible-dwnldr-longloop.exe — известный нам downloader, в начале которого стоит длинный цикл; за время его исполнения антивирусы теряют к нему всякий интерес.

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

Два первых наших файла показались антивирусам абсолютно безобидными даже несмотря на то, что в них применяются характерные для вирусов приемы. Надо сказать, что в целях эксперимента я залил эти файлы на www.virustotal.com — специальный сервис, предназначенный для проверки файлов по базам многочисленных антивирусов. Так вот некоторые продукты (малоизвестные и поэтому в нашем тестировании участия не принимающие) все-таки смогли задетектить в notepad-1.exe и notepad-2.exe потенциальную малварь. Но будем считать, что наши пакеты - более продвинутые и могут отличить обычный (пусть и модифицированный) блокнот от малвари :). С выявлением опасного кода в других файлах антивирусы справились на порядок лучше. Единственное, расстраивает, что чуть измененный MSBlast смог облапошить сразу три антивируса, для этого всего-то нужно было поставить в точку входа очень длинный цикл.

NOD32 2.70.39 Антивирус КАсперсКого 7.0

x v

x v

x x

x v

avast! 4 PrOfessiONal eDitiON

x

x

x

x

avG aNti-virus free eDitiON 7.5

x

x

x

x

avira aNtivir PersONaleDitiON 7.06

x

x

x

x

BitDefeNDer aNtivirus 2008

x

v

x

v

Dr. WeB Антивирус 4.44

x

v

x

v

f-PrOt aNtivirus fOr WiNDOWs

x

x

x

x

f-secure aNti-virus 2008

x

x

x

x

NOrtON aNtivirus 2008

x

x

x

x

PaNDa aNtivirus 2008

x

x

x

x

sOPhOs NOrmaN virus cONtrOl

x

x

x

v

mcafee virusscaN 8.5.0i

x

x

x

x

Итоги: из таблицы видно, что наибольшее количество опасного кода обнаружено сразу тремя пакетами: Avira AntiVir, Dr.Web Антивирус, F-Prot Antivirus, за что они получают нашу награду «Лучшая эвристика. Неплохо показали себя Антивирус Касперского и BitDefender, остальные пакеты в предложенных образцах никаких угроз не обнаружили.

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

Что вообще такое «проактивная защита»? Эта технология — логическое продолжение эвристических методов детектирования вредоносного ПО путем анализа его возможной деятельности. Однако «проактивная защита» - более широкое понятие, нежели «эвристический анализатор». Она включает в себя мониторинг системного реестра, контроль целостности критических файлов, мониторинг работы приложений с оперативной памятью и другие методы. Когда сигнатурный и эвристический поиск не дают результатов, предотвратить работу неизвестной малвари бывает под силу как раз такой проактивной защите. Для того чтобы посмотреть на ее работу на практике, были разработаны следующие заготовки:

  1. explorer.bat – подменяет explorer.exe (активный процесс, защищенный от записи!) на cmd.exe (или любой вирус по вкусу). Действия вступают в силу после перезагрузки или убиения explorer'а любыми средствами.
  2. runone.bat – добавляет новый exe в RunOnce. Требует прав администратора.
  3. wmfhotfix.bat – добавляет новую DLL, проецирующуюся на все вновь запускаемые USER32-приложения (то есть приложения с графическим интерфейсом), перезагрузки не требует, но требует прав администратора.
  4. va_thread.exe  — демонстрирует излюбленный способ внедрения малвари в чужое адресное пространство с помощью создания удаленного потока, выполняющегося в области памяти, выделенной API-функцией VirtualAllocEx.

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

Итоги: награду «Лучший проактив» заслуженно получает Антивирус Касперского — эта штука действительно работает и может предотвратить деятельность всевозможной заразы. Порадовала также песочница Sophos Norman’а, которую вирусам обойти будет довольно сложно.

Подводя итоги

Антивирус Касперского 7.0

 

www.kaspersky.ru

 

Shareware

 

Лучший проактив

Dr. Web Антивирус 4.44 avast! 4 Professional Edition AVG Anti-Virus Free Edition 7.5

www.drweb.ru www.avast.rufree.grisoft.com

Shareware Shareware Freeware

 

BitDefender Antivirus 2008 Avira AntiVir PersonalEdition 7.06

www.bitdefender.comwww.free-av.com

Shareware Freware

лучший эВристик

 

NOD32 2.70.39

www.esetnod32.ru

Shareware

лучший сканер

F-PROT Antivirus for Windows

www.f-prot.com

Shareware

 

F-Secure Anti-Virus 2008

www.f-secure.com

Shareware

 

Norton AntiVirus 2008

www.symantec.com

Shareware

 

Panda Antivirus 2008

www.viruslab.ru

Shareware

 

Sophos Norman Virus Control McAfee VirusScan 8.5.0i

www.sophos.comwww.mcafee.ru

Shareware Shareware

 

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

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

Трюк 1: технология чистого листа

Малварь, написанная с нуля (from the scratch), не поддается детектированию в принципе (если, конечно, она не использует готовых компонентов, свистнутых из других вирусов, уже успевших засветиться в антивирусных базах). Теоретически существуют определенные последовательности машинных инструкций/API-функций, характерных для малвари и практически не встречающихся в честных программах, по которым эвристический анализатор может определить угрозу при условии, что антивирус получает управление первым, что вовсе не факт!

Зловредные последовательности легко зашифровать, разнести по разным частям программы, разбавить мусором, в результате чего практически все эвристики остаются не у дел. Самые продвинутые (KAV, NOD32) упорно продолжают мочить заразу, поэтому хакерам приходится прибегать к другим трюкам. Но! Это в случае, если антивирус получает управление первым, например, если пользователь открывает исполняемый файл, проверяемый антивирусом перед запуском. А если малварь проникает через дыру в сетевом стеке (например), то она (при наличии достаточных прав) запросто прикончит антивирус, и тот никак не сможет ей противостоять.

Трюк 2: упаковщики и протекторы

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

Трюк 3: оставаться в памяти

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

Трюк 4: код, который модифицирует себя сам

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

Трюк 5: использование неизвестных команд

При заражении программы вирус обычно внедряет в точку входа честной программы одну или несколько команд для передачи управления на вирусное тело, которое может быть расположено где угодно: в начале, середине, конце файла, или даже «размазано» по всей его длине. Если эти команды неизвестны эмулятору ЦП, то антивирус просто пропускает такой файл, поскольку знает, с какого адреса продолжать декодирование (неизвестные машинные команды имеют неизвестную длину), а неизвестных команд очень много. Реально эмуляторы поддерживают только базовые инструкции, не более 10% от общего набора x86-команд. Что же касается x86-64, то это вообще шах и мат (во всяком случае сейчас).

Трюк 6: использование API-функций

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

DVD

В этот раз на нашем DVD-приложении мы подготовили для тебя большую подборку антивирусных пакетов

Содержание