ngrep - E Network Packet Analyzer fir Linux


Ngrep (Netzwierk grep) ass en einfachen awer mächtege Netzwierkpaketanalysator. Et ass e grep-ähnlechen Tool dat op d'Netzwierkschicht applizéiert gëtt - et entsprécht dem Traffic deen iwwer eng Netzwierkinterface passéiert. Et erlaabt Iech en erweiderten regulären oder hexadezimalen Ausdrock ze spezifizéieren fir mat Daten Notzlaascht ze passen (déi tatsächlech Informatioun oder Message an iwwerdroen Donnéeën, awer net automatesch generéiert Metadaten) vu Paketen.

Dëst Tool funktionnéiert mat verschiddenen Aarte vu Protokoller, dorënner IPv4/6, TCP, UDP, ICMPv4/6, IGMP souwéi Raw op enger Rei vun Interfaces. Et funktionnéiert op déiselwecht Manéier wéi tcpdump Packet Sniffing Tool.

De Package ngrep ass verfügbar fir aus de Standardsystem Repositories an Mainstream Linux Verdeelungen z'installéieren mat Package Management Tool wéi gewisen.

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

Nodeems Dir ngrep installéiert hutt, kënnt Dir de Traffic op Ärem Linux Netzwierk analyséieren andeems Dir folgend Beispiller benotzt.

1. De folgende Kommando hëlleft Iech all Ping-Ufroen op der Standardaarbechtsinterface ze passen. Dir musst en aneren Terminal opmaachen a probéiert eng aner Fernmaschinn ze pingelen. De -q Fändel erzielt ngrep fir roueg ze schaffen, fir keng aner Informatioun auszeginn wéi Paketheader an hir Notzlaascht.

$ 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  

Dir kënnt Ctrl + C drécken fir se ofzeschléissen.

2. Fir nëmmen de Traffic ze passen, deen op eng bestëmmten Destinatiounssäit geet, zum Beispill 'google.com', fuert de folgende Kommando aus, probéiert et dann aus engem Browser ze kréien.

$ 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. Wann Dir um Internet surft, da fuert de folgende Kommando fir ze iwwerwaachen wéi eng Dateien Äre Browser freet:.

$ 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. Ze gesinn all Aktivitéit Kräizgang Quell oder Destinatioun port 25 (SMTP), fueren folgend Kommando.

$ sudo ngrep port 25

5. Fir all Netzwierk-baséiert Syslog Traffic fir d'Optriede vum Wuert \Feeler ze iwwerwaachen, benotzt de folgende Kommando.

 
$ sudo ngrep -d any 'error' port 514

Wichteg ass, datt dëst Tool Serviceportnamen, déi an \/etc/services gespäichert sinn (op Unix-ähnleche Systemer wéi Linux) an Portnummeren konvertéieren. Dëse Kommando entsprécht dem uewe genannte Kommando.

$ sudo ngrep -d any 'error' port syslog

6. Dir kënnt och ngrep géint en HTTP-Server (port 80) lafen, et passt all Ufroe fir den Destinatiounshost wéi gewisen.

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

Wéi Dir am uewe genannten Output gesitt, ginn all HTTP Header Iwwerdroung an hirem blöden Detail ugewisen. Et ass awer schwéier ze analyséieren, also loosst eis kucken wat geschitt wann Dir -W Byline Modus applizéiert.

$ 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. Fir eng Zäitstempel an der Form vun JJJJ/MM/DD HH: MM: SS.UUUUUU all Kéier e Pak ugepasst ass, benotzt der -t Fändel.

$ 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. Fir ze vermeiden datt d'Interface iwwerwaacht gëtt an de promiskuöse Modus (wou se all Netzwierkpaket deen a senger Ganzheet ukommt offänkt a liest), füügt de -p Fändel un.

$ sudo ngrep -p -W byline port 80

9. Eng aner wichteg Optioun ass -N déi nëtzlech ass am Fall wou Dir rau oder onbekannt Protokoller beobachtet. Et seet ngrep fir d'Ënnerprotokollnummer zesumme mat engem eenzege Charakter Identifizéierer ze weisen.

$ sudo ngrep -N -W byline

Fir méi Informatioun, kuckt d'ngrep Man Säit.

$ man ngrep

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

Dat ass alles! Ngrep (Netzwierk grep) ass en Netzwierkspaketanalysator deen d'BPF Filterlogik op déiselwecht Manéier versteet tcpdump. Mir wëllen Är Gedanken iwwer ngrep an der Kommentarsektioun wëssen.