Детектируем аномалии в сети компании. Работа над полигоном pt.3

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Создаем собственный полигон Blue Team vs Read Team pt.3
Обнаружение вторжений с использованием Snort​

Авторство: defaultuser0​

Источник: xss.is​


ghg.jpg


Продолжаем работать над полигоном и ставить системы защиты. Сегодня мы затронем такую вещь как IDS - Система обнаружения вторжения, а так же применим ее в нашей сети компании (полигон)
Я хочу чтобы вся сеть - 192.168.56.0/24 мониторилась на определенные аномалии, а так же создавала Alerts! при явном использовании сканнеров (таких как nmap). Я покажу только только часть с детектированнием nmap т.к я не хочу расскрывать полную настройку IDS своего полигона из-за предстоящего аудита сети. Это отличный пример и на базе него вы получите все знания для детектирования аномалий в трафике, а так же вывод логов snort'a в нашу SIEM. Давайте поставим цели:
  1. Развернуть IDS - Snort
  2. Настроть на детектирование nmap
  3. Вывести логи в SIEM
1 Часть - ТЫК
2 Часть - ТЫК

Перед началом я хотел бы хотел бы в очередной раз поблагодарить всех кто оставляет реакции под статъями.
Так же отдельно поблагодарить ice80 admin и kosok11 за пожертвования, благодаря им у меня есть желание и мотивация писать о том, что не пишут рядовые бойцы BlueTeam! - Спасибо вам огромное!
Конечный результат после проделанный работы будет выглядить так, как вы видите тут все прекрасно видно кто что куда и когда:
Screenshot 2024-02-10 150659.png



Теория про IDS - Snort
1707585237024.png

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

Snort — это одна из наиболее известных и широко используемых систем обнаружения вторжений с открытым исходным кодом. Snort может функционировать как в качестве IDS, так и в роли IPS (система предотвращения вторжений), обеспечивая возможность не только обнаруживать, но и предотвращать сетевые атаки. Snort анализирует сетевой трафик и осуществляет сравнение с базой данных известных подписей атак и паттернов аномального поведения для идентификации потенциальных угроз. Если обнаруживается совпадение, Snort может выполнить ряд действий, включая запись логов, отправку уведомлений администратору и активное блокирование трафика в режиме IPS.

Snort - может обнаруживать множество различных типов и векторов атак благодаря своим мощным возможностям анализа трафика и гибким правилам обнаружения:
  • Анализ Трафика: Snort анализирует сетевой трафик в реальном времени и сравнивает его с набором правил для обнаружения подозрительной активности.
  • Сигнатурное Обнаружение: Использует сигнатуры атак для обнаружения известных угроз, таких как буферные переполнения, сканирование портов, CGI атаки и многое другое.
  • Протокольное Анализ: Распознаёт различные протоколы и может анализировать трафик, чтобы идентифицировать потенциально вредоносные пакеты.
  • Поведенческий Анализ: Обнаруживает аномалии в сетевом трафике и потенциально вредоносное поведение.
  • Логирование: Записывает события в различные форматы логов для последующего анализа.
  • Детектирование Генерации Флуда: Обнаружение аномалий в трафике, которые могут указывать на DoS/DDoS атаки, целью которых является вывод из строя целевого сервера или сетевой инфраструктуры.
  • Сканирование Портов: Обнаружение попыток сканирования портов, используемых для идентификации открытых портов на целевой машине.
  • Спуфинг IP-адресов: Определение пакетов с поддельными (спуфинговыми) IP-адресами.

Так же специфические атаки и атаки на приложения. Да да такой мощный инструмент этот ваш свин =0
Так же я не могу не упомянуть Suricata, это главный конкурент Snort'a. По сути одно и тоже на уровне VirtualBox vs VMware. Я буду использовать Snort так как просто напросто у меня с ним больше опыта.
Есть два самых распространенных вида установки:
  • Network Intrusion Detection System (NIDS);
  • Host-based Intrusion Detection System (HIDS).
Первая работает на уровне сети, а вторая — только на уровне отдельно взятого хоста. Мы будем покрывать всю сеть NIDS при помощи Snorta
Давайте покроем нашу сетку Снортом!

Установка и Настройка IDS - Snort

Добавляем новую виртуальную машину в нашу сеть, предварительно дав ей Host-Only Network adapter vboxnet0 с включенным режимом промискуитности "Allow VMs". Этот режим разрешает виртуальной машине принимать весь сетевой трафик, проходящий через сетевой адаптер (в моем случаи enp0s8), даже если он не предназначен для этой конкретной ВМ. Это нужно для того чтобы фиксировать весь трафик и анализировать его в дальнейшем в сети нашего полигона.

1707601082789.png

Screenshot 2024-02-10 083839.png


Устанавливаем Linux, ставим все по дефолту (openssh-server для удобства).
Теперь ставим наш Snort командой
Код: Скопировать в буфер обмена
apt update && apt install snort
И тут очень важно, нас попросят указать сетевой адаптер который снорт будет слушать (нам нужен наш адаптер который дает доступ в локалку полигона). Мы можем его посмотреть при помощи команды
Код: Скопировать в буфер обмена
ip a

1707601592816.png

Обязательно убедитесь что ваш адаптер (в моем случаи enp0s8) находится в режиме BROADCAST.
Указываем наш адаптер (в моем случаи enp0s8)

1707601756432.png

В этом поле указываем диапазон адресов нашей локальной сети
192.168.56.0/24

Screenshot 2024-02-10 084928.png

Окей, если все прошло без ошибко значит щас нам нужно указать в конфигурационном файле Snort'а адрес хоста самой тачки Snort'a
Переходим в файл
Код: Скопировать в буфер обмена
vim /etc/snort/snort.conf

1707601931372.png


Тут меняем две вещи
ipvar HOME_NET "айпишник тачки снорта"
ipvar EXTERNAL_NET !$HOME_NET
Так же инклюдим в наш конфиг файл, файл с правилами.
Код: Скопировать в буфер обмена
include /etc/snort/rules/local.rules
И добавляем оутпут в файл snort.alert.fast
Код: Скопировать в буфер обмена
output alert_fast: /var/log/snort/snort.alert.fast

1707602101730.png

Теперь само собой нам нужны правила. Как вы понимаете правило это - сценарий если под его условия подпадает трафик то у Snort'a есть несколько вариантов развитий событий:
  • Alert
  • Log
  • Pass
  • Activate
  • Dynamic
  • Drop
  • Reject
  • Sdrop
Сам пример правила выглядит так:
1707602952698.png

Давайте сделаем тестовое правило и посмотрим как реагирует снорт на самое дефолтное правило = ICMP ping flood.
Открываем тот самый файл который мы заинклюдили в основном конфиге
Код: Скопировать в буфер обмена
vim /etc/snort/rules/local.rules
Добавим туда правило теста ICMP!
Код: Скопировать в буфер обмена
alert icmp any any -> $HOME_NET any (msg:"ICMP test"; itype:8; sid:1000005;)

1707603342350.png

Теперь давайте начнем пинговать какой либо хост и в лайв моде консоли Снорта посмотрим как он реагирует.
Для этого я зайду на сервер на котором хостится SIEM = 192.168.56.109 и начну пинговать Доменн контролер GOAD-DC1 = 192.168.56.10
Чтобы видить все что снорт фиксирует для этого введем в терминал команду (Не забудьте указавть вконце ваш сетевой интерфейс):
Код: Скопировать в буфер обмена
snort -A console -q -c /etc/snort/snort.conf -i enp0s8
Давайте пинганем как мы и планировали, буквально моментально мы видем как снорт определяет пинги на Доменн контроллер с хоста SIEM

1707603828853.png

Прошу вас подметить что тут уже есть все что нам нужно для того чтобы грузить эти данные в SIEM
02/10-22:22:25.240501 [**] [1:1000005:0] ICMP test [**] [Priority: 0] {ICMP} 192.168.56.109 -> 192.168.56.10
Окей Снорт работает и настроен, я поделюсь базовыми правилами для снорта по сканированнию Сети. Так как хакеры часто после попадания в сеть сканируют ее на хосты и так же сканируют порты хостов.
Эти базовые правила нам нужно будет добавить в файл /etc/snort/rules/local.rules

Код: Скопировать в буфер обмена
Код:
alert tcp any any -> $HOME_NET any (msg:"NMAP SYN Scan"; flags:S; flow:stateless; detection_filter:track by_src, count 5, seconds 60; classtype:attempted-recon; sid:1000001; rev:1;)
alert tcp any any -> $HOME_NET any (msg:"NMAP FIN Scan"; flags:F; flow:stateless; detection_filter:track by_src, count 5, seconds 60; classtype:attempted-recon; sid:1000002; rev:1;)
alert tcp any any -> $HOME_NET any (msg:"NMAP XMAS Scan"; flags:FPU; flow:stateless; detection_filter:track by_src, count 5, seconds 60; classtype:attempted-recon; sid:1000003; rev:1;)
alert tcp any any -> $HOME_NET any (msg:"NMAP NULL Scan"; flags:0; flow:stateless; detection_filter:track by_src, count 5, seconds 60; classtype:attempted-recon; sid:1000004; rev:1;)

1707604045470.png

Сохраняем наш файл и теперь бежим все тестить от лица аттакера 0)
Запускаем Снорт в режиме лайв дебага. Подключаемся по ВПНУ в нашу сетку с Кали Линукс и пытаемся просканить один любой хост.
Для примера я Возьму SYN scan и просканю хост где находится SIEM.

1707604274154.png

Как мы видим все прекрасно! Снорт прекрасно нас оповещает о явном сканнировании портов. Теперь давайте эти результаты все загоним в нашу СИЕМ0)
Для этого я буду использовать свой любимый filebeat))
Устанавливаем filebeat agent на хост где находится Snort. ВАЖНО Filebeat агент должен быть такой же версии, какой и у вас весь Elastic STACK!
Код: Скопировать в буфер обмена
apt install filebeat

1707604554497.png
Открываем конфигурационный файл файлбита
Код: Скопировать в буфер обмена
vim /etc/filebeat/filebeat.yml
И тут мы делаем все по классике, комментируем все разделы связанные с elasticsearch, разкоментируем output.logstash и hosts.
Там само собой пишем хост на котором стоит логстеш

1707604731034.png


Самое ВАЖНОЕ! Сделаем так чтобы файлбит брал только логи снорта, а не все логи с линуксовой тачки. Тут просто повторите за мной:

1707604802848.png

Это тот самый output который мы указывали еще при настройке снорта. - /var/log/snort/snort.alert.* (звездачка тут работает как в SQL запросах)
Теперь давайте оценим это все как выглядит в нашей SIEM.
Заходим в Дискавери выбираем Индекс паттерн или Датавью (если у вас ЕЛК 8+) Filebeat

1707605052243.png

Как мы видим, тут все наши попытки только в удобном виде=) Это только базовый набор правил, Снорт умеет много чего, просто я по собственному соображению (т.к. пару пентестеров с этого форума будут проходить мой полигон) просто не могу показывать на все общее обозрение все свои правила и конфигурации -_0 Но надеюсь объяснил я доходчиво и читать это было интересно!

Для тех кто хочет поддержать меня финансово:
BTC: bc1qxzw0u2hl40hxpw0zjz82zzkl5mgjtp9xwkex6f

Кстати весь этот проект я поднимаю в прямом эфире на твиче, подробнее тут:
ТГ: https://t.me/infosecetochto

Всем спасибо! Ждите след части, совсем скоро будет финал =)
 
Сверху Снизу