ZEEK (BRO) Saldırı Tespit Sistemi Kurulum ve Kullanım Dokümanı

kadergultekin
4 min readJun 19, 2022

--

1- Kurulum adımları Ubuntu 20.04 Desktop üzerinde gerçekleştirilmiştir.

  • Sistem güncellemesi yapılır.

$ apt update & apt upgrade -y

  • Varsayılan olarak; Zeek, Ubuntu deposuna dahil değildir, bu nedenle önce Zeek deposu sisteme eklenir.

$ apt-get install curl gnupg2 wget -y

  • Zeek GPG anahtarı indirilir ve sisteme eklenir.

$ curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_20.04/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/security_zeek.gpg

  • Zeek deposu APT’ye eklenir.

$ echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04/ /' | tee /etc/apt/sources.list.d/security:zeek.list

  • Son olarak, depo önbelleği güncellenir ve Zeek yüklenir.

$ apt-get update

$ apt-get install zeek -y

Kurulum sırasında, Şekil 1 ve Şekil 2'de gösterildiği gibi bazı ayarların yapılması istenecektir.

Şekil 1
Şekil 2
  • Zeek kurulduktan sonra, sistem yoluna Zeek’in eklenmesi gerekecektir.

$ echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc

  • ~/.bashrc etkinleştirilir.

$ source ~/.bashrc

  • Zeek sürümü aşağıdaki komutla doğrulanabilir.

$ zeek --version

Şekil 3
  • Ardından, izlenmek istenen ağı tanımlamak için /opt/zeek/etc/networks.cfg dosyası düzenlenir. Dosya varsayılan olarak aşağıdaki gibi gelir.
Şekil 4
  • Varsayılan olarak, Zeek standalone modda çalışacak şekilde yapılandırılmıştır. Standalone bir yapılandırma için node.cfg dosyasında yalnızca bir Zeek düğümü tanımlanmalıdır. Cluster yapılandırması için bir manager düğümü, bir proxy düğümü ve bir veya daha fazla worker düğümü olmalıdır. Zeek cluster modda çalışacak şekilde yapılandırılır.

$ nano /opt/zeek/etc/node.cfg

node.cfg

Aşağıdaki satırlar yorum satırı yapılır:

#[zeek]

#type=standalone

#host=localhost

#interface=eth0

Aşağıdaki satırlar dosyanın sonuna eklenir:

[zeek-logger]

type=logger

host=your-server-ip

# [zeek-manager]

type=manager

host=your-server-ip

# [zeek-proxy]

type=proxy

host=your-server-ip

# [zeek-worker]

type=worker

host=your-server-ip

interface=your-interface

# [zeek-worker-lo]

type=worker

host=localhost

interface=lo

  • Daha sonra aşağıdaki komutla yapılandırma dosyasında herhangi bir hata olup olmadığı kontrol edilir.

$ zeekctl check

Her şey yolundaysa, aşağıdaki çıktı alınır.

Şekil 5
  • Aşağıdaki komutla Zeek yapılandırması deploy edilir.

$ zeekctl deploy

Şekil 6
  • Zeek’in durumu doğrulanır.

$ zeekctl status

Şekil 7
  • Oluşturulan tüm log dosyaları aşağıdaki komutla kontrol edilebilir.

$ ls -l /opt/zeek/logs/current/

Şekil 8

2- ZEEK kullanım örnekleri aşağıda listelenmiştir.

  • LAB 1 — Canlı Trafiği İzleme

$ zeek -i ens33

Şekil 9
  • LAB 2 — Özel imza ile canlı trafiği izleme

İmza Oluşturma

Öncelikle bir dosyada zeek imza yapısı kullanılarak özel bir imza oluşturulur. Örneğin:

signature my-first-sig {
ip-proto == tcp
dst-port == 22
event “Found SSH Request!”
}

Şekil 10

Dinlenecek ağ arayüzü ve imzanın dosya yolu belirtilerek canlı trafik izlenmeye başlanır.

$ zeek -i ens3 -s /home/ubuntu/zeek/deneme.sig

!!! Loglardaki timestamp epoch time formatındadır.

  • LAB 3 — Packet Capture (pcap) dosyalarını okuma

Halihazırda yakalanmış pcap dosyalarının çevrimdışı analizi yapılmak istendiğinde aşağıdaki komut çalıştırılır.

# Öncelikle tcpdump kullanılarak paketler yakalanır.

# "-s 0" argümanı bütün paketlerin yakalanmasını söyler; bunun istenmediği durumlarda "-s 65535" parametresi kullanılır.

$ tcpdump -i ens3 -s 0 -w zeek.trace

$ zeek -r zeek.trace

# Pcap analizi özel imza dosyası belirtilerek de yapılabilir.

$ zeek -r zeek.trace -s /home/ubuntu/zeek/deneme.sig

  • LAB 4 — Nmap taramalarının yakalanması

$ tcpdump -i ens3 -s 0 -w nmap.trace

# TCP SYN scans

$ nmap -sS 10.0.0.2

# TCP connect scans

nmap –sT 10.0.0.2

# TCP NULL scans

$ nmap –sN 10.0.0.2

# TCP XMAS scans

$ nmap –sX 10.0.0.2

$ zeek -C -r nmap.trace

$ zeek-cut id.orig_h < conn.log | sort | uniq -c | sort -rn | head -n 10

$ zeek-cut id.resp_p < conn.log | sort | uniq -c | sort -rn | head -n 10

  • LAB 5 — FTP Brute-force saldırısının tespit edilmesi

$ tcpdump -i ens3 -s 0 -w bruteforce.trace

# FTP Brute-force: $ nmap — script ftp-brute -p21 10.10.154.20 --script-args userdb=users.txt,passdb=passwords.txt

$ zeek -C -r bruteforce.trace /opt/zeek/share/zeek/policy/protocols/ftp/detect-bruteforcing.zeek

$ cat /var/mail/root

  • LAB 6 — Bütün uyarılar için alarm oluşturma (alert-all-notices.zeek)

$ cd /opt/zeek/share/zeek/site

$ nano local.zeek

@load alert-all-notices

Şekil 11

$ touch /opt/zeek/share/zeek/site/alert-all-notices.zeek

$ nano /opt/zeek/share/zeek/site/alert-all-notices.zeek

alert-all-notices.zeek

  1. Zeek’in dikkate değer gördüğü tüm bildirimleri e-posta göndermenin yanı sıra notice.log dosyasına kaydederek uyarı oluşturması amacıyla aşağıdaki script oluşturulur.

hook Notice::policy(n: Notice::Info)
{
add n$actions[Notice::ACTION_LOG];
add n$actions[Notice::ACTION_EMAIL];
}

Şekil 12
Şekil 13 — (https://docs.zeek.org/en/current/frameworks/notice.html)

$ /opt/zeek/bin/zeekctl

> deploy

> exit

--

--

kadergultekin
kadergultekin

Written by kadergultekin

Karadeniz Teknik Üniversitesi Bilgisayar Mühendisliği mezunuyum. Beraber eğlenip beraber gelişmeyi hedefliyorum.

No responses yet