Как это не парадоксально, но я до сих пор регулярно слышу в качестве совета по борьбе с вредоносным ПО рекомендацию по использованию современного антивируса и его регулярному обновлению. Такое впечатление, что последние истории с WannaCry и Petya/Nyetya произошли в каком-то своем мире, отличном от того, в котором живут те, кто до сих пор считает, что антивирус — это все, что нужно для борьбы с вредоносным ПО. Даже хороший антивирус. Даже с эвристическими механизмами. Даже если они включены и при этом не тормозит ПК. Даже если эти механизмы еще и работают, а не просто являются маркетинговой заманухой. Пора уже для себя сформулировать простой вывод — борьба с современным вредоносным ПО требует целостной стратегии и сбалансированного применения различных технологий, направленных на обнаружение и предотвращение использования вредоносным кодом различных способов проникновения и заражения. И чтобы не ограничиваться банальными фразами, давайте попробуем сформулировать, что должна включать целостная стратегия борьбы с вредоносным ПО.

Индустрия разработки ВПО


Но прежде, чем я начну из отдельных технологических кирпичиков строить защитную стену, давайте вспомним, что из себя представляет современное вредоносное ПО. Это очень важно, так как позволить не вестись на маркетинговые заявления производителей про 100%-е обнаружение неизвестных вирусов, а осознавать, что могут, а что нет современные вредоносы и, соответственно, как им противостоять.

Да, есть старые вирусы, которые хорошо детектируются стандартными и широко распространенными на рынке антивирусами. Их, наверное, около 80% в общем числе плохих программ. Их часто можно увидеть в различных роликах на корпоративных каналах YouTube или именно их хеши часто фигурируют в различных презентациях и материалах. Потом, введя такие хеши на VirusTotal, можно удостовериться, что продукт такой-то ловит эту заразу и значит он вполне достоит того, чтобы за него заплатить. Или не стоит?

А давайте попробуем посмотреть на это с точки зрения создателя… создателя вредоносного кода. Он, а точнее целая группа квалифицированных программистов и архитекторов, стоящих за всеми современными “НеПетями”, в качестве исходных данных имеют следующую картину:
  • они знают, что вредоносное ПО будут искать с помощью различных средств защиты информации
  • они знают, что для анализа неизвестного вредоносного кода может использоваться песочница
  • они знают, что 99% компаний-жертв используют широко распространенное покупное ПО для защиты.


Какие выводы можно сделать из этих трех очевидных тезисов, которые знает любой безопасник, почему-то не применяющий их для того, что встать на сторону Зла и не подумать “как хакер”, который будет пытаться обойти все традиционные системы защиты? Я сходу сделал бы выводы следующие:
  • Вредоносный код должен быть уникальным и не должен повторяться
  • Вредоносный код должен использовать несколько векторов распространения
  • Вредоносный код должен быть модульным
  • Вредоносный код должен обходить методы его детектирования и анализа.


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



Типовым подходом для защиты от вредоносного ПО, которое часто по старинке все еще зовут вирусами, что и создает чувство несерьезности проблемы, является применение пары антивирус и межсетевой экран. Однако, как мы увидели выше, современный вредоносный код гораздо сложнее. Каналов заражения можно выделить несколько — e-mail, Web, Wi-Fi, флешки, обновление ПО, лэптопы подрядчиков, личные мобильные устройства руководства и др. При этом создаваемый вредонос может использовать как уже известные старые уязвимости, так и еще неизвестные дыры (0-Day). При этом в основу вредоносного кода могут быть положены как фрагменты уже кем-то использованных вирусов, так и с нуля написанный код, в том числе и с применением различных техник обхода средств защиты на разных уровнях.

image

Чем плох антивирус с МСЭ?


У вас может быть даже два или три разных антивируса (как это, например, рекомендуется или требуется в нормативных документах Банка России), но это не сильно помогает. Даже если они и используют разные антивирусные движки (а могут и нет :-), то все равно они базируются на уже много лет назад давшем сбой методе — сравнения с сигнатурами атак, то есть обнаружении чего-то известного. Хотя по статистике многих ИБ-игроков сегодня преимущественно встречаются неизвестные ранее вредоносные программы, уникальные для большинства заказчиков. Это значит, что большинство антивирусных продуктов неспособны бороться с тем, что они не видят и не знают.

Недавно коллега прислал мне файл с просьбой проверить его в нашей песочнице Cisco Threat Grid. У него было подозрение относительно этого файла, а имеющийся у него антивирус никак не реагировал на файл. Через несколько минут после начала анализа Cisco Threat Grid выдал вердикт — троянец ZBot. Но ведь это достаточно известный и старый вредонос. Почему же антивирус его не ловил? Ключевое слово — “старый”. Оказывается, для уменьшения объема базы сигнатур, которая “заливалась” на каждый персональный компьютер, антивирусный вендор решил старые сигнатуры отключить. И его можно понять. Число сигнатур постоянно растет и измеряется уже сотнями миллионов и даже миллиардами — никакого жесткого диска не хватит, чтобы хранить весь этот объем информации. Приходится делать выбор и он может привоить к плачевным последствиям.

Да вы и сами наверное помните историю с WannaCry, когда многие антивирусные вендоры, кичающиеся победой в тестах “100%-е обнаружение неизвестных вирусов”, на следующие дни (и не все в тот же вечер пятницы) после начала эпидемии стали рассылать рекомендации о том, что надо сделать, чтобы побороть эту заразу. Помните? Странная ситуация получается. Информация об используемой WannaCry уязвимости известна уже месяц, но вредоносный код ее еще не использовал, и поэтому в антивирусных базах никаких сигнатур просто нет. Поэтому большинство традиционных средств борьбы с вредоносным кодом работают пост-фактум, борясь с чем-то известным. Когда речь шла о массовых эпидемиях, ётот подход работал, но в условиях преимущественно уникальных вредоносов он стал давать сбой.

Хорошо, а МСЭ разве не помогает нам отсекать соединения с C&C-серверами? В теории да. На практике же мы сталкиваемся с двумя сложностями. Во-первых, по статистике Cisco около 92% вредоносных программ используют DNS-протокол, который мало кто из обычных межсетевых экранов умеет фильтровать (тут нужны уже NGFW с инспекцией DNS, например, Cisco Firepower NGFW). А во-вторых, для того, чтобы блокировать взаимодействие с C&C-узлами, необходимо знать адреса этих узлов, а они меняются постоянно и соответственно МСЭ также оперативно должен обновлять свои правила, что на практике не происходит.

А если добавить защитные Web и E-mail шлюзы?


Что надо сделать, чтобы повысить защищенность компании от вредоносных программ? Помимо регулярной установки патчей, резервного копирования и ограничения использования прав локальных администраторов пользователями, давайте вспомним про возможные вектора заражения. По статистике львиная доля всех заражений осуществляется через два основных канала — Web и e-mail. Значит и на защиту этих каналов должны встать соответствующие решения по защите, которые будут фильтровать трафик на предмет вредоносных вложений. У Cisco это E-mail Security Appliance и Web Security Appliance.

image

Но перекрытие двух основных каналов попадания вредоносного кода внуть организации не снимает проблемы антивирусов, которые ловят только известное. Есть ли технология, позволяющая анализировать файлы, не взирая на наличие или отсутствие по ним цифровых отпечатков (сигнатур)? Да, называется она песочница (sandbox) и позволяет она проводить статический и динамический анализ файла на предмет выполнения им каких-либо несанкционированных действий — доступ к реестру, копирование файлов, взаимодействие с C&C-серверами, инкапсуляцию в разрешенный трафик и т.п. Та же песочница Cisco Threat Grid может анализировать свыше 700 различных параметров и факторов поведения файлов с целью определения их вредоносности. Именно с песочницей связываются средства защиты, которые обладают встроенными антивирусными движками, но не могут обнаруживать неизвестные вирусы. Интеграция с песочницей дает такую возможность. В случае с архитектурой безопасности Cisco с песочницей Threat Grid связаны все решения по безопасности — Cisco E-mail Security Appliance, Web Security Appliance, Cisco Firepower NGFW/NGIPS, Cisco ASA with FirePOWER Services, Cisco AMP for Endpoints, Cisco Umbrella и др.

Как защитить мобильных пользователей?


Допустим периметр сети мы защитили, но что делать с мобильными пользователями? Вокруг них мы не можем возвести защитные стены из МСЭ, IPS, контентных шлюзов и песочниц. MDM-решения не сильно помогают нам бороться с вредоносным кодом, так как у них иное предназначение. Мобильный антивирус? У него та же проблема, что и ранее описанная. Да и не для всех мобильных платформ есть средства защиты от вредоносов (например, для iPhone). Как тогда бороться? Опять надо встать на сторону злоумышленника и посмотреть, как он создет свои творения. Как правило, они не работают автономно, а используют клиент-серверную архитектуру, подразумевающую коммуникации с сервером управления и чаще всего для этого используется протокол DNS. Если мы сможем его инспектировать, то мы решим большую часть проблем с вредоносным кодом на мобильных платформах. В этом случае мы просто заменяем адреса DNS-серверов от Google или Яндекс на адреса специализированного сервиса (например, Cisco Umbrella) и помимо DNS-сервиса получаем еще и полноценную защиту от взаимодействия с C&C-серверами. На самом деле Cisco Umbrella позволяет нам также отсекать фишинговые ресурсы, DGA-домены, используемые для распространения вредоносов, отслеживать сайты-клоны, домены kill switch и т.п.

image

Давайте посмотрим в сторону NTA и EDR


Вернемся опять к истории с WannaCry. Генеральный директор одной из крупных промышленных компаний в пятницу вечером подхватил WannaCry на свой домашний компьютер. Не долго думая, в субботу утром он привез зараженный лэптоп на работу, подключил его к корпоративной сети, попутно вызвав своих айтишников “разобраться”. Пока те ехали на работу, WannaCry стал распространяться по внутренней сети, не взирая на достаточно неплохую защиту периметра. А ведь есть еще подброшенные с неизвестным вирусом флешки, взлом Wi-Fi, ноутбуки подрядчиков и т.п. Что делать в этой ситуации? Ответ один — мониторить внутреннюю инфраструктуру с помощью технологий NTA и EDR. Это аббревиатуры, означающие два класса средств защиты, — анализ сетевого трафика (Network Traffic Analysis) и обнаружение и реагирование на оконечных устройствах (Endpoint Detection and Response).

Анализ сетевого трафика (например, с помощью Cisco Stealthwatch) позволяет нам идентифицировать проявления работы вредоносного кода даже тогда, когда на оконечных устройствах нет никаких средств защиты, даже устаревших антивирусов. Более того, за счет технологии ETA можно обнаруживать признаки вредоносной активности даже в зашифрованном трафике. В свою очередь антивирусы давно пора поменять на решения класса EDR (например, Cisco AMP for Endpoint), которые построены не по принципу предотвратить все 100% угроз, а быть готовыми к тому, что компрометация узла может все-таки произойти и надо уметь своевременно уметь обнаруживать этот факт и среагировать на него.

Стоящий на периметре межсетевой экран имеет свою аналогию и во внутренней сети — это система контроля сетевого доступа (например, Cisco ISE), которая обеспечивает сегментацию внутренней сети и локализацию распространение вредоносного кода в случае его попадания во внутреннюю сеть тем или иным способом. В идеале решение по анализу сетевого трафика обнаруживая первые попытки распространение вредоносного кода может дать команду на систему контроля сетевого доступа для блокирования зараженного компьютера путем отключения порта коммутатора или внесения узла в карантинную подсеть путем изменения ACL на маршрутизаторе.

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

image

Возвращаемся к замкнутой программной среде и изоляции от внешнего мира


Описанная выше стратегия является оптимальной для защиты от 98% вредоносного кода. Можем ли мы увеличить это значение, приблизившись к заветной сотне? На самом деле можно, но только надо понимать, что в этом случае мы вынуждены будем существенно ухудшить эксплуатационные характеристики своей сети и снизить удобство работы для пользователей. Достигается это за счет отказа от парадигмы черных списков и переход к правилу “разрешено только то, что известно”. Разрешенные приложения, IP-адреса, пользователи и т.п. Как мы понимаем, такой подход имеет существенные ограничения в реальной жизни, но зато он позволяет существенно ограничить работу вредоносного кода. Дополнительный уровень защиты достигается за счет технологий изоляции, виртуализации, удаленных браузеров, TPM, контроля целостности ОС, удаленной верификации, электронной подписи e-mail.

image

В качестве резюме


Я описал несколько стратегий защиты от вредоносного кода — от минималисткой до максимальной. Значит ли этой, что мы можем полностью предотвратить заражение нашей внутренней сети и мобильных пользователей? Увы. 100%-й защиты гарантировать не может никто и ничто. Но задача этой заметки была в другом — показать, что до сих пор еще существующая точка зрения, что один только антивирус может спасти от современных вредоносных программ, уже давно “протухла” и проблему решить может только комплексный подход и отталкиваться в нем нужно от use case, о которых мы уже писали.

Дополнительная информация:


Описание применения Cisco Stealthwatch в сети Cisco
Описание технологии обнаружения вредоносного кода в зашифрованном трафике
Описание подхода к обнаружению криптомайнеров в сети
Построение системы защиты на базе Use Case
Описание стратегии борьбы с программами-шифровальщиками
Описание стратегии борьбы с WannaCry
Описание применения Cisco ISE в сети Cisco

Комментарии (10)


  1. navion
    20.03.2018 15:35

    Честно говоря пугает количество ресурсов, которое тратят на всю эту борьбу меча с щитом вместо чего-то полезно.


    1. alukatsky Автор
      21.03.2018 12:46

      А что есть полезного?


  1. teecat
    20.03.2018 16:49
    +1

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

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

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

    Цифра на самом деле похуже даже, но обнаружение идет не старых вирусов, а вирусов, создаваемых ламерами, вирусов, создаваемых на основе часто используемых исходников. Отличный пример — ВаннаКрай, который ловили сразу на основании эвристики/облака

    Вредоносный код должен быть уникальным и не должен повторяться

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

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

    Вредоносный код должен быть модульным

    Это отслеживается со времен полиморфных вирусов

    Типовым подходом для защиты от вредоносного ПО, которое часто по старинке все еще зовут вирусами, что и создает чувство несерьезности проблемы, является применение пары антивирус и межсетевой экран. Однако, как мы увидели выше, современный вредоносный код гораздо сложнее. Каналов заражения можно выделить несколько — e-mail, Web, Wi-Fi, флешки, обновление ПО, лэптопы подрядчиков, личные мобильные устройства руководства и др. При этом создаваемый вредонос может использовать как уже известные старые уязвимости, так и еще неизвестные дыры (0-Day).

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

    У вас может быть даже два или три разных антивируса (как это, например, рекомендуется или требуется в нормативных документах Банка России), но это не сильно помогает.

    Вот тут соглашусь. Сколько бы не было антивирусов, протестированный на них вредоносный файл их пройдет.

    Оказывается, для уменьшения объема базы сигнатур, которая “заливалась” на каждый персональный компьютер, антивирусный вендор решил старые сигнатуры отключить

    Этож кто такой? Если можно — в личку? У нас периодически OneHalf'ы ловятся

    Да вы и сами наверное помните историю с WannaCry, когда многие антивирусные вендоры, кичающиеся победой в тестах “100%-е обнаружение неизвестных вирусов”, на следующие дни (и не все в тот же вечер пятницы) после начала эпидемии стали рассылать рекомендации о том, что надо сделать, чтобы побороть эту заразу

    Далеко не все. Доктор Веб сразу ловил эвристиком. Касперский по слухам облаком

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

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

    Но перекрытие двух основных каналов попадания вредоносного кода внуть организации не снимает проблемы антивирусов, которые ловят только известное. Есть ли технология, позволяющая анализировать файлы, не взирая на наличие или отсутствие по ним цифровых отпечатков (сигнатур)? Да, называется она песочница (sandbox)

    Свежий пример обхода www.securitylab.ru/news/492188.php — просто прелесть обхода песочниц и заражения только целевой группы

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

    Если не могут обнаружить антивирусными базами — следят превентивкой и репутационным контролем

    Вернемся опять к истории с WannaCry. Генеральный директор одной из крупных промышленных компаний в пятницу вечером подхватил WannaCry на свой домашний компьютер. Не долго думая, в субботу утром он привез зараженный лэптоп на работу, подключил его к корпоративной сети, попутно вызвав своих айтишников “разобраться”. Пока те ехали на работу, WannaCry стал распространяться по внутренней сети, не взирая на достаточно неплохую защиту периметра. А ведь есть еще подброшенные с неизвестным вирусом флешки, взлом Wi-Fi, ноутбуки подрядчиков и т.п. Что делать в этой ситуации? Ответ один — мониторить внутреннюю инфраструктуру с помощью технологий NTA и EDR.

    Поставить для начала всем антивирус, ограничить права на запуск всякого ПО, разграничить сеть по подсетям, внедрить бекап и тд

    И я не против продвинутых технологий, но рекомендовать только их вне зависимости от анализа рисков и стоимости защиты — помоему неверно


    1. alukatsky Автор
      21.03.2018 12:56

      1. Да, небольшие организации не могут позволить себе такой паноптикум — либо на open source строить и иметь хорошие скиллы у админов.
      2. Вот что-то по нашим заказчикам WannaCry мало кто прибивал из антивирусников в первые часы заражения. Только после обновления сигнатур.
      3. «Вирус» может быть безтелесным и антивирус тут начинает сбоить.
      4. Название антивируса не назову, но это один из лидеров рынка.
      5. «Эвристиком» ловили при его включении. А многие отключают, так как эвристика тормозит комп.
      Резюме: и я не против продвинутых технологий. Заметка продолжает тему use case, начатую раньше. Поэтому понятно, что мы должны начать с моделирования угроз и нарушителя. И уже от этого отталкиваться.


      1. teecat
        21.03.2018 13:21

        «Вирус» может быть безтелесным и антивирус тут начинает сбоить.

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

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

        То есть не сам продукт для защиты плох (он майнера знает), а квалификация пользователя продукта не позволяет обеспечить нужное качество защиты

        «Эвристиком» ловили при его включении. А многие отключают, так как эвристика тормозит комп.

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

        Типично скажем для банков — антивирусы стоят у всех, о возможности проникновения неизвестного ПО не думает практически никто и при этом все хотят внедрять продвинутые меры защиты

        Насколько я помню статистика Циско постоянно показывает использование Конфикера — а это тоже отсутствие базовых мер защиты


        1. alukatsky Автор
          21.03.2018 23:24

          Ну я же не спорю, что начинать надо с базовых мер. Но многие почему-то хотят сразу продвинутые :-)


  1. Iz0om
    21.03.2018 12:45

    Достигается это за счет отказа от парадигмы черных списков и переход к правилу “разрешено только то, что известно”.

    Вот с этого и нужно начинать — надежнее и дешевле вышеописанных свистоплясок.
    Рецепт по-дешевле для большинства контор: латаем дыры в ОС, включаем SRP/noexec, настраиваем права как положено, параноим в отношении источника софта, антивирусы используем исключительно для защиты от регуляторов.


    1. alukatsky Автор
      21.03.2018 12:49

      «Разрешено только то, что известно» не работает в обычной жизни, так как нам заранее не известно то, с чем мы будем контактировать.

      И рецепт подешевле тоже часто дает сбой — скорее это работает на сетке из 5-10 компов. В более менее крупной сети это уже не работает. А на личных мобильных устройствах это вообще не работает


      1. teecat
        21.03.2018 13:27

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

        Подавляющее же количество заражений — пропуск в сеть исполняемых файлов в аттачах или ссылках, доступ к серверам с машин пользователей, доступ в иные подсети и тд. То есть неграмотная политика.


        1. alukatsky Автор
          21.03.2018 23:25

          Это исключение из правила. Терминалка — это неудобно. Плюс куча исключение для того же руководства