ngrep - võrgupakettide analüsaator Linuxile


Ngrep (võrgu grep) on lihtne, kuid võimas võrgupakettide analüsaator. See on grep-laadne tööriist, mida rakendatakse võrgukihile - see sobib võrguliidese kaudu liikuvale liiklusele. See võimaldab teil määrata laiendatud regulaar- või kuueteistkümnendsüsteemi avaldise, mis sobib pakettide andmete kasulike koormustega (tegelik teave või sõnum edastatud andmetes, kuid mitte automaatselt genereeritud metaandmetega).

See tööriist töötab erinevat tüüpi protokollidega, sealhulgas IPv4/6, TCP, UDP, ICMPv4/6, IGMP, samuti Rawiga mitmel liidesel. See töötab samamoodi nagu tcpdump pakettide nuusutamise tööriist.

Pakett ngrep on saadaval installimiseks vaikimisi süsteemihoidlatest Linuxi peavoolu distributsioonides, kasutades paketihaldustööriista, nagu näidatud.

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

Pärast ngrepi installimist võite järgmiste näidete abil oma Linuxi võrgus liiklust analüüsida.

1. Järgmine käsk aitab teil sobitada vaikepingeliidese kõik pingitaotlused. Peate avama teise terminali ja proovima teist kaugmasinat pingida. Lipp -q käsib ngrepil töötada vaikselt, et ta ei väljastaks muud teavet kui pakettide päised ja nende kasulikud koormused.

$ 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  

Selle lõpetamiseks võite vajutada klahvi Ctrl + C .

2. Et sobitada ainult liiklust, mis suundub konkreetsele sihtkohasaidile, näiteks ‘google.com’, käivitage järgmine käsk ja proovige sellele siis brauserist juurde pääseda.

$ 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. Kui surfate veebis, käivitage järgmine käsk, et jälgida, milliseid faile teie brauser taotleb :.

$ 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. Kõigi tegevuste kuvamiseks, mis ületavad lähte- või sihtport 25 (SMTP), käivitage järgmine käsk.

$ sudo ngrep port 25

5. Võrgupõhise syslogiliikluse jälgimiseks sõna\"tõrge" esinemise korral kasutage järgmist käsku.

 
$ sudo ngrep -d any 'error' port 514

Oluline on see, et see tööriist suudab teisendada kataloogi\"/ etc/services" salvestatud teenusepordinimed (Unixi-laadsetes süsteemides, nagu Linux) pordinumbriteks. See käsk on samaväärne ülaltoodud käsuga.

$ sudo ngrep -d any 'error' port syslog

6. Võite ngrepi käivitada ka HTTP-serveri (port 80) vastu, see vastab kõigile päringutele sihtkoha hostile, nagu näidatud.

$ 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....
##

Nagu ülaltoodud väljundist näha, kuvatakse kogu HTTP-päiste edastamine nende üksikasjades. Seda on siiski raske sõeluda, nii et vaatame, mis juhtub, kui rakendate -W byline-režiimi.

$ 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. Ajatempli printimiseks YYYY/MM/DD HH: MM: SS.UUUUUU iga kord, kui pakett sobib, kasutage lippu -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. Vältimaks liidese jälgitavat režiimi viimist (kus see võtab vastu ja loeb kõiki saabuvaid võrgupakette tervikuna), lisage lipp -p .

$ sudo ngrep -p -W byline port 80

9. Teine oluline valik on -N , mis on kasulik juhul, kui jälgite tooreid või tundmatuid protokolle. See käsib ngrepil kuvada alamprotokolli number koos ühemärgilise identifikaatoriga.

$ sudo ngrep -N -W byline

Lisateavet leiate ngrepi manulehelt.

$ man ngrep

ngrep Githubi hoidla: https://github.com/jpr5/ngrep

See on kõik! Ngrep (võrgu grep) on võrgupakettide analüsaator, mis mõistab BPF-i filtri loogikat samal moel tcpdump. Soovime teada teie mõtteid ngrepi kohta kommentaaride jaotises.