Рейтинг виявлення антивірусними продуктами «свіжого» шкідливого коду
Якось після чергової розмови в нашій компанії про те, який антивірус найкраще справляється з виявленням нових різновидів вірусів, у мене з'явилося бажання провести якесь вивчення з цього питання самостійно. Не сперечаюся, питання не нове, і безліч незалежних груп проводить свої експертизи (наприклад, відмінна добірка подібних рейтингів зведена на форумі групи Anti-Malware.ru, а також раджу поглянути на останню, у сенсі найсвіжішу, картинку VirusBulletin). Однак, сильне бажання полягало саме в тому, щоб провести такий аналіз самотужки, тим більше, що на просторах Інтернету існує практично готове джерело інформації з цього питання – чудовий сервіс VirusTotal.
Як це було зроблено і що з цього вийшло.
Першою моєю ідеєю було скористатися дуже цікавою табличкою «Top10 file submissions (Yesterday)» на сторінці Stats самого VirusTotal-а. Статистики, скажімо, за 3 місяці щоденного опитування цієї таблиці насправді вистачило б для описаних цілей. Але, на жаль, таблиця ненавмисно чи навмисно не працює, тобто. відображає значення, що змінюються тільки приблизно раз на місяць, за якоюсь своєю внутрішньою логікою. Тижневе листування з представниками самого VirusTotal-а закінчилося тим, що факт наявності «problem» був визнаний, але у вільному перекладі «пріоритет його виправлення на тлі інших більш актуальних проблем дуже невисокий». Насправді такому чудовому сервісу можна пробачити і це, хоча я б на їхньому місці просто приховав зазначений блок зі сторінки статистики до моменту ремонту.
Що собою представляють зазначені посилання? Специфіка поводження з питанням про віруси на форуми в Інтернет в основному така, що аналізований екземпляр зовсім недавно розпочав своє поширення. Найчастішеце перша третина або середина активної фази обробки його антивірусними компаніями. Якщо провести аналіз цих самих екземплярів на даний момент якість спрацьовування буде безперечно краще — я вважаю, близьким до 80-90% — але нагадаю, що в моєму розпорядженні лише посилання (за фактом — хеш-суми), а не самі екземпляри вірусів.
Ну що ж, середина життєвого циклу вірусу теж не найгірший час для аналізу в рамках поставленої мети. До списку антивірусів, що виявляють даний екземпляр, потраплять продукти або з дуже швидким зворотним зв'язком або з хорошими евристичними алгоритмами. Нас влаштовує і те, й інше. Кількість антивірусів, що виявляли екземпляри вибірки, на той історичний момент наведено на гістограмі (вісь X - кількість антивірусних движків, що спрацювали, вісь Y - кількість вірусних екземплярів):

Графік підводить до наступного невід'ємного питання процесу пошуку вірусів - хибним спрацьовуванням. Безперечно, в області графіка, близької до нуля, поряд з маловідомими на даний момент, але все-таки вірусами, розміщується безліч помилкових спрацьовувань (false positive):
- невиправданих підозр з боку евристичних алгоритмів,
- упакованих файлів (як цілком справедливо уточнив хабраюзер gjf)
- інших ненавмисних помилок антивірусних програм.
Ну а тепер власне те, заради чого всі ціпопередні дії проводились. На підставі описаної вибірки з 2600 високоймовірних «свіжих» вірусів обчислені середні частоти їх виявлення антивірусними двигунами, що беруть участь у VirusTotal.
Disclaimer.Наведена статистика є однією з випадкових реалізацій, створеної на базі вільно доступної в мережі Інтернет інформації. Незважаючи на вжиті заходи щодо виключення кореляцій та умовних ймовірностей, неможливо гарантувати з достовірністю 1,0 їх відсутність у матеріалі через специфіку отримання вибірки з Інтернету. Статистика відображає відсоток виявлення вірусних екземплярів у випадковий момент часуфази початку їх поширенняіне можехарактеризуватипідсумковеякість виявлення вірусів кожним конкретним продуктом, яке безсумнівно є вищим.
Хардкорна конфа за С++. Ми запрошуємо лише профі.