Belajar dengan berlatih: Memvisualisasikan data Zeek (Bro) Anda dengan Splunk

  • Whatsapp
Belajar dengan berlatih: Memvisualisasikan data Zeek (Bro) Anda dengan Splunk
Belajar dengan berlatih Memvisualisasikan data Zeek Bro Anda dengan Splunk

News.nextcloud.asia

Untuk dapat memvisualisasikan data ini, pertama-tama kita perlu memahami strukturnya. Data Zeek (Bro) secara default berada dalam format tab delimited. Untuk memverifikasi ini, mari kita lihat contoh log koneksi – conn.log.

Alat yang akan kita gunakan untuk membantu kita melihat data Zeek (Bro) adalah “bro-cut”. Seperti biasa, Anda harus melihat bantuan alat Anda sebelum menggunakannya.

[email protected]:/opt/bro/logs/current# bro-cut --help

bro-cut [options] [<columns>]

Extracts the given columns from an ASCII Bro log on standard input.
If no columns are given, all are selected. By default, bro-cut does
not include format header blocks into the output.

Example: cat conn.log | bro-cut -d ts id.orig_h id.orig_p

    -c       Include the first format header block into the output.
    -C       Include all format header blocks into the output.
    -d       Convert time values into human-readable format.
    -D <fmt> Like -d, but specify format for time (see strftime(3) for syntax).
    -F <ofs> Sets a different output field separator.
    -n       Print all fields *except* those specified.
    -u       Like -d, but print timestamps in UTC instead of local time.
    -U <fmt> Like -D, but print timestamps in UTC instead of local time.

For time conversion option -d or -u, the format string can be specified by
setting an environment variable BRO_CUT_TIMEFMT.

Untuk seri posting ini kami akan fokus pada “-C”. Hal ini memungkinkan kita kesempatan untuk melihat header bidang. Ini penting karena kita perlu mengetahui penempatan bidang untuk menguraikannya dengan benar di Splunk.

Sekarang seperti yang Anda lihat di atas dalam “Contoh: cat conn.log | bro-cut …”, input Zeek (Bro), biasanya berasal dari output “cat” yang disalurkan. Kami akan melakukannya sedikit cara yang berbeda, kita malah akan menggunakan “conn.log” (dan file log masa depan) dan memberikannya sebagai masukan untuk “bro-cut” menggunakan “<".

Mari kita mulai dengan melihat struktur file “conn.log”.

[email protected]:/opt/bro/logs/current# bro-cut -C < conn.log | head --lines=10 --verbose
....
#fields ts      uid     id.orig_h       id.orig_p       id.resp_h       id.resp_p       proto   service duration        orig_bytes      resp_bytes      conn_state    local_orig      local_resp      missed_bytes    history orig_pkts       orig_ip_bytes   resp_pkts       resp_ip_bytes   tunnel_parents
#types  time    string  addr    port    addr    port    enum    string  interval        count   count   string  bool    bool    count   string  count   countcount    count   set[string]
1541350796.901974       C54zqz17PXuBv3HkLg      192.168.0.26    54855   54.85.115.89    443     tcp     ssl     0.153642        1147    589     SF      T    F0       ShADadfF        7       1439    8       921     (empty)
1541350796.904578       CFsKQb2ZSp2qo1jf7a      192.168.0.26    54856   54.85.115.89    443     tcp     ssl     0.195532        1127    489     SF      T    F0       ShADadfF        7       1419    8       821     (empty)

Seperti yang bisa kita lihat di atas dan di sebelah kanan “#fields”, ada beberapa field yang dimulai dengan “ts”, “uid”, “id.orig_h”, “id.orig_p”, dll. Sekarang kita tahu struktur, mari kembali ke Splunk dan buat (ekstrak) ini.

Filter pencarian kami untuk Splunk sekarang:

index=_* OR index=* sourcetype=Bro-Security-Monitoring source="/opt/bro/logs/current/conn.log" NOT "#fields"
| rex field=_raw "(?<ts>.*?t)(?<uid>.*?t)(?<orig_h>.*?t)(?<orig_p>.*?t)(?<resp_h>.*?t)(?<resp_p>.*?t)(?<proto>.*?t)(?<service>.*?t)(?<duration>.*?t)(?<orig_bytes>.*?t)(?<resp_bytes>.*?t)(?<conn_state>.*?t)(?<local_orig>.*?t)(?<local_resp>.*?t)(?<missed_bytes>.*?t)(?<history>.*?t)(?<orig_pkts>.*?t)(?<orig_ip_bytes>.*?t)(?<resp_pkts>.*?t)(?<resp_ip_bytes>.*?t)" 
|  stats count by ts,uid,orig_h,orig_p,resp_h,resp_p,proto,service,duration,orig_bytes,resp_bytes,conn_state,local_orig,local_resp,missed_bytes,history,orig_pkts,orig_ip_bytes,resp_pkts,resp_ip_bytes

Filter di atas ini mengekstrak semua bidang kecuali “tunnel_parents”. Saya mengalami kesalahan yang dilaporkan oleh Splunk tentang perlunya mengkonfigurasi ulang file “limits.conf” ketika saya menambahkan bidang ini. Saya tidak berminat untuk memecahkan masalah ini karena ini bukan prioritas saat ini.

Berikut adalah contoh tangkapan layar dari semua bidang yang diekstraksi.

Setelah kami mengekstrak semua bidang, maka apa yang kami lakukan dengan masing-masing bidang itu terserah kami. Mari kita kembangkan ini sedikit lebih banyak dengan mencari dulu 100 IP sumber teratas yang dilihat oleh Zeek (Bro)

index=_* OR index=* sourcetype=Bro-Security-Monitoring source="/opt/bro/logs/current/conn.log" NOT "#fields"
| rex field=_raw "(?<ts>.*?t)(?<uid>.*?t)(?<orig_h>.*?t)(?<orig_p>.*?t)(?<resp_h>.*?t)(?<resp_p>.*?t)(?<proto>.*?t)(?<service>.*?t)(?<duration>.*?t)(?<orig_bytes>.*?t)(?<resp_bytes>.*?t)(?<conn_state>.*?t)(?<local_orig>.*?t)(?<local_resp>.*?t)(?<missed_bytes>.*?t)(?<history>.*?t)(?<orig_pkts>.*?t)(?<orig_ip_bytes>.*?t)(?<resp_pkts>.*?t)(?<resp_ip_bytes>.*?t)" 
|  stats count by orig_h 
| sort -count limit=100

Di atas memberi kita kesempatan untuk mengidentifikasi 100 alamat IP teratas.

Namun, sama halnya untuk mengetahui alamat IP teratas di lingkungan Anda, penting juga bagi Anda untuk mengetahui apa yang unik atau langka. Untuk membantu kami dengan ini, mari jalankan filter lain.

index=_* OR index=* sourcetype=Bro-Security-Monitoring source="/opt/bro/logs/current/conn.log" NOT "#fields" NOT src_ip=192.168.0.0/24 NOT src_ip=0.0.0.0
| rex field=_raw "(?<ts>.*?t)(?<uid>.*?t)(?<orig_h>.*?t)(?<orig_p>.*?t)(?<resp_h>.*?t)(?<resp_p>.*?t)(?<proto>.*?t)(?<service>.*?t)(?<duration>.*?t)(?<orig_bytes>.*?t)(?<resp_bytes>.*?t)(?<conn_state>.*?t)(?<local_orig>.*?t)(?<local_resp>.*?t)(?<missed_bytes>.*?t)(?<history>.*?t)(?<orig_pkts>.*?t)(?<orig_ip_bytes>.*?t)(?<resp_pkts>.*?t)(?<resp_ip_bytes>.*?t)" 
|  stats count by orig_h 
| rare limit=25 orig_h

Kali ini kita visualisasikan menggunakan diagram lingkaran.

Seperti yang Anda lihat di ekstraksi pertama, kami menggunakan tampilan tabel. Di bagian kedua kami menggunakan diagram lingkaran. Jangan ragu untuk bereksperimen dengan apa yang paling cocok untuk Anda.

Mari beralih ke pasangan IP sumber dan tujuan teratas bersama dengan port tujuan tempat komunikasi terjadi.

index=_* OR index=* sourcetype=Bro-Security-Monitoring source="/opt/bro/logs/current/conn.log" NOT "#fields" NOT dst_ip=192.168.0.0/24 NOT dst_ip=208.67.222.222 NOT dst_ip=208.67.220.220 NOT dst_ip=224.0.0.0/8 NOT dst_ip=239.0.0.0/8 NOT dst_ip=255.255.255.255 NOT src_ip=0.0.0.0
| rex field=_raw "(?<ts>.*?t)(?<uid>.*?t)(?<orig_h>.*?t)(?<orig_p>.*?t)(?<resp_h>.*?t)(?<resp_p>.*?t)(?<proto>.*?t)(?<service>.*?t)(?<duration>.*?t)(?<orig_bytes>.*?t)(?<resp_bytes>.*?t)(?<conn_state>.*?t)(?<local_orig>.*?t)(?<local_resp>.*?t)(?<missed_bytes>.*?t)(?<history>.*?t)(?<orig_pkts>.*?t)(?<orig_ip_bytes>.*?t)(?<resp_pkts>.*?t)(?<resp_ip_bytes>.*?t)" 
|  stats count by orig_h,resp_h,resp_p 
| dedup orig_h,resp_h,resp_p 
| sort -count

Di atas menghasilkan yang berikut:

Pada titik ini, mari kita selesaikan ini. Karena Anda telah mengekstrak semua bidang di atas, pada dasarnya Anda dapat menggunakan salah satu bidang ini yang ingin Anda peroleh statistiknya di lingkungan Anda. Saya sarankan Anda melihat IP dan port tujuan juga.

Sampai jumpa di postingan selanjutnya dimana kita fokus pada “http.log” file.

Postingan dalam seri ini:
Memvisualisasikan data Zeek (Bro) Anda dengan Splunk – Pengaturan
Memvisualisasikan data Zeek (Bro) Anda dengan Splunk – conn.log (log koneksi)
Memvisualisasikan data Zeek (Bro) Anda dengan Splunk – http.log (log http)
Memvisualisasikan data Zeek (Bro) Anda dengan Splunk – dns.log (log koneksi)
Memvisualisasikan data Zeek (Bro) Anda dengan Splunk – x509.log (log koneksi)

Pos terkait

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *