В предыдущем материале мы дали определение классу атак, которые отличаются особой сложностью исполнения и высокой степенью ручной работы со стороны атакующих. Этот пост я хочу посвятить, скажем так, количественной характеристике атак, которые используются для оценки эффективности технологий и средств защиты.
Всем ненормальным выйти из строя!
Для описания методов определения неизвестных атак авторы многих научных работ используют термин «аномалии» и относят к нему все те воздействия на ресурсы системы, которые не являются для нее типовыми.
Если определить (как это сделали авторы статьи “ Unknown Threat Detection With Honeypot Ensemble Analsyis Using Big Datasecurity Architecture “) неизвестные атаки как набор действий на сенсорах предварительно развернутого в инфраструктуре ханипота, то впоследствии данные этих сенсоров можно использовать для вычисления признаков выявленной атаки в реальной инфраструктуре с использованием вероятностной оценки.
Для описания модели неизвестной атаки существует метрика, позволяющая провести количественную оценку неизвестных атак для конкретной инфраструктуры. Данная метрика вводится на основе определения графа атак. Для того чтобы понять, как считать количество неизвестных атак для определенной инфраструктуры, можно взять за основу упрощенную сетевую модель.
В упрощенной модели сети хост 1 предоставляет сервис удаленного управления по протоколу SSH и сервис обмена данными по протоколу HTTP. Хост 2 предоставляет только сервис SSH. Хост 0 — это клиент (user), он расположен за файрволом относительно хостов 1 и 2. Файрвол разрешает соединения к хосту 1 и от хоста 1, а также все исходящие соединения от хоста 2. Как предположили авторы метрики , главная проблема безопасности данной сети — возможность получить несанкционированный доступ с привилегиями root к хосту 2. На основе данного предположения для описанной сетевой модели построен граф атак (верхняя часть рисунка ниже).
На данном рисунке каждая пара вида обозначает исходное условие, а тройка вида — процесс эксплуатации неизвестной уязвимости Vssh в сервисе SSH. Таким образом, данный граф демонстрирует, что к несанкционированному доступу ведут три трассы атаки. При этом атакующему требуется минимум одна 0day-уязвимость для реализации трассы атаки, состоящей исключительно из вершин Vssh (при условии, что все SSH-серверы имеют одну и ту же версию).
Проиллюстрировать, что количество неизвестных атак зависит от наличия тех или иных систем в сети (в том числе и систем защиты), можно, введя в данную сетевую модель файрвол iptables, задача которого заключается в разрешении подключений по протоколу SSH хоста 1 со стороны строго определенных хостов, не включающих хост 0. И теперь посмотрим на граф атак для обновленной модели. Он включает в себя две новые трассы атаки вследствие эксплуатации неизвестной уязвимости в сервисе iptables.
На основе определения 0day-уязвимости и эксплоитов, существующих для каждого сервиса рассмотренной модели, авторы дают определение графа неизвестных атак — это ориентированный граф, состоящий как из известных, так и из неизвестных эксплоитов, с вершинами предварительных условий, соединенных с постусловиями через соответствующие этим постусловиям эксплоиты.
Описанные модели иллюстрируют следующее ключевое требование для системы выявления атак: количество трасс атак, создаваемых компонентами системы обнаружения в защищаемой сети, должно быть минимальным. Система защиты может содержать в своих компонентах уязвимости, которые могут предоставить атакующему доступ к связанным с ней защищаемым ресурсам, и это надо иметь в виду. Кроме того, система определения атак может выявлять их на любой стадии жизненного цикла атаки, в том числе на заключительном этапе (например, при эксфильтрации данных). Поймать атаку на любой части ее трассы, может быть, звучит просто, но на практике злоумышленники не только успешно оказываются внутри корпоративного периметра, обмениваются со своими командными центрами информацией, но и закрепляются там на довольно продолжительное время (иногда атакующий может оставаться незамеченным во внутренней сети годами).
Методы обнаружения атак
В этом году на конференции Black Hat ключевой докладчик, директор по безопасности Facebook Алекс Стамос, сказал важную мысль: индустрия ИБ в настоящее время страдает от «подростковых» проблем, главная из которых — «нигилизм» ИБ-специалистов. Сфокусировавшись на сложных и изощренных техниках взлома и экзотических исследованиях, они перестали замечать все еще актуальные сценарии атак, которые по-прежнему приносят финансовые потери организациям. Злоумышленники будут добиваться цели самым простым для них способом. «Пора взрослеть», — говорит Стамос. А это означает, что пора не только держать руку на пульсе исследований наступательной стороны, но и исследовать новые технологии защиты от угроз.
Методы определения атак разделяются на два больших класса (классификация по схеме принятия решений): выявление злоупотреблений (misuse detection) и выявление аномалий (anomaly detection). Первый класс методов использует всевозможные шаблоны (сигнатуры, политики, индикаторы компрометации и так далее) для определения вредоносной активности.
К примеру, известные сетевые IDS/IPS вроде «олдскульной» Snort или шустрой Suricataопираются на огромную базу сигнатур различных атак.
Можно долго спорить о преимуществе методов того или иного класса, но важно понимать, что эти классы взаимодополняемы. Выявление вредоносной активности во множестве аномалий позволит создать ее сигнатуру для последующего более оперативного детекта этой угрозы.
Методы выявления аномалий представляют для нас интерес, так как покрывают все множества допустимых воздействий на защищаемую систему, что позволяет и выявлять неизвестные ранее атаки. Для алгоритмов этого класса методов существует заметная проблема: ложные срабатывания (false positives) и пропуск инцидентов (false negatives). Применительно ко всем корреляционным методам возможны как реализации в режиме «обучения с учителем», так и в режиме самообучения (адаптивный режим).
Где тут аномалия, Bro?
Для того чтобы познакомиться с инструментами выявления аномалий, рекомендую поставить сетевой фреймворк Bro, на основе которого работает не одна коммерческая IDS.
Для установки Bro на свежую версию Ubuntu достаточно выполнить следующие действия от привилегированного пользователя:
apt-get update && apt-get upgrade
apt-get install cmake make gcc g++ flex bison libpcap-dev libgeoip-dev libssl-dev python-dev zlib1g-dev libmagic-dev swig2.0
wget https://www.bro.org/downloads/bro-2.5.1.tar.gz
cd bro-2.5.1
./configure --prefix=/bro
make
make install
export PATH=/bro/bin:$PATH
Перед использованием Bro необходимо сконфигурировать:
- Для standalone-конфигурации в файле /bro/etc/node.cfg достаточно указать интерфейс, на котором Bro будет слушать (например, eth0):[bro] type=standalone host=localhost interface=eth0
- В файле /bro/etc/networks.cfg указываем сеть или сети, которые нужно будет защищать:192.168.13.0/24 Private IP space
- В /bro/etc/broctl.cfg настраиваются параметры работы с логами.
Запускаем Bro:
- sudo /bro/bin/broctl
- [BroControl] > install
- [BroControl] > start
- Для остановки: broctl stop
- Для перезапуска (после правки скриптов): [BroControl] > stop && check && п.2 && п.3.
- Или же после внесения изменений в скрипты: [BroControl] > deploy.
Практически все методы выявления угроз так или иначе используют шаблоны для выявления признаков вредоносной активности. Сигнатура может быть конкретной и, например, учитывать специфику конкретного экземпляра вредоносного ПО в трафике. К примеру, после всплеска активности WannaCry эксперты начали добавлять в свои IDS/IPS-системы сигнатуры, учитывающие наличие в трафике определенных флагов, которые появляются во время успешной эксплуатации уязвимости в протоколе SMB. Пример сигнатуры:
alert smb $HOME_NET any → any any (msg:"ET EXPLOIT Possible ETERNALBLUE MS17-010 Echo Response"; flow:from_server,established; content:"|00 00 00 31 ff|SMB|2b 00 00 00 00 98 07 c0|"; depth:16; fast_pattern; content:"|4a 6c 4a 6d 49 68 43 6c 42 73 72 00|"; distance:0; flowbits:isset,ETPRO.ETERNALBLUE; metadata: former_category EXPLOIT; classtype:trojan-activity; sid:2024218; rev:1; metadata:attack_target SMB_Server, deployment Internal, signature_severity Critical, created_at 2017_04_17, updated_at 2017_04_17;)
Разумеется, данная особенность в трафике характерна для конкретного эксплоита. «Выводить» такие сигнатуры вряд ли получится до появления первых атак, а значит, вести борьбу с неизвестными атаками на данном уровне детализации не получится. Нужны другие шаблоны, которые позволят выявлять атаки целыми классами.
Как мы уже отметили выше, с атакой можно бороться на любом этапе ее жизненного цикла. Чем более поздняя стадия атаки будет выявлена (например, коммуникация бота с командным центром), тем выше риск компрометации ценных данных. Тем не менее шаблоны аномалий позволяют выявить необычные сценарии поведения. К примеру, увеличение DNS-трафика может стать сигналом, что кто-то прорубил DNS-тоннель. А может и не стать, и тогда аналитик получает «фалсу». Но борьба с «фалсами» — это уже другая история…
В следующем материале мы рассмотрим методы выявления неизвестных атак, сравним их по сложности реализации, по количеству ложных срабатываний, а также выберем наиболее интересные для наших последующих экспериментов. Не переключайся.