D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Создаем собственный полигон Blue Team vs Read Team pt.3
Обнаружение вторжений с использованием Snort
Обнаружение вторжений с использованием Snort
Авторство: defaultuser0
Источник: xss.is
Продолжаем работать над полигоном и ставить системы защиты. Сегодня мы затронем такую вещь как IDS - Система обнаружения вторжения, а так же применим ее в нашей сети компании (полигон)
Я хочу чтобы вся сеть - 192.168.56.0/24 мониторилась на определенные аномалии, а так же создавала Alerts! при явном использовании сканнеров (таких как nmap). Я покажу только только часть с детектированнием nmap т.к я не хочу расскрывать полную настройку IDS своего полигона из-за предстоящего аудита сети. Это отличный пример и на базе него вы получите все знания для детектирования аномалий в трафике, а так же вывод логов snort'a в нашу SIEM. Давайте поставим цели:
- Развернуть IDS - Snort
- Настроть на детектирование nmap
- Вывести логи в SIEM
2 Часть - ТЫК
Перед началом я хотел бы хотел бы в очередной раз поблагодарить всех кто оставляет реакции под статъями.
Так же отдельно поблагодарить ice80 admin и kosok11 за пожертвования, благодаря им у меня есть желание и мотивация писать о том, что не пишут рядовые бойцы BlueTeam! - Спасибо вам огромное!
Конечный результат после проделанный работы будет выглядить так, как вы видите тут все прекрасно видно кто что куда и когда:
Теория про IDS - Snort
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).
Давайте покроем нашу сетку Снортом!
Установка и Настройка IDS - Snort
Добавляем новую виртуальную машину в нашу сеть, предварительно дав ей Host-Only Network adapter vboxnet0 с включенным режимом промискуитности "Allow VMs". Этот режим разрешает виртуальной машине принимать весь сетевой трафик, проходящий через сетевой адаптер (в моем случаи enp0s8), даже если он не предназначен для этой конкретной ВМ. Это нужно для того чтобы фиксировать весь трафик и анализировать его в дальнейшем в сети нашего полигона.
Устанавливаем Linux, ставим все по дефолту (openssh-server для удобства).
Теперь ставим наш Snort командой
Код: Скопировать в буфер обмена
apt update && apt install snort
И тут очень важно, нас попросят указать сетевой адаптер который снорт будет слушать (нам нужен наш адаптер который дает доступ в локалку полигона). Мы можем его посмотреть при помощи команды
Код: Скопировать в буфер обмена
ip a
Обязательно убедитесь что ваш адаптер (в моем случаи enp0s8) находится в режиме BROADCAST.
Указываем наш адаптер (в моем случаи enp0s8)
В этом поле указываем диапазон адресов нашей локальной сети
192.168.56.0/24
Окей, если все прошло без ошибко значит щас нам нужно указать в конфигурационном файле Snort'а адрес хоста самой тачки Snort'a
Переходим в файл
Код: Скопировать в буфер обмена
vim /etc/snort/snort.conf
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
Теперь само собой нам нужны правила. Как вы понимаете правило это - сценарий если под его условия подпадает трафик то у Snort'a есть несколько вариантов развитий событий:
- Alert
- Log
- Pass
- Activate
- Dynamic
- Drop
- Reject
- Sdrop
Давайте сделаем тестовое правило и посмотрим как реагирует снорт на самое дефолтное правило = ICMP ping flood.
Открываем тот самый файл который мы заинклюдили в основном конфиге
Код: Скопировать в буфер обмена
vim /etc/snort/rules/local.rules
Добавим туда правило теста ICMP!
Код: Скопировать в буфер обмена
alert icmp any any -> $HOME_NET any (msg:"ICMP test"; itype:8; sid:1000005;)
Теперь давайте начнем пинговать какой либо хост и в лайв моде консоли Снорта посмотрим как он реагирует.
Для этого я зайду на сервер на котором хостится SIEM = 192.168.56.109 и начну пинговать Доменн контролер GOAD-DC1 = 192.168.56.10
Чтобы видить все что снорт фиксирует для этого введем в терминал команду (Не забудьте указавть вконце ваш сетевой интерфейс):
Код: Скопировать в буфер обмена
snort -A console -q -c /etc/snort/snort.conf -i enp0s8
Давайте пинганем как мы и планировали, буквально моментально мы видем как снорт определяет пинги на Доменн контроллер с хоста SIEM
Прошу вас подметить что тут уже есть все что нам нужно для того чтобы грузить эти данные в 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;)
Сохраняем наш файл и теперь бежим все тестить от лица аттакера 0)
Запускаем Снорт в режиме лайв дебага. Подключаемся по ВПНУ в нашу сетку с Кали Линукс и пытаемся просканить один любой хост.
Для примера я Возьму SYN scan и просканю хост где находится SIEM.
Как мы видим все прекрасно! Снорт прекрасно нас оповещает о явном сканнировании портов. Теперь давайте эти результаты все загоним в нашу СИЕМ0)
Для этого я буду использовать свой любимый filebeat))
Устанавливаем filebeat agent на хост где находится Snort. ВАЖНО Filebeat агент должен быть такой же версии, какой и у вас весь Elastic STACK!
Код: Скопировать в буфер обмена
apt install filebeat
Код: Скопировать в буфер обмена
vim /etc/filebeat/filebeat.yml
И тут мы делаем все по классике, комментируем все разделы связанные с elasticsearch, разкоментируем output.logstash и hosts.
Там само собой пишем хост на котором стоит логстеш
Это тот самый output который мы указывали еще при настройке снорта. - /var/log/snort/snort.alert.* (звездачка тут работает как в SQL запросах)
Теперь давайте оценим это все как выглядит в нашей SIEM.
Заходим в Дискавери выбираем Индекс паттерн или Датавью (если у вас ЕЛК 8+) Filebeat
Как мы видим, тут все наши попытки только в удобном виде=) Это только базовый набор правил, Снорт умеет много чего, просто я по собственному соображению (т.к. пару пентестеров с этого форума будут проходить мой полигон) просто не могу показывать на все общее обозрение все свои правила и конфигурации -_0 Но надеюсь объяснил я доходчиво и читать это было интересно!
Для тех кто хочет поддержать меня финансово:
BTC: bc1qxzw0u2hl40hxpw0zjz82zzkl5mgjtp9xwkex6f
Кстати весь этот проект я поднимаю в прямом эфире на твиче, подробнее тут:
ТГ: https://t.me/infosecetochto
Всем спасибо! Ждите след части, совсем скоро будет финал =)