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

### **Что такое 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 <a href="#kak-ispolzovat-zui" id="kak-ispolzovat-zui"></a>

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

<figure><img src="https://telegra.ph/file/aedd6f163140754014cca.png" alt=""><figcaption><p>Создание фильтрующего правила</p></figcaption></figure>

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

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

```
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
```
