Вообще-то мы могли бы читать толстые талмуды про методики тестирования антивирусов, делать все по-умному и по правилам. Хотя о чем речь? Какие правила? Какие вообще могут быть правила на войне – войне вирусов и антивирусов? Кто сильнее – тот и прав, вот и все правила. И мы их придерживаемся. Кроме того, нам просто нравится все ломать :).

Сегодня в нашу краш-лабораторию попали три популярных антивирусных программы. Первый претендент — это антивирус ESET NOD32 версии 4.2. Он представляет собой решение для защиты домашнего компьютера от вирусов, троянских программ, червей, рекламного ПО, шпионских программ, фишинг-атак и руткитов. К достоинствам данного продукта можно отнести наличие проактивной защиты, точное обнаружение угроз, HIPS (Host Intrusion Prevention System) и высокую скорость работы.

В роли следующего подопытного выступает avast! Free Antivirus. Как понятно из его названия, программа совершенно бесплатна, благодаря чему снискала большую популярность во всем мире. Основными ее достоинствами являются защита от руткитов в реальном времени, технология avast! Intelligent Scanner, а также разнообразные модули защиты, которые сами разработчики называют «щитами» (щит поведения, щит P2P/мгновенных сообщений и т.д.).

И, наконец, третьим (и последним) антивирусом, который подвергнется нашим краш-тестам, будет Avira AntiVir Personal. Со слов рекламщиков – это надежная бесплатная антивирусная программа, постоянно и быстро защищающая компьютер от такого вредоносного ПО, как вирусы, трояны, Backdoor-программы, мистификаторы, черви, диалеры и т.п.

 

Принцип тестирования

Для вновь присоединившихся напомним, что и каким образом мы тестируем. Итак, нами были разработаны пять ужасных испытаний. Некоторые тесты представляют собой специально написанные мной программы, другие можно выполнить вручную с помощью стандартных инструментов Windows. Все опыты проводились в Windows XP Professional SP3. За прохождение каждого теста выставляется оценка по пятибальной шкале. В конце мы подсчитаем среднеарифметическое всех оценок и посмотрим, кто оказался самым стойким.

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

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

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

Ну а теперь, когда все нюансы оговорены, краш-тесты готовы к запуску, а антивирусы трясутся от страха, как первокурсники перед экзаменом, приступим к самому интересному.

 

Тест №1

Первый тест будет проделан средствами специально написанной утилиты. В командной строке мы передадим ей полное имя файла, который хотим удалить при следующей загрузке ОС. Программа вызовет системную функцию MoveFileEx; эта функция может перемещать файлы и папки. Если в качестве второго параметра передать NULL, а третьим — флаг MOVEFILE_DELAY_UNTIL_REBOOT, то файл, путь к которому должен быть прописан в первом параметре нашей чудо-функции, будет безвозвратно удален после перезагрузки ОС. Код программы настолько прост, что его осилит даже самый нерадивый хакер.

Теперь посмотрим, как все это переживут наши антивирусы. Если запустить NOD32 и посмотреть в диспетчер задач, то можно увидеть два процесса: egui.exe и ekrn.exe. Первый запущен с правами текущего пользователя, а второй – с привилегиями системы. Вот их-то мы и попытаемся удалить. Запускаем утилиту для удаления, указав нужные файлы и перезагружаем компьютер. После перезагрузки антивирус успешно запустился. Тест пройден, причем на пять, поскольку NOD32 тихо и спокойно предотвратил попытку собственного удаления с жесткого диска пользовательской машины.

Но у нас осталось еще два претендента на звание самого стойкого. В случае с avast мы будем атаковать файлы avastsvc.exe и avasrui.exe, а с Avira AntiVir – avgnt.exe, avguard.exe, avshadow.exe. Запускаем тест, делаем ребут и… оба антивируса как новенькие. И аваст, и авира справились на пятерку. Никаких лишних сообщений, заставляющих пользователя делать выбор, никаких намеков на сбой в работе. Все справились на «отлично».

 

Тест №2

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

Приступим к испытанию. Атаковать мы будем все те же файлы, что и в первом тесте, предварительно зашифровав их полные имена. NOD32 опять героически выдерживает нападение на свои exe’шники. После перезагрузки он все так же радует нас своей замечательной иконкой в трее. А вот avast! Free Antivirus и Avira AntiVir Personal, к сожалению… К сожалению, и они выдержали это нападение. Всем пятерки. Это отвратительно.

 

Тест №3

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

Проверку на прочность опять начинаем с NOD’а. Запускаем утилиту для теста, предварительно не забыв указать пути к файлам, которые должны быть стерты с поверхности диска. Жмем кнопочку рестарта системы. Экран потух и сразу же загорелся. Системный динамик тихо пикнул. Побежала строка загрузки старой доброй Windows XP. И вот уже радостное «Welcome» на приятном синем фоне сообщает нам о том, что через несколько секунд мы узнаем о том, что сталось с NOD32. А с ним ничего и не произошло. Работает, как часы.
Но у нас еще остается надежда на Аваст, или хотя бы на Avira AntiVir.

В третий раз проделывая уже хорошо знакомые нам операции, мы ждем загрузки ОС. И то, что мы видим, повергает нас в полное уныние. Они оба, и avast!, и Avira, работают как ни в чем не бывало. Неужели все опять заработали по пять балов и мы никому не влепим даже жалкой троечки, не говоря уже о большой и жирной двойке? Похоже, наша краш-лаборатория медленно, но верно переквалифицируется в салон красоты для котят. Одно радует – впереди еще есть тесты.

 

Тест №4

Следующий тест мы будем проводить с помощью стандартных инструментов Windows XP Professional. Для этого в главном меню системы нужно выбрать пункт «Выполнить…» и вписать туда следующее: gpedit.msc. Откроется консоль с групповыми политиками. Далее следует кликнуть по элементу «User Configuration», затем «Administrative Templates», «System». После чего справа мы увидим «Don’t run specified Windows applications». Эта опция позволяет запретить запуск определенных программ, основываясь на имени исполняемого файла.
Своей очереди ждет NOD32.

В политиках винды мы пропишем два исполняемых файла: egui.exe и ekrn.exe. Если у нас не получилось их удалить, то попробуем хотя бы помешать им загрузиться. После нажатия кнопочки OK и перезагрузки компьютера терпеливо ждем. ОС уже загрузилась, но значка антивируса не видно. Подождем еще минутку, возможно, это просто тормоза… Однако, ни через минуту, ни через две антивирус так и не стартовал. Победа? Заглянем в диспетчер задач. К нашему глубокому сожалению, процесс ekrn.exe все-таки был запущен, но вот пользовательским интерфейсом нигде и не пахнет. Троечка. Цепь побед антивирусов прервана.

Но не будем забывать и о других. Аваст повел себя практически так же, как и NOD – запустилась только системная служба, а вот прикладные пользовательские программы не стартовали, то есть нет значка в трее, и не видно никаких окон. Недалеко ушел и Avira AntiVir. Картина идентична двум предыдущим. Всем по трояку. Наша самооценка потихоньку начинает расти, ведь нам все-таки удалось сломить эти творения антивирусной индустрии.

 

Тест №5

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

Начнем с NOD32. Установка и удаление NOD’а выполняется с помощью стандартного майкрософтовского инсталлятора. Для тихого удаления нужно выполнить команду, похожую на эту:

msiexec /quiet /uninstall {1A59064A-12A9-469F-99F6-04BF118DBCFF}

Разумеется, предварительно подставив в нее нужный GUID. Через минуту компьютер перезагрузится и от антивируса не останется и следа. Словацкий антивирус получает заслуженную двойку, нельзя же так просто дать себя удалить из системы!

Для анынсталла avast! Free Antivirus использует собственный модуль. Вызывается он более чем странно:

C:\Program Files\Alwil Software\Avast5\aswRunDll.exe "C:\Program Files\Alwil Software\Avast5\Setup\setiface.dll" RunSetup.

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

За такую бдительность avast получает твердую пятерку. А что же с Avira AntiVir Personal? Инсталлятор у этого антивируса тоже самодельный и никакими законными методами скрытый режим удаления мы отыскать не смогли. То есть, вроде бы можно поставить и пятерочку, но после аваста рука не поднимается – а вдруг кто-то сообразит, как скрыто запустить процесс анинсталла? Поэтому я предлагаю всадить Авире четверочку. Чтобы, значит, стремился к лучшему.

 

Тест №6

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

NOD32, как и все уважающие себя антивирусы, раскинул свои щупальца по всей системе. У него есть собственный драйвер для мониторинга обращений к файловой системе и реестру Windows. Также им постоянно запущена служба, которая осуществляет управление драйвером и модуль UI, который стартует при запуске ОС и служит для общения с пользователем. Все эти компоненты прописаны в системном реестре. Например, службы и драйверы живут вот в такой ветке: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\. Попробуем помешать старту службы ekrn.exe, удалив подключ ekrn, который находится в вышеуказанной ветке реестра. Жмем кнопочку Del на клавиатуре и в ответ получаем безрадостное Access denied. С драйвером та же история. Но мы не отчаиваемся и пробуем сломать хотя бы запуск UI-части. Для этого идем в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run и находим там параметр, ответственный за запуск egui.exe. Удаляется этот параметр очень даже хорошо и мы радостно перезагружаем компьютер. После старта ОС иконка NOD’а в трее не появилась. Цель достигнута, хоть и с небольшими оговорками. ESET NOD32 получает тройку.

Следующий по списку – avast. Все важные для запуска параметры находятся в тех же местах, что и у NOD’а. Но и удаление ключей, ответственных за старт службы и драйвера, также оканчивается неудачей. Да и, к тому же, отключить автозагрузку UI-части антивируса нам тоже не удалось. Аваст получает пятерку.

Avira AntiVir повел себя точно так же, как и NOD32 – записи реестра, служащие гарантией загрузки служб и драйверов, остались неприкосновенны, а вот стандартный авторан был безжалостно удален из реестра. Авира получает троечку.

 

Итоги

Испытания закончены. Все антивирусы, к нашему сожалению, показали себя достаточно хорошо. Лучшим оказался avast! Free Antivirus набрав 4,7 балла. На втором месте Avira AntiVir Personal – 4,2 балла. И завершает список ESET NOD32 с жалким результатом в 3,8 балла. Жаль, жаль. Ну, ничего, в следующий раз мы придумаем еще более бесчеловечные способы и обязательно тебя с ними познакомим.

 

Сравнительная таблица результатов

file: /tables/table_1.xls

 

Почему все так хорошо справились?

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

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

Проверить, кто же мешает провести диверсию, очень просто – достаточно загрузиться в Safe mode и проверить, удаляются ли нужные файлы и ключи реестра. В безопасном режиме «лишние» драйвера не грузятся, что дает возможность беспрепятственно разобраться с антивирусом.

 

Александр Эккерт, постоянный автор, враг антивирусов и повелитель нулевого кольца

Я бы не стал делать скоропалительных выводов. Позволю себе прокомментировать только одну ситуацию – возьмем, к примеру, ту организацию, где я работаю. Хотя, если честно, она будет справедлива, наверное, для 95% всех организаций вообще. Итак, порядка 100 машин, не больше, половина из них имеют постоянный доступ в сеть, доступны обновления, почти везде стоят аверы, в том числе и у команды админов (в их число я не вхожу). И что? Да у нас тут прямо вирусный зоопарк, если честно. Мне как-то флешку принесли с документами, на которой оказалось чуть больше 1,5k экземпляров одного и того же вируса.

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

 

Лозовский Александр, редактор рубрики «Malware»

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

Оставить мнение

Check Also

Антиотладка. Теория и практика защиты приложений от дебага

К методам детектирования отладки прибегают многие программисты: одни хотели бы уберечь сво…