Pull to refresh

Как поймать то, чего нет. Часть вторая: снаряд и броня

Reading time 9 min
Views 24K
Часть первая была посвящена выбору определения для понятия «вредоносная программа» и, вполне логично, что статья привлекла мало внимания — ну в самом деле, кому какая разница, какого цвета крыса — главное, чтобы кошка исправно их душила.

Во второй части мы постараемся определить, чем же должен заниматься антивирус в локальной сети. Если кто-то еще думает, что антивирус должен ловить вирусы — просим под кат.

В конце первой части Хаброжителям было предложено ответить на три простых, детских вопроса:

  • сколько вредоносных программ создается злоумышленниками в среднем в день?
  • какой процент вредоносных программ может пропускать антивирус, чтобы считаться годным средством защиты, и почему антивирус может их пропускать?
  • для чего нужен антивирус — какие задачи он выполняет в системе защиты?

Вопреки ожиданию на первый вопрос был сходу дан близкий к истине ответ. К сожалению, в реальности заказчики и участники конференций не столь хорошо осведомлены. Личная статистика показывает, что клиенты, участники конференций, где мне удавалось провести опрос, и даже партнеры, которые по идее должны знать многое, в ответ на вопрос: «Сколько вредоносных программ создается в среднем в день» — называют цифру 100. После предложения повысить — 500 или тысячу. И впадают в легкую задумчивость, когда озвучивается реальная цифра.

Заглянем на live.drweb.com, закладка Infected:



Это поступление образцов на анализ. Цифры на графике, кстати, совершенно не рекордные. Если не ошибаюсь, то в начале декабря 2013 г. в один из дней был пик до 6 миллионов. Естественно, не всё пришедшее — вредоносные программы (об этом будет отдельная тема, когда мы будем говорить об уровне знания типичного пользователя). И конечно, есть повторы, но, тем не менее, всё это преображается в рост вирусной базы.



При этом входящий поток постоянно растет. К сожалению, я не нашел свежих цифр по другим компаниям, но в 2011 г. Евгений Касперский написал: «70 тысяч. Ежедневно. Ага».

Небольшое отступление. Распространеннейшим заблуждением является мнение, что антивирусы ловят вредоносные программы по сигнатурам. Это мнение обычно активно эксплуатируют программы, реализующие «модные» типы защиты. Не так давно с этой позиции выступали поведенческие анализаторы, затем настала очередь облачных антивирусов. «Обычные сигнатурные антивирусы, потребляющие ресурсы, вымрут, на их место придут...». Так вот, для тех, кто в танке. Чисто сигнатурные антивирусы вымерли в 90-х годах прошлого века, когда появились полиморфные вирусы, изменяющиеся при каждом запуске и, соответственно, не ловящиеся по сигнатурам (кстати, именно это стало причиной появления одного из двух отечественных антивирусов — Dr.Web). Поэтому правильно измерять вирусные базы в записях.

Вернемся к количеству создаваемых вредоносных файлов в день. Зачем я все это рассказываю? Дело в том, что практически на каждой второй конференции спрашивают — а правда, что вы пишете вирусы? Более того, принимаемые на работу сотрудники тихо-тихо намекают — ну я уже теперь свой — покажите, где? Миф настолько укоренился, что к антивирусным компаниям постоянно обращаются клиенты с просьбой выдать что-то еще неизвестное для тестирования. Антивирусные компании не рассылают никаких образцов, западные компании даже не берут на работу бывших хакеров ввиду их моральной неустойчивости. Сотрудников компаний не расстреливают при увольнении, и если кто-то когда-то узнает, что компания ххх создала семпл…

Миф крайне опасен. Исходя из него количество вредоносных файлов, выпускаемых в день, крайне невелико — ну сколько вендоры создадут для попадания в новости? Из мифа получается, что антивирусные программы должны знать все вредоносные программы — или почти все. Но при таком потоке вредоносных файлов (а по разным оценкам на анализ в антивирусные лаборатории попадает не более 70–80 (и не сильно удивлюсь, что оценка эта завышена) процентов вредоносных программ из выпущенных в «дикую природу» в этот день) оперативно обработать и мгновенно выпустить обновление — нельзя.

Озвучим первые две причины пропуска вирусов антивирусным ядром (про поведенческие анализаторы поговорим позже):

  1. Задержка обнаружения новой вредоносной программы — дельта между ее попаданием к жертве и поступлением на анализ.
  2. Задержка обработки в связи с большим количеством поступивших на анализ программ / неверной оценкой опасности программы в момент обнаружения. Кстати, именно с этой причиной связан миф о большей эффективности Dr.Web CureIt! по сравнению с обычным антивирусом — зачастую между заражением компьютера и скачиванием утилиты вредоносная программа успевает попасть в базы.

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

Раз мы упомянули об эвристиках, то еще одно отступление в технологии. К сожалению первой реакцией на рассказ о количестве выпускающихся вредоносных программ являются слова: «Это понятно, такие вирусы должны обнаруживаться эвристиком». К сожалению многие, опираясь на миф о тестах, считают эвристики панацеей. Так вот. Эвристики обнаруживают только новые модификации ранее попавших на анализ вредоносных программ, вредоносные программы с известным антивирусу поведением. Предположим, некоторое время назад злоумышленники разработали вредоносную программу. Через некоторое время она стала детектироваться. Что делать злоумышленникам? Начинать все заново? Можно поступить проще — упаковать в архив с неизвестным антивирусу форматом / зашифровать вредоносную программу. Никакой эвристик такую спрятанную программу не возьмет. Что делать антивирусу? Можно добавлять каждый такой образец в вирусную базу (и так делают!), а можно ловить c помощью FLY-CODE и технологии анализа структурной энтропии, как делает Dr.Web (у каждой компании свои технологии, поэтому знатоки иных продуктов приглашаются для пополнения списка). Первый обеспечивает проверку упакованных исполняемых объектов, распаковывает нестандартные упаковщики методом виртуализации исполнения файла, второй обнаруживает неизвестные угрозы по особенностям расположения участков кода в защищенных криптоупаковщиками проверяемых объектах.

Вернемся к причинам необнаружения. Самая страшная проблема — третья. Наиболее опасные вредоносные программы давно делают не хакеры-одиночки. Это хорошо организованный криминальный бизнес, построенный по образу и подобию компаний, разрабатывающих обычные программы. В состав таких «фирм» входят:

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

И ключевую роли играют тестировщики. Тестирование на необнаружение (а зачем выпускать вредоносную программу, которая будет обнаруживаться?) разрабатываемых вредоносных программ актуальными антивирусными решениями обеспечило возможность выпуска только вредоносных программ, не обнаруживаемых (до получения обновлений) никакими антивирусными решениями — в том числе с помощью эвристических механизмов. Сколько вредоносных программ может выпустить одна группировка? Характерной в этом отношении была группировка, выпускавшая Carberp (http://updates.drweb.com — ТОЛЬКО добавленное в вирусную базу за 02.03.2012):

TrojanCarberp.14(2) Trojan.Carberp.15(7) Trojan.Carberp.194 Trojan.Carberp.195 Trojan.Carberp.196 Trojan.Carberp.197 Trojan.Carberp.198 Trojan.Carberp.199 Trojan.Carberp.200 Trojan.Carberp.201 Trojan.Carberp.202 Trojan.Carberp.203 Trojan.Carberp.204 Trojan.Carberp.205 Trojan.Carberp.206 Trojan.Carberp.207 Trojan.Carberp.208(14) Trojan.Carberp.209 Trojan.Carberp.210 Trojan.Carberp.211 Trojan.Carberp.213 Trojan.Carberp.214 Trojan.Carberp.215 Trojan.Carberp.216 Trojan.Carberp.217 Trojan.Carberp.218 Trojan.Carberp.219 Trojan.Carberp.220 Trojan.Carberp.221 Trojan.Carberp.222 Trojan.Carberp.224 Trojan.Carberp.225 Trojan.Carberp.226 Trojan.Carberp.227 Trojan.Carberp.228 Trojan.Carberp.229 Trojan.Carberp.230 Trojan.Carberp.231 Trojan.Carberp.232 Trojan.Carberp.233 Trojan.Carberp.234 Trojan.Carberp.235 Trojan.Carberp.236 Trojan.Carberp.237 Trojan.Carberp.238 Trojan.Carberp.239 Trojan.Carberp.240 Trojan.Carberp.241 Trojan.Carberp.242 Trojan.Carberp.243 Trojan.Carberp.244 Trojan.Carberp.245 Trojan.Carberp.246 Trojan.Carberp.247 Trojan.Carberp.248 Trojan.Carberp.249 Trojan.Carberp.250 Trojan.Carberp.251 Trojan.Carberp.252 Trojan.Carberp.253 Trojan.Carberp.254 Trojan.Carberp.255 Trojan.Carberp.256 Trojan.Carberp.257 Trojan.Carberp.258 Trojan.Carberp.259 Trojan.Carberp.260 Trojan.Carberp.261 Trojan.Carberp.262 Trojan.Carberp.263 Trojan.Carberp.264 Trojan.Carberp.265 Trojan.Carberp.266 Trojan.Carberp.267 Trojan.Carberp.29(14) Trojan.Carberp.33(10) Trojan.Carberp.45(4) Trojan.Carberp.5(3) Trojan.Carberp.60(6) Trojan.Carberp.61 Trojan.Carberp.80

Впечатляет? Один день. Одна группировка.

Число программ, выпускаемых одной группировкой, может достигать сотен образцов в день — и ни один из них не будет обнаруживаться антивирусным ПО, используемым целевой группой жертв.

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

Если компания/пользователь/администратор полагаются в деле обнаружения вредоносных программ только на антивирусную программу — они полностью беззащитны. Именно этим определяется успех шифровальщиков (а в недавнем прошлом и WinLock'а).

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

Вывод 1. Увы и ах. Выбор антивируса на основе побед в тестах — не имеет смысла. О тестах будет отдельная статья, но так или иначе все тесты производятся на уже известных вредоносных программах.

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

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

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

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

(Взято из презентации компании CyberArk на недавнем межбанковском форуме в Магнитогорске)

Приношу извинения за перечисление азбучных истин. Но многие так уверены в абсолютной ненужности защиты серверов…



Где здесь открытие Америки?

Вывод 3. Используемое для защиты рабочих станций и файловых серверов антивирусное решение должно:

  1. иметь систему самозащиты, не позволяющую неизвестной вредоносной программе нарушить нормальную работу антивируса, — антивирусное решение должно нормально функционировать до поступления обновления, позволяющего пролечить заражение;
  2. как система управления, так и система обновления антивирусного решения должны быть независимы от соответствующих механизмов, используемых в операционных системах (никаких WSUS и Windows Update) и включены в систему самозащиты антивируса, что позволяет исключить возможность перехвата системы обновления вредоносной программой. Вообще число компонентов операционной системы, независимых библиотек и т. д., используемых антивирусом, но естественно, не помещаемых под защиту системы самозащиты — должно быть минимальным;
  3. система управления антивирусной защитой должна обеспечивать максимально быстрое получение обновлений защищаемыми рабочими станциями и серверами;
  4. антивирусная система должна полагаться в первую очередь на технологии антивирусного ядра — с трудом поддающиеся обходу вредоносными программами, а не на внешние компоненты, которые так или иначе могут быть скомпрометированы вследствие неверного использования и/или использования уязвимостей в используемых совместно с ними внешних программах или библиотеках (данное положение мы разберем, когда будем говорить о достоинствах и недостатках различных технологий и влиянии СМИ на уровень защищенности).

И в заключение вопрос:

  • Существуют ли на данный момент, по вашему мнению, тесты, позволяющие адекватно оценить качество систем защиты?

Разбор мифологии ИТ продолжим в следующей статье.
Tags:
Hubs:
+13
Comments 64
Comments Comments 64

Articles