NGREP - Un analyseur de paquets réseau pour Linux

NGREP - Un analyseur de paquets réseau pour Linux

Ngrep (réseau grep) est un analyseur de paquets réseau simple mais puissant. Il s'agit d'un outil de type Grep appliqué à la couche réseau - il correspond au trafic passant sur une interface réseau. Il vous permet de spécifier une expression régulière ou hexadécimale étendue pour correspondre aux charges utiles de données (les informations réelles ou le message dans les données transmises, mais pas les métadonnées générées automatiquement) des paquets.

Cet outil fonctionne avec différents types de protocoles, notamment IPv4 / 6, TCP, UDP, ICMPV4 / 6, IGMP ainsi que RAW sur un certain nombre d'interfaces. Il fonctionne de la même manière que l'outil de reniflement de paquets TCPDump.

Le paquet ngrep est disponible pour installer à partir des référentiels système par défaut dans les distributions Linux traditionnelles à l'aide de l'outil de gestion des packages comme indiqué.

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

Après installation ngrep, Vous pouvez commencer à analyser le trafic sur votre réseau Linux en utilisant des exemples suivants.

1. La commande suivante vous aidera à faire correspondre toutes les demandes de ping sur l'interface de travail par défaut. Vous devez ouvrir un autre terminal et essayer de cingler une autre machine distante. Le -q drapeau raconter ngrep Pour travailler tranquillement, pour ne pas produire d'autres informations que les en-têtes de paquets et leurs charges utiles.

$ sudo ngrep -q '."ICMP ' Interface: ENP0S3 (192.168.0.0/255.255.255.0) Filtre: (icmp) et ((ip || ip6) || (vlan && (ip || ip6))) correspond: . 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 

Vous pouvez appuyer Ctrl + c Pour le terminer.

2. Pour correspondre au trafic uniquement vers un site de destination particulier, par exemple 'Google.com ', Exécutez la commande suivante, puis essayez d'y accéder à partir d'un navigateur.

$ sudo ngrep -q '."Hôte Google.com ' Interface: ENP0S3 (192.168.0.0/255.255.255.0) Filtre: (Hôte Google.com) et ((ip || ip6) || (vlan && (ip || ip6))) correspond: . T 172.217.160.174: 443 -> 192.168.0.103: 54008 [AP]…;.(… Rzr… $… s =… l.Q + R.U… 4… g.J… je,.l…: y.A,… C 5> [Protégé par e-mail] T 172.217.160.174: 443 -> 192.168.0.103: 54008 [AP]… L… !,0hj… 0.%F… !… L |… pl… x… t… t.2dc… y… ~ y; [Protégé par e-mail] 

3. Si vous surfez sur le Web, exécutez la commande suivante pour surveiller les fichiers que votre navigateur demande:.

$ sudo ngrep -Q '^ Get .* Http / 1.[01] ' Interface: ENP0S3 (192.168.0.0/255.255.255.0) Filtre: ((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… Hôte: Google.com… Agent utilisateur: liens (2.13 Linux 4.17.6-1.EL7.elrépo.x86_64 x86_64; GNU C 4.8.5; Texte)… Accepter: * / *… Accept-Language: en, *; Q = 0.1… Accept- Encodage: GZIP, Donte, BZIP2… Accept-Chargeset: 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… Connexion: Keep-Alive… 

4. Pour voir toutes les activités traverser la source ou le port de destination 25 (Smtp), exécutez la commande suivante.

$ sudo ngrep port 25 

5. Pour surveiller tout trafic syslog basé sur le réseau pour la survenue du mot "erreur", Utilisez la commande suivante.

 $ sudo ngrep -d tout port «erreur» 514 

Surtout, cet outil peut convertir les noms de port de service stockés «/ Etc / services» (sur des systèmes de type Unix tels que Linux) aux numéros de port. Cette commande est équivalente à la commande ci-dessus.

$ sudo ngrep -d tout `` erreur '' port syslog 

6. Vous pouvez également exécuter Ngrep contre un Http port de serveur 80), il correspondra à toutes les demandes à l'hôte de destination comme indiqué.

$ sudo ngrep port 80 Interface: Eth0 (64.90.164.72/255.255.255.252) Filtre: IP et (port 80) #### T 67.169.59.38: 42167 -> 64.90.164.74:80 [ap] get / http / 1.1… Agent utilisateur: Mozilla / 4.0 (compatible; msie 6.0; X11; Linux I 686) Opéra 7.21 [EN]… Hôte: www.darkridge.com… accepter: texte / 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-codage: dégonfler, gzip, x-gzip, identité, *; q = 0… cookie: sq msessid = 5272f9ae21c07eca4dfd75f9a3cda22e… cookie2: $ version = 1… connexion: keep-alive, te… te: défila, gzip, $ version = 1… connexion: Keep-alive, Te… te: défilant, gzip, $ version = 1… Connexion: Keep-Alive, Te… Te: Deflate, Gzip, Chunked, identité, bandes-annonces… ## 

Comme vous pouvez le voir dans la sortie ci-dessus, toutes les transmissions en en-têtes HTTP sont affichées dans leurs détails sanglants. Il est difficile d'analyser, alors regardons ce qui se passe lorsque vous postulez -W mode byline.

$ sudo ngrep -w Port Byline 80 Interface: Eth0 (64.90.164.72/255.255.255.252) Filtre: IP et (port 80) #### T 67.169.59.38: 42177 -> 64.90.164.74:80 [ap] get / http / 1.1. Agent utilisateur: Mozilla / 4.0 (compatible; msie 6.0; X11; Linux i686) Opéra… Hôte: www.darkridge.com. Accepter: texte / 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-codage: dégonfler, gzip, x-gzip, identité, *; q = 0. Cookie: SqmSessid = 5272F9AE21C07ECA4DFD75F9A3CDA22E. Cookie2: $ version = 1. Contrôle du cache: sans cache. Connexion: Keep-Alive, TE. TE: Donter, GZIP, Chunked, identité, bandes-annonces. 

7. Pour imprimer un horodatage sous la forme de Yyyy / mm / dd hh: mm: ss.Uuuuuu Chaque fois qu'un paquet est assorti, utilisez le -t drapeau.

$ sudo ngrep -t -w Port Byline 80 Interface: ENP0S3 (192.168.0.0/255.255.255.0) Filtre: (port 80) et ((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. Hôte: Google.com. Agent utilisateur: liens (2.13 Linux 4.17.6-1.EL7.elrépo.x86_64 x86_64; GNU C 4.8.5; texte). Accepter: */*. Accept-Language: en, *; q = 0.1. Codage d'acceptation: gzip, dégonfler, bzip2. Accept-Charset: US-ASCII, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, UTF-8. Connexion: Keep-Alive. 

8. Pour éviter que l'interface soit surveillée en mode promiscuité (où il intercepte et lit chaque paquet de réseau qui arrive dans son intégralité), ajoutez le -p drapeau.

$ sudo ngrep -p -w Port Byline 80 

9. Une autre option importante est -N qui est utile au cas où vous observeriez des protocoles bruts ou inconnus. Il dit ngrep Pour afficher le numéro de sous-protocole avec un identifiant à un seul caractères.

$ sudo ngrep -n -w byline 

Pour plus d'informations, voir le ngrep page.

$ man ngrep 

Référentiel de github ngrep: https: // github.com / jpr5 / ngrep

C'est tout! Ngrep (réseau grep) est un analyseur de paquets de réseau qui comprend la logique du filtre BPF de la même manière TCPDUmp. Nous aimerions connaître vos réflexions sur ngrep Dans la section des commentaires.