Для ана­лиза сетево­го тра­фика чаще все­го выбира­ют Wireshark. Тут тебе и филь­тры, и хороший интерфейс, и докумен­тация, и под­робней­ший вывод о каж­дом пакете. Но у это­го инс­тру­мен­та есть недос­татки, глав­ный из которых — мед­литель­ность при ана­лизе боль­ших дам­пов. Я рас­ска­жу об опен­сор­сном при­ложе­нии ZUI, которое может стать надеж­ным помощ­ником в ана­лизе тра­фика.

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»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    7 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии