Содержание статьи
Zed User Interface (ранее Brim), первая версия которого стала доступна комьюнити ИБ в 2018 году, разработан с помощью Electron и React. Внутри же используется движок ZED, а он, в свою очередь, написан на Go и состоит из нескольких элементов:
- Zed data model — общее название для лежащих в основе проекта типов данных и семантики;
- Zed lake — коллекция выборочно индексированных данных Zed;
- Zed language — язык для выполнения запросов, поиска, аналитики;
- Zed shaper — модуль, который приводит входные данные к формату Zed data model;
- Zed formats — семейство последовательных (ZNG), столбцовых (ZST) и человекочитаемых (ZSON) форматов;
- Zed query — скрипт, который выполняет поиск и аналитику;
- Zeek и Suricata — сигнатурные системы (intrusion detection systems).
Главные отличия ZUI от Wireshark — это скорость работы, поддержка сигнатур и анализа логов. Из минусов можно отметить невозможность декодировать пакеты и экспортировать найденные в трафике файлы.
info
Все это можно не считать реальными минусами, потому что любой найденный поток данных в ZUI открывается одним нажатием кнопки в Wireshark, где отображается вся недостающая информация.
Скорость
Изначально ZUI назывался Brim и специализировался исключительно на анализе сетевого трафика и логов. Но из‑за универсальности движка ZED он начал развиваться и в других направлениях, а именно в сторону аналитики данных.
Идея движка ZED, который позволяет ZUI обрабатывать файлы PCAP намного быстрее Wireshark, состоит в том, чтобы избавиться от концепции таблиц из базовой модели данных. Их заменили современной системой типов, при которой каждое значение может иметь свой тип независимо от составной схемы, как это сейчас реализовано в старых моделях. Получается, ZED — и не полуструктурированный, и не табличный. Создатели называют такую концепцию суперструктурированной.
info
Основатель компании Brim, разработчика ZUI, — это не кто иной, как Стив Маккейн, создатель формата PCAP, BPF и соавтор tcpdump.
Для примера можно привести формат из Zed data model под названием ZSON. Это привычный нам JSON с собственными типами значений.
Этих знаний нам хватит, чтобы использовать ZUI в его самом интересном для нас варианте применения — анализе трафика.
Установка
Linux
Для установки ZUI в Linux используй следующие команды:
wget "https://github.com/brimdata/brim/releases/download/v0.31.0/Brim-0.31.0.deb"sudo chmod +x ./Brim-0.31.0.deb; apt install ./Brim-0.31.0.deb
Обязательно поменяй версию приложения в команде, чтобы пользоваться самым новым релизом.
Windows и macOS
Для них суть та же: достаточно скачать с официального сайта приложения установщик и запустить его.
Интерфейс
Сначала полюбуемся минималистичным UI и увидим, насколько он хорошо организован. На вход программы можно подавать JSON, CSV, ZSON, ZNG и файлы других форматов, но нам интереснее всего скормить ZUI файл PCAP или структурированный лог, например Zeek log.
Как только ты откроешь файл PCAP в ZUI, он тут же пройдется по нему движками Zeek и Suricata, после чего отобразит все находки, а также подтянет ссылки на найденные хеши с VirusTotal. Ну что сказать, круто!
Pool — это место, где хранится преобразованный PCAP. Ты можешь загружать сразу несколько файлов в один pool, и все данные из них будут доступны в одной строке поиска. На таймлайне можно выбрать диапазон времени, который сейчас требуется изучить. В деталях можно посмотреть самую ценную информацию, этакие поля корреляции.
Мне показалась особенно интересной фича с небольшой диаграммкой взаимодействия двух хостов. Она отображается, если открыть лог с зеленым тегом conn. Также весьма полезна кнопка открытия потока данных в Wireshark, но о ней уже было сказано выше.
Применяем ZUI на практике и пишем запросы
Начать стоит с того, что писать запросы с помощью ZQL query совсем не трудно. Достаточно просто найти в логах нужные поля и отфильтровать по ним логи. Строка запроса будет обрастать новыми и новыми условиями поиска. Лично я постоянно забываю, как находить ту или иную информацию с помощью фильтров Wireshark.
Я подготовил для тебя примеры запросов поиска, которые покроют основные юзкейсы при работе с ZUI.
Количество каждой категории тегов:
count() by _path | sort -r
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»