ngrep – Ein Network Packet Analyzer für Linux


Ngrep ((Netzwerk grep) ist ein einfacher, aber leistungsstarker Netzwerkpaketanalysator. Es ist ein grep-ähnliches Tool, das auf die Netzwerkschicht angewendet wird. Es entspricht dem Datenverkehr, der über eine Netzwerkschnittstelle übertragen wird. Sie können einen erweiterten regulären oder hexadezimalen Ausdruck angeben, der mit den Datennutzdaten (den tatsächlichen Informationen oder Nachrichten in übertragenen Daten, jedoch nicht automatisch generierten Metadaten) von Paketen übereinstimmt.

Dieses Tool funktioniert mit verschiedenen Arten von Protokollen, einschließlich IPv4 / 6, TCP, UDP, ICMPv4 / 6, IGMP sowie Raw auf einer Reihe von Schnittstellen. Es funktioniert auf die gleiche Weise wie das Paket-Sniffing-Tool tcpdump.

Das Paket ngrep ist verfügbar für die Installation aus den Standardsystem-Repositorys in Standard-Linux-Distributionen mithilfe des Paketverwaltungstools (siehe Abbildung).

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

Nach der Installation ngrepMit den folgenden Beispielen können Sie den Datenverkehr in Ihrem Linux-Netzwerk analysieren.

1. Mit dem folgenden Befehl können Sie alle Ping-Anforderungen auf der Standardarbeitsoberfläche abgleichen. Sie müssen ein anderes Terminal öffnen und versuchen, einen anderen Remotecomputer zu pingen. Das -q Flagge erzählen ngrep leise zu arbeiten, keine anderen Informationen als Paket-Header und deren Nutzdaten auszugeben.

$ 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  


Sie können drücken Ctrl + C um es zu beenden.

2. Zum Beispiel, um nur den Datenverkehr zu einem bestimmten Zielstandort abzugleichen “google.com”Führen Sie den folgenden Befehl aus und versuchen Sie dann, über einen Browser darauf zuzugreifen.

$ 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 protected]                                                                       

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 protected]

3. Wenn Sie im Internet surfen, führen Sie den folgenden Befehl aus, um zu überwachen, welche Dateien Ihr Browser anfordert:

$ 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. Anzeigen aller Aktivitäten, die den Quell- oder Zielport überqueren 25 ((SMTP), führen Sie den folgenden Befehl aus.

$ sudo ngrep port 25

5. Überwachen des netzwerkbasierten Syslog-Verkehrs auf das Auftreten des Wortes “Error”Verwenden Sie den folgenden Befehl.

 
$ sudo ngrep -d any 'error' port 514

Wichtig ist, dass dieses Tool die in gespeicherten Service-Port-Namen konvertieren kann “/ Etc / services” (auf Unix-ähnlichen Systemen wie Linux) zu Portnummern. Dieser Befehl entspricht dem obigen Befehl.

$ sudo ngrep -d any 'error' port syslog

6. Sie können ngrep auch gegen ein ausführen HTTP Server Port 80) werden alle Anforderungen wie gezeigt an den Zielhost abgeglichen.

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

Wie Sie in der obigen Ausgabe sehen können, werden alle Übertragungen von HTTP-Headern in ihren wichtigsten Details angezeigt. Es ist jedoch schwer zu analysieren. Lassen Sie uns also beobachten, was passiert, wenn Sie sich bewerben -W Byline-Modus.

$ 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. So drucken Sie a Zeitstempel in Form von JJJJ / MM / TT HH: MM: SS.UUUUUU Verwenden Sie jedes Mal, wenn ein Paket abgeglichen wird, die -t Flagge.

$ 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. Fügen Sie das hinzu, um zu vermeiden, dass die zu überwachende Schnittstelle in den Promiscuous-Modus versetzt wird (in dem jedes Netzwerkpaket abgefangen und gelesen wird, das vollständig ankommt) -p Flagge.

$ sudo ngrep -p -W byline port 80

9. Eine weitere wichtige Option ist -N Dies ist nützlich, wenn Sie rohe oder unbekannte Protokolle beobachten. Es sagt ngrep um die Unterprotokollnummer zusammen mit der Einzelzeichen-ID anzuzeigen.

$ sudo ngrep -N -W byline

Weitere Informationen finden Sie in der ngrep Manpage.

$ man ngrep

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

Das ist alles! Ngrep ((Netzwerk grep) ist ein Netzwerkpaketanalysator, der die BPF-Filterlogik auf dieselbe Weise wie tcpdump versteht. Wir würden gerne Ihre Gedanken darüber erfahren ngrep im Kommentarbereich.


0 Comments

Kommentar verfassen