Бесплатный Сыр В Докере — Как Поднять Сотни Сетевых Ловушек На Одной Машине



Бесплатный сыр в Докере — как поднять сотни сетевых ловушек на одной машине

Привет, Хабр! Бастион на связи.

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

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

И почему этого недостаточно, чтобы чувствовать себя в безопасности? Мы начали разработку в конце 2018 года, и это только первая из серии статей об этом экспериментальном проекте.

Сначала несколько слов о том, что такое Deception, как появилась эта технология и как мы ее реализовали.

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

Так или иначе, если злоумышленник уже проник в корпоративную сеть, он может очень долго безнаказанно изучать трафик.

Для поиска подобных угроз в 90-х годах прошлого века начали использовать приманки.



Бесплатный сыр в Докере — как поднять сотни сетевых ловушек на одной машине

В своей самой примитивной форме приманка — это отдельный компьютер, которым никто не пользуется.

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

Сам факт обращения к такому сервису служит сигналом об угрозе.

Раньше ловушки устанавливались индивидуально, а теперь они превратились в целые наборы ловушек.

Они стали базовыми компонентами Deception System — системы управления ложными сетевыми объектами.



Бесплатный сыр в Докере — как поднять сотни сетевых ловушек на одной машине

Типичная система Deception состоит из управляющего сервера и подключенных к нему ловушек.

Deception объединяет ловушки и собирает данные о вторжениях в режиме реального времени.

Такие системы предоставляют инструменты для управления и мониторинга ловушек.

Они обнаруживают угрозы, отвлекают и замедляют злоумышленника.

Некоторые Обманы помогают определить вектор атаки и даже автоматически реагировать на инциденты.



Обман на виртуальных машинах VS Docker

Мы не понаслышке знаем об этих продуктах и сталкивались с ними по обе стороны баррикад. На рынке есть несколько готовых Deceptions, но большинство из них были разработаны еще до бума легких контейнеров.

Такие системы обычно используют виртуальные машины для создания ловушек.

Они устанавливают полноценные операционные системы с необходимыми сервисами.

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

Слишком много недостатков.

Виртуальные машины довольно сложны в развертывании и управлении и требуют много ресурсов.

А если вам нужны ловушки на Windows, к списку проблем добавляются лицензионные сборы.

Вместо этого мы решили взять идею перехватчиков виртуальных машин и реализовать их с помощью Docker. Эти решения сложно сравнивать напрямую, они лежат в разных плоскостях, но контейнеры однозначно легче и компактнее.

Только представьте: средний ноутбук может обслуживать около десяти виртуальных машин или сотню контейнеров.

Кроме того, для автоматизации создания виртуальных машин необходимо интегрировать Deception с целым зоопарком гипервизоров.

Реализовать автоматическое создание контейнеров гораздо проще.



Наше решение

Нет ничего сложного в поднятии Docker-контейнера с определенным сервисом.

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

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



Бесплатный сыр в Докере — как поднять сотни сетевых ловушек на одной машине

Сервер Deception стал ключевым компонентом нашей системы Задача оказалась сложнее, чем можно было подумать.

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

Мне приходилось спрашивать экспертов на конференциях, много копать и экспериментировать.

Рабочее решение мы нашли только через пару месяцев.

Но если знать, что и как делать, создание правдоподобной ловушки наедине с консолью займет два-три часа.



Настройка сетей

Linux предоставляет возможность создавать адреса виртуальных сетей.

За это отвечают подинтерфейсы IPVLAN и MACVLAN.

Бесплатный сыр в Докере — как поднять сотни сетевых ловушек на одной машине

Обратите внимание, что слева виртуальные машины унаследовали MAC хоста, а справа получили собственные адреса IPVLAN создает виртуальные IP-адреса с общим MAC-адресом родительского интерфейса, но это не совсем то, что нужно.

Сервисы с одним MAC выглядят очень подозрительно, поэтому для наших целей лучше подойдет MACVLAN. Эта технология позволяет поднимать виртуальные интерфейсы с разными MAC-адресами.

Вот здесь только начинаются тонкости.

При статической адресации достаточно создать новый MAC и присвоить ему IP-адрес.

Но если в сети используется динамическая адресация, вам придется связаться с DHCP-сервером с этого интерфейса, получить адрес, а затем периодически продлевать владение.

Следующий шаг — убедиться, что дочерний интерфейс отвечает на выделенный адрес, а не родительский интерфейс.

Мы столкнулись с тем, что на ARP-запросы на получение MAC-адреса через виртуальный IP отвечали оба или только родительский интерфейс.

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

В дистрибутивах типа RHEL или CentOS все сложнее — приходится заходить в настройки ядра и подстраиваться под другой набор сетевых утилит. Если все сделано правильно, вы получите машину с одним физическим интерфейсом, которая пингует два разных адреса.

Имея такой фундамент, вы уже можете браться за Docker. Контейнеры — это то, что нам нужно для наших целей.

Они позволяют запускать самые разные сервисы: NoSQL и реляционные базы данных, протоколы FTP, SSH, RDP и VPN, службы Windows, Samba и даже банковские протоколы.

Более того, Docker-образы большинства популярных сервисов можно найти в Интернете.

Контейнер с таким сервисом, работающим на виртуальном интерфейсе, уже годится на роль пассивной ловушки.

Остается только настроить сбор и отправку логов.

А правильно подобранный набор сервисов, реагирующих на один адрес, позволяет создать внешний вид полноценного устройства.

Таким образом вы можете эмулировать рабочий стол, почтовый сервер, POS-терминал или банкомат.

Бесплатный сыр в Докере — как поднять сотни сетевых ловушек на одной машине

Физически ловушки расположены на одном сервере, но снаружи выглядят как независимые устройства.

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

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

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



Маскирующие ловушки

Чтобы фейковая инфраструктура не выделялась на фоне реальных сетевых ресурсов, мы создали имитацию обмена трафиком.

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



Бесплатный сыр в Докере — как поднять сотни сетевых ловушек на одной машине

Для эмуляции трафика настраиваем обмен TCP/UDP-пакетами или используем один из протоколов высокого уровня.

Конечно, это создает проблемы.

Ловушки не различают запросы от нашей системы и от злоумышленника.

Они сигнализируют о каждом входящем соединении.

Чтобы избавиться от ложных срабатываний, мы реализовали фильтрацию сигналов.

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



Это не все

Таким образом, у нас есть прочная основа для нашей собственной системы обмана.



Бесплатный сыр в Докере — как поднять сотни сетевых ловушек на одной машине

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

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

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

А если он догадается, то будет поздно.

К сожалению, одних ловушек недостаточно для эффективной защиты.

Полноценная система Deception должна иметь и другие компоненты.

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

Мы подробно расскажем вам об этих элементах систем Deception. в следующем посте .

А пока, если у вас есть вопросы, задавайте их в комментариях.

Теги: #информационная безопасность #Виртуализация #Сетевые технологии #сети #Анализ и проектирование систем #сетевая инфраструктура #защита информации #хакерские атаки #honeypot #сетевая безопасность #обман #целевые атаки #корпоративная безопасность #мониторинг обмана #корпоративная сеть #корпоративная сеть

Вместе с данным постом часто просматривают: