Анализируем трафик с ZUI (Zed User Interface)

В этой статье расскажем о сканере ZUI и как с его помощью можно анализировать трафик.

Что такое ZUI

Работает на движе ZED, который написан на Go и сос­тоит различных эле­мен­тов. Чаще его сравнивают с Wireshark. И тут есть несколько принципиальных позитивных отличий: ско­рость работы, под­дер­жка сиг­натур и ана­лиз логов.

Но есть и недостатки: не умеет декоди­ровать пакеты и экспор­тировать най­ден­ные в тра­фике фай­лы.

Установка 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

Важно: не забудьте изменить вер­сию в коман­де, что­бы установить самый последний релиз.

Установка ZUI на Windows и macOS

Тут дос­таточ­но ска­чать с офи­циаль­ного страницы файл установки.

Как использовать ZUI

Нужно найти в логах необходимые поля и отфиль­тро­вать по ним логи. После стро­ка зап­роса будет обрастать новыми и новыми усло­виями поис­ка.

Примеры зап­росов поис­ка

Ко­личес­тво каж­дой катего­рии тегов:

count() by _path | sort -r

Все уни­каль­ные DNS queries:

_path=="dns" | count() by query | sort -r

SMB- и RPC-тра­фик в сис­темах Windows:

_path matches smb* OR _path=="dce_rpc"

HTTP-зап­росы и филь­тра­ция полез­ных колонок:

_path=="http" | cut id.orig_h, id.resp_h, id.resp_p, method, host, uri | uniq -c

Уни­каль­ные кон­некты и их количес­тво:

_path=="conn" | cut id.orig_h, id.resp_p, id.resp_h | sort | uniq

Ко­личес­тво передан­ных бай­тов на один кон­нект:

_path=="conn" | put total_bytes := orig_bytes + resp_bytes | sort -r total_bytes | cut uid, id, orig_bytes, resp_bytes, total_bytes

По­иск переда­ваемых фай­лов:

filename!=null | cut _path, tx_hosts, rx_hosts, conn_uids, mime_type, filename, md5, sha1

Все зап­росы HTTP Post:

method=="POST" | cut ts, uid, id, method, uri, status_code

Все IP-под­сети:

_path=="conn" | put classnet := network_of(id.resp_h) | cut classnet | count() by classnet | sort -r

Де­монс­тра­ция всех сра­баты­ваний сиг­натур Suricata и их количес­тво:

event_type=="alert" | count() by alert.severity,alert.category | sort count

Де­монс­тра­ция всех сра­баты­ваний сиг­натур Suricata, отфиль­тро­ван­ных по Source IP и Destination IP:

event_type=="alert" | alerts := union(alert.category) by src_ip, des

Last updated