ngrep - Penganalisis Paket Jaringan untuk Linux


Ngrep (network grep) adalah penganalisis paket jaringan yang sederhana namun kuat. Ini adalah alat mirip grep yang diterapkan pada lapisan jaringan – alat ini mencocokkan lalu lintas yang melewati antarmuka jaringan. Hal ini memungkinkan Anda untuk menentukan ekspresi reguler atau heksadesimal yang diperluas untuk dicocokkan dengan muatan data (informasi atau pesan aktual dalam data yang dikirimkan, namun bukan metadata yang dihasilkan secara otomatis) dari paket.

Alat ini bekerja dengan berbagai jenis protokol, termasuk IPv4/6, TCP, UDP, ICMPv4/6, IGMP serta Raw pada sejumlah antarmuka. Ini beroperasi dengan cara yang sama seperti alat sniffing paket tcpdump.

Paket ngrep tersedia untuk diinstal dari repositori sistem default di distribusi Linux mainstream menggunakan alat manajemen paket seperti yang ditunjukkan.

sudo apt install ngrep
sudo yum install ngrep
sudo dnf install ngrep

Setelah menginstal ngrep, Anda dapat mulai menganalisis lalu lintas di jaringan Linux Anda menggunakan contoh berikut.

1. Perintah berikut akan membantu Anda mencocokkan semua permintaan ping pada antarmuka kerja default. Anda perlu membuka terminal lain dan mencoba melakukan ping ke mesin jarak jauh lainnya. Flag -q memberi tahu ngrep agar bekerja dengan tenang, tidak mengeluarkan informasi apa pun selain header paket dan muatannya.

sudo ngrep -q '.' 'icmp'

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ( icmp ) and ((ip || ip6) || (vlan && (ip || ip6)))
match: .

I 192.168.0.104 -> 192.168.0.103 8:0
  ]...~oG[....j....................... !"#$%&'()*+,-./01234567                                                                                                             

I 192.168.0.103 -> 192.168.0.104 0:0
  ]...~oG[....j....................... !"#$%&'()*+,-./01234567                                                                                                             

I 192.168.0.104 -> 192.168.0.103 8:0
  ]....oG[............................ !"#$%&'()*+,-./01234567                                                                                                             

I 192.168.0.103 -> 192.168.0.104 0:0
  ]....oG[............................ !"#$%&'()*+,-./01234567  

Anda dapat menekan Ctrl + C untuk menghentikannya.

2. Untuk mencocokkan hanya lalu lintas yang menuju ke situs tujuan tertentu, misalnya 'google.com', jalankan perintah berikut, lalu coba akses dari browser.

sudo ngrep -q '.' 'host google.com'

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ( host google.com ) and ((ip || ip6) || (vlan && (ip || ip6)))
match: .

T 172.217.160.174:443 -> 192.168.0.103:54008 [AP]
  ..................;.(...RZr..$....s=..l.Q+R.U..4..g.j..I,.l..:{y.a,....C{5>[email ..                                                                       

T 172.217.160.174:443 -> 192.168.0.103:54008 [AP]
  .............l.......!,0hJ....0.%F..!...l|.........PL..X...t..T.2DC..... ..y...~Y;[email 

3. Jika Anda menjelajahi web, jalankan perintah berikut untuk memantau file mana yang diminta browser Anda:.

sudo ngrep -q '^GET .* HTTP/1.[01]'

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ((ip || ip6) || (vlan && (ip || ip6)))
match: ^GET .* HTTP/1.[01]

T 192.168.0.104:43040 -> 172.217.160.174:80 [AP]
  GET / HTTP/1.1..Host: google.com..User-Agent: Links (2.13; Linux 4.17.6-1.el7.elrepo.x86_64 x86_64; 
  GNU C 4.8.5; text)..Accept: */*..Accept-Language: en,*;q=0.1..Accept-
  Encoding: gzip, deflate, bzip2..Accept-Charset: us-ascii,ISO-8859-1,ISO-8859-2,ISO-8859-3,ISO-8859-4,
  ISO-8859-5,ISO-8859-6,ISO-8859-7,ISO-8859-8,ISO-8859-9,ISO-8859-10,I
  SO-8859-13,ISO-8859-14,ISO-8859-15,ISO-8859-16,windows-1250,windows-1251,windows-1252,windows-1256,
  windows-1257,cp437,cp737,cp850,cp852,cp866,x-cp866-u,x-mac,x-mac-ce,x-
  kam-cs,koi8-r,koi8-u,koi8-ru,TCVN-5712,VISCII,utf-8..Connection: keep-alive.... 

4. Untuk melihat semua aktivitas yang melintasi port sumber atau tujuan 25 (SMTP), jalankan perintah berikut.

sudo ngrep port 25

5. Untuk memantau lalu lintas syslog berbasis jaringan terhadap kemunculan kata “kesalahan ”, gunakan perintah berikut.

 
sudo ngrep -d any 'error' port 514

Yang penting, alat ini dapat mengonversi nama port layanan yang disimpan di “/etc/services ” (pada sistem mirip Unix seperti Linux) menjadi nomor port. Perintah ini setara dengan perintah di atas.

sudo ngrep -d any 'error' port syslog

6. Anda juga dapat menjalankan ngrep pada server HTTP (port 80), ini akan mencocokkan semua permintaan ke host tujuan seperti yang ditunjukkan.

sudo ngrep port 80

interface: eth0 (64.90.164.72/255.255.255.252)
filter: ip and ( port 80 )
####
T 67.169.59.38:42167 -> 64.90.164.74:80 [AP]
  GET / HTTP/1.1..User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i
  686) Opera 7.21  [en]..Host: www.darkridge.com..Accept: text/html, applicat
  ion/xml;q=0.9, application/xhtml+xml;q=0.9, image/png, image/jpeg, image/gi
  f, image/x-xbitmap, */*;q=0.1..Accept-Charset: iso-8859-1, utf-8, utf-16, *
  ;q=0.1..Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0..Cookie: SQ
  MSESSID=5272f9ae21c07eca4dfd75f9a3cda22e..Cookie2: $Version=1..Connection:
  Keep-Alive, TE..TE: deflate, gzip, chunked, identity, trailers....
##

Seperti yang Anda lihat pada keluaran di atas, semua transmisi header HTTP ditampilkan dalam detail yang mengerikan. Sulit untuk menguraikannya, jadi mari kita lihat apa yang terjadi ketika Anda menerapkan mode byline -W.

sudo ngrep -W byline port 80

interface: eth0 (64.90.164.72/255.255.255.252)
filter: ip and ( port 80 )
####
T 67.169.59.38:42177 -> 64.90.164.74:80 [AP]
GET / HTTP/1.1.
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera ...
Host: www.darkridge.com.
Accept: text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9 ...
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1.
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0.
Cookie: SQMSESSID=5272f9ae21c07eca4dfd75f9a3cda22e.
Cookie2: $Version=1.
Cache-Control: no-cache.
Connection: Keep-Alive, TE.
TE: deflate, gzip, chunked, identity, trailers.

7. Untuk mencetak stempel waktu dalam bentuk YYYY/MM/DD HH:MM:SS.UUUUUU setiap kali paket cocok, gunakan tanda -t.

sudo ngrep -t -W byline port 80

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ( port 80 ) and ((ip || ip6) || (vlan && (ip || ip6)))
####
T 2018/07/12 16:33:19.348084 192.168.0.104:43048 -> 172.217.160.174:80 [AP]
GET / HTTP/1.1.
Host: google.com.
User-Agent: Links (2.13; Linux 4.17.6-1.el7.elrepo.x86_64 x86_64; GNU C 4.8.5; text).
Accept: */*.
Accept-Language: en,*;q=0.1.
Accept-Encoding: gzip, deflate, bzip2.
Accept-Charset: us-ascii,ISO-8859-1,ISO-8859-2,ISO-8859-3,ISO-8859-4,ISO-8859-5,utf-8.
Connection: keep-alive.

8. Untuk menghindari antarmuka yang sedang dipantau ke mode promiscuous (yang mencegat dan membaca setiap paket jaringan yang tiba secara keseluruhan), tambahkan tanda -p.

sudo ngrep -p -W byline port 80

9. Opsi penting lainnya adalah -N yang berguna jika Anda mengamati protokol mentah atau tidak diketahui. Ia memberitahukan ngrep untuk menampilkan nomor sub-protokol bersama dengan pengenal karakter tunggal.

sudo ngrep -N -W byline

Untuk informasi lebih lanjut, lihat halaman manual ngrep.

man ngrep

ngrep Repositori Github: https://github.com/jpr5/ngrep

Itu saja! Ngrep (network grep) adalah penganalisis paket jaringan yang memahami logika filter BPF dengan cara yang sama seperti tcpdump. Kami ingin mengetahui pendapat Anda tentang ngrep di bagian komentar.