Showing posts with label suricata. Show all posts
Showing posts with label suricata. Show all posts

Thursday, 18 May 2023

Анализ трафика с помощью ZUI.

Всем привет.

Сегодня зарепостю вам описание нового инструмента для анализа сетевого трафика от Дмитрия Кожухова (от первого лица). Инструмент под именем ZUI.

Все мы знаем что для анализа сетевого трафика обычно используют Wireshark. У популярного сниффера  множество достоинств, среди которых: настраиваемые фильтры, отличный интерфейс, и подробная документация. Но у Wireshark есть один большой недостаток - медленная работа при анализе больших дампов. 

Поэтому далее рассмотрим легкую альтернативу для анализа трафика, которая называется ZUI и которая лишена этого недостатка.

Что такое ZUI ?

ZUI - Zed User Interface (бывший Brim), написан с помощью Electron и React. Работает на движке ZED, который написан на Go и состоит различных элементов:



Основные отличия ZUI от Wireshark - это скорость работы, поддержка сигнатур и анализ логов. Из недостатков: не умеет декодировать пакеты и экспортировать найденные в трафике файлы. Это на самом деле не большие минусы, потому что каждый найденный поток данных в ZUI можно открыть простым кликом по кнопке в Wireshark, где отображается вся недостающая информация.

Идея движка ZED, который позволяет ZUI работать с файлами PCAP в разы быстрее Wireshark, состоит в том, чтобы избавиться от концепции таблиц из базовой модели данных. Таблицы заменили современной системой типов, при которой все значения могут иметь свой тип независимо от составной схемы. Получается, Zed User Interface - и не полуструктурированный, и не табличный. Разработчики называют данную концепцию суперструктурированной. Кстати разработчик ZUI - это создатель форматов PCAP, BPF и автор tcpdump!

Для примера можно взять формат из Zed data model под названием ZSON. Это привычный для всех JSON с собственными типами значений. Этого будет достаточно, чтобы начать использовать ZUI в анализе трафика.

Установка ZUI на Windows - достаточно скачать с официального сайта файл установки и запустить его.

Интерфейс Zed User Interface

Сначала взглянем на минималистичный интерфейс и заценим его функциональность. Приложение всеядно, ему можно подсунуть файлы JSON, CSV, ZSON, ZNG и т.д., но нас интересует файл PCAP или какой-нибудь структурированный лог, например Zeek log.

После открытия файла PCAP в ZUI, он сразу же будет проверен с помощью движков Zeek и Suricata, а после этого буду отображены все хеши с VirusTotal. Прикольно да?


Friday, 18 March 2022

Пишем правило для Snort.

Всем привет.

Загляняем сегодня к одной из самых популярных систем IDS в инфомире - Snort. Snort используется для сигнатур или правил, которые связывают между собой группу элементов (так называемые параметры правил), истинность которых является обязательным условием срабатывания правила. Основные параметры занимаются распознаванием элементов, которые либо относятся к содержимому (параметры правил содержимого в терминологии Snort), либо нет (параметры правил вне содержимого). Примерами параметров правил вне содержимого могут служить определенные флаги, значения TCP- или IP-заголовков и размер пакета. Например, параметр flow:established,to_client выбирает пакеты, которые входят в сеанс TCP, инициированный сервером, и предназначены для клиента. Еще один пример, dsize:200, выбирает пакеты, содержимое которых равно 200 байт.

Как я писал ранее, IDS Suricata, она же является развитием Snort, и которая является основой в пакете SELKS использует синтаксис правил Snort. Поэтому давайте в качестве примера создадим для Snort простое правило, которое позволяет обнаружить вредонос, который генерирует сетевой трафик, состоящий из HTTP-запроса типа GET. Когда браузеры или другие HTTP-приложения делают запрос, они указывают поле заголовка User-Agent, чтобы связаться с программой, которая используется для этого запроса. Обычно данное поле начинается со слова Mozilla (по историческим причинам) и может выглядеть как Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1). Здесь содержится информация о версии браузера и ОС.

Пусть наш вредонос формирует такой GET-запрос:

GET /index.htm HTTP 1.1

Accept: */*

User-Agent: Wefa7e

Cache-Control: no

Поле User-Agent, которое используется рассмотренным вредоносом, равно Wefa7e. Это характерное значение, и с его помощью можно распознавать вредоносный трафик. Разумеется более надежный вредонос сформирует это поле под любой браузер, но для нашего примера он будет таким простым. Следующая сигнатура нацелена на необычные строки User-Agent, которые использовались запущенным нами вредоносом:

alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"TROJAN Malicious User-Agent"; content:"|0d 0a|User-Agent\: Wefa7e"; classtype:trojan-activity; sid:2000001; rev:1;)

В Snort правила состоят из двух частей: заголовка и параметров. Заголовок содержит действие (обычно alert), протокол, исходный и конечный IP-адреса, а также порты источника и адресата.

В правилах принято использовать переменные, которые позволяют адаптироваться под текущую среду: $HOME_NET и $EXTERNAL_NET определяют внутренний и внешний диапазоны IP-адресов, а $HTTP_PORTS указывает порты, которые следует интерпретировать как HTTP-трафик. В данном случае заголовок $HOME_NET any ->$EXTERNAL_NET $HTTP_PORTS соответствует исходящему трафику, проходящему через HTTP-порты, так как знак -> говорит о том, что правило относится лишь к одному направлению передачи данных.

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


В сочетании с sid служит уникальным идентификатором версии правила Внутри выражения content используется вертикальная черта (|), которая определяет начало и конец записи в шестнадцатеричном формате. Все, что находится между этими символами, интерпретируется в качестве шестнадцатеричных значений. Таким образом, |0d 0a| представляет разрыв между HTTP-заголовками.

Версия на печать

Популярное