От заплаток в борьбе с вредоносным ПО к целостной стратегии

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

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

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

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

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

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








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



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

Недавно коллега прислал мне файл с просьбой проверить его в нашей песочнице 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 .



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



Давайте посмотрим в сторону 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 ) и оснащать знанием об постоянно меняющихся угрозах все средства защиты — периметровые, облачные, персональные или внутренние.



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



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

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