Как поймать то, чего нет. Часть третья: а судьи кто?
В прошлой статье было показано, что основной проблемой безопасности является то, что средства защиты (на примере антивирусов) пропускают наиболее опасные вредоносные файлы. И такое поведение является нормальным и ожидаемым. С другой стороны, имеются результаты многочисленных тестов, которые показывают вплоть до 100% обнаружения угроз (из последнего на Хабре можно заглянуть в публикацию «Как нас тестируют», особенно в комментарии).О чем же умалчивают те, кто тестируют, и те, кто получают награды? Антивирусов много. Дорогих и бесплатных, тормозных и не очень. И все они на первый взгляд легко поддаются оценке качества работы. В связи с этим в Интернете легко доступны многочисленные тесты антивирусов (тесты файерволов, систем ограничения доступа тоже существуют, но встречаются куда реже, хотя на самом деле эти продукты гораздо более соответствуют результатам тестирования).
Тестов много, и тестируют многие — профессиональные организации и обычные пользователи.
www.virusbtn.com www.virus.gr www.av-test.org www.av-comparatives.org www.checkvir.com www.westcoastlabs.org anti-malware.ru anti-virus-software-review.toptenreviews.com anti-spyware-review.toptenreviews.com www.techsupportalert.com/security_scanners.htm antivirus-software.6starreviews.com Можно сравнить антивирусы и в реальном времени, протестировав файл: www.virustotal.com virusinfo.info И это далеко не полный список. Так недавно я узнал еще о нескольких (не реклама, действительно просто узнал из очередного обзора Сергея Сторчака — www.securitylab.ru/blog/personal/ser-storchak): avcaesar.malware.lu и www.malwaretracker.com/pdf.php.Есть даже организация AMTSO (Anti-Malware Testing Standards Organization), взявшая на себя работу по выработке методик тестирования.
Тестов много, но наиболее распространены:
тесты антивирусов на больших коллекциях динамические тесты тесты на эвристики тесты самозащиты тесты на быстродействие О тестах на больших коллекциях великолепно написал Евгений Касперский. Ему слово (http://e-kaspersky.livejournal.com/87090.html): Классический, старый-добрый on-demand тест.Собственно, это –— самый обычный стандартный и привычный тест, и когда-то, давным-давно, в до-массово-Интернетовские времена, он действительно был самым правильным.
Методика тестирования такая: берётся диск и забивается малварой, чем больше — тем лучше, самой разной, до чего руки дотянулись. Потом на него натравливаются разные антивирусные сканеры и замеряется количество детекта. Дёшево и сердито. Но уже лет 10 как абсолютно нерелевантно!
Почему? А потому что антивирусные сигнатурные, эвристические и прочие «сканирующие» движки — это только часть комплекса технологий, которые используются в реальном мире для защиты! (причём значение этих движков в общем уровне защиты стремительно падает). Зачастую сканер вообще работает как последняя инстанция для чисто хирургической работы: например, у нас System Watcher выслеживает какого-нибудь трояна, понимает картину заражения и потом уже передаёт сканеру задачу по выпалыванию.
Другой недостаток — база малвари для сканирования.
Тут две крайности и обе порочные. Слишком мало малварных файлов — сами понимаете, нерелевантно. Слишком много сэмплов — та же трабла, но уже с другого конца: в мега-коллекции попадает слишком много мусора (битые файлы, файлы данных, не-очень-малварь, например, скрипты, которые пользуются малварью и т.п.). И очистить коллекцию от подобного мусора — тяжелейшая и неблагодарная работа. К тому же низкооплачиваемая :)
Философский вопрос, стоит ли участвовать компании в таких тестах и не так ли уж не права компания «Доктор Веб», которая пытается продавать от потребностей клиента, а не от ничего не говорящих тестов — обсуждать не будем.Но вернемся к тестам. Действительно, для тестов на больших коллекциях берется коллекция по принципу «чем больше, тем лучше», берутся антивирусы, участвующие в тесте, обновляются до актуального состояния, и запускается сканирование коллекции на обнаружение. В общем-то логично. Чем больше образцов знает антивирус, тем вероятнее, что он найдет некую заразу в момент ее проникновения к пользователю (вспоминаем миф о том, что антивирусы должны знать все существующие вредоносные файлы).
С точки знания обычного пользователя и, к сожалению, большинства заказчиков — всё чисто и вопросов нет. Но неизвестные вредоносные программы портят такую красивую картинку.
Антивирус должен лечить, и лечить живые вирусы — внедрившиеся в систему пользователя. Проверять, найдет ли антивирус нечто вредоносное в файле, тоже нужно, но в первую очередь не для сканера и файлового монитора систем, предназначенных для защиты рабочих станций, а для:
систем для защиты почтовых серверов и шлюзов — только там идет работа с вирусами исключительно в их неактивированном виде; компонентов проверки почтового и интернет-трафика антивирусов для рабочих станций / файловых серверов (которые обязаны быть, но не из них выполняют свое предназначение (традиционное обещание — это будет описано в статье, посвященной технологиям)). Но в тестах для рабочих станций, как правило, эти компоненты не проверяются. В подобных тестах проверяется работа не систем обнаружения (перехвата запуска, например), а исключительно антивирусное ядро. Коллекция либо напрямую проверяется антивирусным сканером, либо файлы из коллекции копируются скриптом, и контролируется их обнаружение файловым монитором. Тут целых три подводных камня.Во-первых, как уже говорилось, антивирус должен лечить. Но при огромных размерах коллекции физически невозможно проверить, действительно ли файл пролечен и пролечен ли он правильно — то есть полностью ли он работоспособен после проведенного лечения. Соответственно, в случае лечения пришлось бы просто полагаться на честность производителя и его сообщения об успешности лечения. Как результат, тестирования на огромных коллекциях проводятся на обнаружение.
Небольшое отступление. Обнаружение обнаружению рознь. Например, не все вирусы (сейчас мы говорим о вирусах как о классе вредоносных программ) заражают файлы правильно. Скажем, аналитики «Доктор Веб» считают, что не нужно сообщать о детекте в том случае, если вирус заразил файл так, что он никогда не будет исполнен, с одной стороны, а с другой — не влияет на работоспособность зараженной программы. Проигрыш в тесте — однозначно. Но знают ли пользователи, что проигравшая программа заботится о них, так как результат лечения не всегда предсказуем?
Еще одно отступление и еще пример. Полиморфные вирусы — ныне редкость, да. Но тем не менее. Полиморфные вирусы не определяются по сигнатурам — они изменяются на каждый запуск. Как их поймать в тесте, если в антивирусе нет полиморфного анализатора? Найти все имеющиеся у тестировщиков образцы и занести в базы. Все равно никто запускать их не будет для получения новых образцов. Реальный случай из прошлого.
Во-вторых, антивирус должен лечить в реальных условиях. Реальные вирусы, проникшие в систему, активно противодействуют антивирусам — шифруются, применяют методы полиморфного изменения и обфускации, маскируются под вполне безобидные процессы и т. д. Удалить их в разы сложнее, чем обнаружить в файле. И тем более сложно их удалить так, чтобы не повредить систему. Опять же в силу огромного размера коллекций и невозможности набрать необходимое количество специалистов, лично проверяющих качество лечения по каждому вирусу, провести тесты на лечение невозможно. Опять же приходится верить на слово производителям.
В-третьих, антивирус должен обнаруживать только вредоносные файлы. В силу отсутствия нужного числа специалистов, способных проверить всю коллекцию и гарантирующих отсутствие в ней различного мусора, не относящегося к вредоносным объектам, опять же приходится верить на слово продукту, что он обнаружил вирус, а не обломок реестра. И чтобы победить в тесте, нужно занести весь этот мусор в базы. С одной стороны, базы раздуваются, а с другой — как можно победить, если заранее не получить весь этот хлам?
Итого. Тесты на огромных коллекциях:
открывают широкий простор для злоупотреблений недобросовестным производителям, в рекламных целях завышающим процент обнаружений; не показывают, насколько хорошо ведет себя антивирус в реальных условиях боевого столкновения с вирусом; не тестируют все компоненты антивируса — что, кстати, крайне важно, так как современные вирусы в момент выхода тестируются на актуальных версиях антивируса и до поступления образцов в лабораторию не обнаруживаются никем. Обеспечить защиту может только ограничение путей проникновения вирусов в систему — офисный контроль, закрытие портов и т. д. Насколько честно гордиться такими победами по отношению к своим пользователям? Философский вопрос.
Широкое распространение тестов на огромных коллекциях провоцирует производителей на создание «антивирусов», которые:
ориентированы на обнаружение только тех образцов, которые встречаются в тестах; обнаруживают 100% вирусов в любой коллекции, даже если в ней нет вирусов; заточены только на обнаружение и удаление самих вредоносных программ. Слово Евгению Касперскому: под такие тесты можно заточить любой продукт. Чтобы показывать в этих тестах выдающийся результат. Подгон продукта под тест делается элементарно — нужно просто детектить по максимуму те файлы, которые используются в тесте. Вы следите за ходом мысли?
Для того, чтобы показать в «тестах сканирования» близкий к 100% результат, не надо упираться и повышать качество технологий. Надо просто детектить всё то, что попадает в эти тесты.
Чтобы победить в этих тестах не нужно «бежать быстрее медведя». Нужно просто присосаться к источникам малвари, которые используют самые известные тестеры (а эти источники известны — VirusTotal, Jotti и малваро-обменники антивирусных компаний) — и тупо детектить всё, что детектят остальные. Т.е. если файл детектируется конкурентами — просто задетектить его по MD5 или типа того.
Всё! Я лично готов с нуля, силами пары разработчиков, сделать сканер, который будет через пару месяцев показывать почти 100% детект. // почему именно два разработчика нужно — на всякий случай, вдруг один заболеет.
Разновидностью теста на больших коллекциях являются тесты на эвристики. Исходя из того, что антивирус должен ловить еще не поступившие в лабораторию образцы, каждый антивирус содержит механизмы обнаружения еще неизвестных вредоносных программ. С этой целью состояние антивируса фиксируется на дату, сильно отстоящую назад от времени проведения теста, а используемая коллекция содержит вирусы, появившиеся после этой даты. Такой тест хорошо показывает, насколько хорошо антивирус ловит варианты уже известных вирусов, но, как уже говорилось, современные вирусы, в том числе направленные на кражу финансовой информации, перед релизом проверяются на актуальных антивирусных базах — и высокий рейтинг продукта в данном тесте не спасает пользователя от потери своих денег и данных.Еще один вид теста — динамический. Устанавливается актуальная версия антивируса, и имитируется работа пользователя. Проблем несколько:
Типичные пользователи не занимаются настройкой безопасности (скажем, родительского контроля и поведенческого анализатора). Соответственно, вредоносные файлы, протестированные на необнаружение типовой установкой, пройдут без проблем. Стандартных профилей работы пользователя в сети лично мне не известно. Если я не прав — просьба поправить. Социальная инженерия творит чудеса. Как пример последнего времени — письма от налоговой инспекции с указанием настоящих имен (привет защите персональных данных!). Но динамические тесты все же лучше, чем обычные тесты на больших коллекциях, так как проверяют большую часть компонентов антивируса.И кстати, угадайте, какой из очень часто рекомендуемых антивирусов не просто проваливал тест по типу habrahabr.ru/post/160905, но и смог в свое время набрать отрицательное количество баллов (http://dennistechnologylabs.com/reports/s/a-m/2012/DTL_2012_Q4_Home.1.pdf, dennistechnologylabs.com/reports/s/a-m/2013/DTL_2013_Q4_Home.1.pdf)?
Кроме тестов на обнаружение, для антивирусов наиболее распространены тесты на быстродействие и скорость запуска каких-либо программ. Тесты на быстродействие обычно совмещаются с тестами на обнаружение на больших коллекциях. Засады тут две.
Грубо говоря, антивирусные базы — это набор записей и процедур, определяющих, как обнаружить тот или иной вирус. Кроме этого, базы содержат распаковщики различных форматов архивов, упаковщиков, баз данных и т. д. Соответственно, чтобы найти тот или иной вирус, антивирусу надо пробежаться по всей базе. Естественно, производители оптимизируют форматы баз для ускорения перебора (скажем, уже упоминавшаяся технология FLY-CODE от «Доктор Веб» работает в том числе и на это), но в общем случае чем больше база, тем вероятнее большее время поиска по ней. Поскольку для определения вируса любому производителю нужно примерно одинаковое количество данных (естественно, речь о сигнатурах), то сильно меньший размер баз при высокой скорости проверки должен настораживать. Тестов, учитывающих информированность антивируса о вирусах (например нормирующих скорость проверки на размер записей), не производится.
Пример из жизни. Не знаю, как в текущем году, но год назад в России все еще был антивирус, «определяющий» вирусы по пяти или семи, не помню точно, сигнатурам.
По-хорошему такое тестирование также должно проводиться на стандартных профилях пользователя. Скажем, в реальной жизни, как правило, одновременно открывается много файлов, а современные процессоры являются многоядерными. Как оценить, насколько антивирус хорошо работает и на современных компьютерах, и на том, что в большом количестве стоит в регионах (запросы на защиту компьютеров на основе 386-го процессора прекратились не так давно)? Должны существовать несколько режимов тестирования с различным количеством одновременно открываемых файлов (количеством тестовых потоков). Тестировать только на одной и притом только современной конфигурации машины? Или тестирующие думают, что везде в России у всех пользователей компьютеры этого года выпуска? И, возвращаясь к сказанному — я не видел ни одного стандартного профиля для работы пользователя в Интернете — сколько и какие данные посылаются/скачиваются, в какие промежутки времени и т. д.
Итого существующая ситуация с антивирусными тестами на быстродействие толкает производителей на создание:
продуктов, имеющих как можно меньшие базы; продуктов, имеющих информацию только о том, что встречается в тестовых наборах («вирусах встречающихся в живой природе»); продуктов, все внимание в которых уделяется развитию компонентов, подвергающихся тестированию. Все это усугубляется тем, что порог входа на рынок очень велик — для вывода на рынок нового продукта нужно сразу иметь базы с информацией обо всех существовавших и существующих вирусах, методах их обнаружения и многом другом — гораздо проще обнаруживать топ-100 вирусов.Прежде чем перейдем к последней группе тестов, немного теории. На рынке присутствует достаточно большое количество антивирусных программ. И делятся они на две части. Первая разрабатывает все нужное для ловли и лечения вредоносных программ самостоятельно, вторая — лицензирует у первых антивирусные ядра. И на тестах на больших коллекциях, на эвристики и первые, и вторые показывают примерно равные результаты. А вот в реальной жизни все иначе. Смотрим на последние два теста из разряда тестов на малых коллекциях, когда организаторы теста имеют возможность проверить результаты «общения» каждого антивируса и каждого вируса. Это тесты на лечение активных заражений и самозащиту.
www.anti-malware.ru/antivirus_self_protection_test_x64_2011
www.anti-malware.ru/malware_treatment_test_2012. Для сокращения размера из таблицы убраны награды
Разница между первой и второй группой, грубо говоря, в драйверах. Лицензируется и передается антивирусное ядро. Система перехвата в АПИ как правило не входит. Но вредоносный файл нужно поймать — перехватить трафик до момента внедрения вируса в систему, обнаружить и уничтожить руткит после прихода обновления. И на тестах лечения активного заражения и тестах самозащиты мы как раз и видим разницу подходов к безопасности — резкое падение качества работы после тройки лидеров.
Приверженцам бесплатных продуктов просьба понять — бесплатный сыр бывает только в мышеловке. Разработка любых решений безопасности — крайне затратный процесс, и работают в ведущих компаниях профессионалы, которые хотят получать адекватную зарплату.
И еще. Рынок информационной безопасности уникален. Именно здесь покупка некой компании может не дать покупателю ничего, поскольку купить патенты мало — здесь нужны головы (http://www.i2r.ru/news.shtml? count=30&id=20668, www.kaspersky.ru/about/security_experts).
К сожалению, ресурс, на котором проводились вышеприведенные тесты, был основан Ильей Шабановым, работавшим на тот момент в «Лаборатории Касперского». И это вызвало резкие подозрения в ангажированности побед. Не по данному тесту, но по сходному поводу, Евгений Касперский написал (http://e-kaspersky.livejournal.com/83656.html):
не будем судить об объективности и независимости, поскольку Passmark и так ничего не скрывает: дисклеймер документа честно сообщает, что тест субсидировался и проводился по методологии одного из участников: Symantec Corporation funded the production of this report and supplied some of the test scripts used for the testsЛюбопытно, что этот дисклеймер присутствует и в предыдущих тестах антивирусного софта (2010, 2009, 2008). Догадайтесь, кто в них занимал первое место? Но факт теста налицо, победитель апеллирует к мнению уважаемой организации (а Passmark действительно таковой является), размахивает флагом, публика аплодирует и восторгается. Посему уж очень интересно узнать каким образом некоторые «supplied scripts» повернули тест таким образом, чтобы возвести на престол спонсора?
К моему глубокому сожалению, тесты на www.anti-malware.ru давно не проводятся, и замены им нет.Итого: тесты на активное лечение и самозащиту:
Наиболее точно отражают те качества антивируса, по которым нужно выбирать продукт. Четко показывают, какой из продуктов можно использовать для выполнения основной задачи антивируса — лечения активных заражений. В силу небольшой коллекции необнаружение даже одного образца может привести к существенной разнице с победителем. Даже если коллекция создавалась беспристрастно, нельзя гарантировать, что пришедший вторым хуже лидера — соответствующий экземпляр мог просто не успеть прийти в лабораторию для анализа.И еще о тестах.
Как правило, тестируются только продукты для защиты рабочих станций — тестирования серверных продуктов проводятся крайне редко. Это связано в том числе и с отсутствием общепризнанных методик тестирования. Если стандартный профиль стандартного сотрудника для почты еще можно получить, но для шлюзов я такого не видел. Приводимые в маркетинговых документах цифры, показывающие размер проверяемого трафика для шлюзовых решений, даются без указания методик их получения, что их обесценивает. Нас достаточно часто запрашивают о максимальном трафике для конкретной ситуации. В большинстве случаев производительность шлюзовых устройств ограничивается каналом доступа — современные сервера даже в минимальной конфигурации способны защищать до 250 сотрудников (естественно, если размер трафика не превышает разумные пределы), что с запасом перекрывает потребности большинства компаний. Подытоживая. Ситуация с тестами ровно укладывается во фразу: «Мы вас не обманываем, мы просто не говорим всей правды». Результаты тестирования, естественно, нужно принимать во внимание —, но только первоначально составив для себя список задач, за которые должен отвечать антивирус в системе. Если вам нужно, чтобы антивирус был незаметен — ваше право, но если вам нужна страховка на случай, когда северный зверь заглянул к вам в гости — тесты без понимания функций антивируса вас не спасут.Или словами Евгения Касперского:
Спросите, а как же тогда ориентироваться? Кто может авторитетно замерить качество антивируса? Ответ прост — реально НЕТ такого теста, который я бы мог однозначно рекомендовать как лучший показатель. У одних недостатки методологии, другие сильно специфичны.
Что можно посоветовать? По моему мнению, наши антивирусы (я не говорю Российские, без сотрудников из Украины, Казахстана, иных стран мы бы не стали теми, кто мы есть) — лучшие в мире. Выбор антивирусов нужно производить только среди вендоров, разрабатывающих все нужное для ловли и лечения самостоятельно. Реклама про использование нескольких ядер — путь к вирусам. Использовать нужно только антивирусы от производителей, ориентирующихся на развитие антивирусного ядра, а не только вносящих изменения в интерфейс. Кстати — кто назовет нововведения в антивирусных ядрах вендоров за последний год? Слова «оптимизировано» и «ускорено» — не считаются. Выводы каждый делает сам.И в заключение традиционно вопрос:
Существуют ли на данный момент, по вашему мнению, стандарты/приказы/методики, позволяющие построить надежную систему защиту, опираясь только на них? Может ли молодой специалист, которому внезапно выпало поручение составить ТЗ на защиту компании, выполнить задачу? На какие материалы ему нужно опираться? Учитываем, что, как ни грустно, большинство тех, кто предложит помощь, заинтересованы в продаже конкретного софта/железа (иногда без злого умысла — предлагаемое легко продается / не нужно убеждать клиента).