Qu'est-ce que Ngrep et comment l'utiliser?

Qu'est-ce que Ngrep et comment l'utiliser?
Même si Tshark et TCPDump sont les outils de reniflement des paquets les plus populaires qui découvrent au niveau des bits et des octets du trafic. Ngrep est un autre utilitaire NIX de ligne de commande qui analyse les paquets de réseau et les recherche sur un motif regex donné.

L'utilitaire utilise la bibliothèque PCAP et GNU pour effectuer des recherches de chaîne regex. NGREP signifie réseau Grep qui est similaire à l'utilitaire GREP ordinaire. La seule différence est que NGREP Parses Text dans les paquets de réseau en utilisant des expressions régulières ou hexadécimales.

Dans cet article, nous découvrons un utilitaire de ligne de commande et riche en fonctionnalités connu sous le nom de NGREP qui est pratique pour l'analyse rapide du PCAP et le vidage des paquets.

Introduction

NGREP fournit des capacités de type Grep pour la troisième couche du modèle OSI, c'est-à-dire actuellement l'outil avec IPv4 / 6, TCP, UDP, ICMPV4 / 6, Protocoles IGMP. Par conséquent, l'utilitaire reconnaît divers protocoles, capture le trafic en direct et examine les fichiers PCAP capturés. Le meilleur avantage de l'utilitaire NGREP est qu'un utilisateur GREP ordinaire peut utiliser ses connaissances d'analyse de texte dans NGREP.

Commencer

Mettez à jour le référentiel Ubuntu et installez l'utilitaire NGREP via l'outil de gestion des packages APT-Get:

ubuntu @ ubuntu: ~ $ sudo apt-get update
ubuntu @ ubuntu: ~ $ sudo apt-get install ngrep

L'outil nécessite des privilèges sudo pour exécuter des commandes d'inspection des paquets profonds. Tandis que la syntaxe de l'outil général est la suivante:

ubuntu @ ubuntu: ~ $ ngrep modèle / expression

Le motifs Les utilisateurs d'expression régulière recherchent-ils dans un paquet réseau. Le filtre L'option indique le filtre de paquets Berkeley (BPF) qui comprend une série de mots clés pour spécifier les règles de sélection des paquets. Les mots clés comprennent le protocole, la source ou l'hôte de destination et les ports, etc.

Capture de paquets

Aucune option de filtre ne capture tous les paquets à partir de l'interface par défaut, par exemple, la commande suivante capturera tous les paquets réseau à partir de toutes les interfaces.

ubuntu @ ubuntu: ~ $ sudo ngrep

Pour répertorier toutes les interfaces disponibles, utilisez la commande suivante et appuyez plusieurs fois sur l'onglet pour sortir toutes les interfaces:

ubuntu @ ubuntu: ~ $ sudo ngrep -d [tab] [onglet]
ENP0S3 LO

Utilisation de base

La sortie de la commande ci-dessus affiche des charges de détails de paquets sur le terminal. NGREP propose une option «-Q» silencieuse qui interroge toutes les interfaces et protocoles pour une correspondance de cordes spécifique, apaise la sortie et imprime uniquement les détails d'en-tête de paquet de la charge utile pertinente.

ubuntu @ ubuntu: ~ $ sudo ngrep -Q
[sudo] Mot de passe pour Ubuntu:
Interface: ENP0S3 (10.0.2.0/255.255.255.0)
Filtre: ((ip || ip6) || (vlan && (ip || ip6)))
T 10.0.2.15: 35524 -> 142.250.180.46: 443 [AP] # 1
… "7c.X] e.Nu… m.'.U… &… u.% z…
T 10.0.2.15: 35524 -> 142.250.180.46: 443 [AP] # 2
… H… '.@AQ?un.'K ..
T 142.250.180.46: 443 -> 10.0.2.15: 35524 [A] # 4

La commande ci-dessus avec la chaîne 'http' affiche / attrape des paquets avec la chaîne recherchée.

ubuntu @ ubuntu: ~ $ sudo ngrep -q 'http'

Ajoutez l'indicateur T dans la commande ci-dessus pour imprimer un horodatage avec les informations de correspondance dans le Yyyy / mm / dd hh: mm: ss.Uuuuuu format. De même, en utilisant le T Le drapeau imprimera le temps écoulé entre les matchs immédiats et les horodatages dans + S.Format uuuuuu.

ubuntu @ ubuntu: ~ $ sudo ngrep -qt 'http'
ubuntu @ ubuntu: ~ $ sudo ngrep -qt 'http'
Interface: ENP0S3 (10.0.2.0/255.255.255.0)
Filtre: ((ip || ip6) || (vlan && (ip || ip6)))
Match: http
T +24.714768 10.0.2.15: 48096 -> 142.250.185.35:80 [AP] # 1453
Post / gts1o1core http / 1.1… Hôte: OCSP.pki.goog… Agent utilisateur: Mozilla / 5.0

Utilisez le -W option avec un stopage Flag pour imprimer la sortie dans un format facile à comprendre et lisible.

ubuntu @ ubuntu: ~ $ sudo ngrep -q -wbyline 'http'
T 10.0.2.15: 48570 -> 142.250.185.35:80 [AP] # 589
Post / gts1o1core http / 1.1.
Hôte: OCSP.pki.goog.
Agent utilisateur: Mozilla / 5.0 (x11; Ubuntu; Linux x86_64; RV: 79.0) Gecko / 20100101 Firefox / 79.0.
Accepter: */*.
Accept-Language: en-us, en; q = 0.5.
Codage d'acceptation: gzip, dégonfler.
Type de contenu: application / OCSP-Request.
Longueur du contenu: 83.
Connexion: Keep-Alive.

Ngrep enregistre le trafic réseau capturé dans un format PCAP qui peut être téléchargé sur Wireshark pour une analyse de paquets plus profonde. Utilisez l'option -o pour écrire la sortie recherchée dans un fichier PCAP:

ubuntu @ ubuntu: ~ $ ngrep -o http_capture.pcap -qt 'http'

Comme tous les autres outils de reniflement de réseau, NGREP permet de lire le trafic réseau enregistré de telle sorte que l'option -qt aide à filtrer le trafic capturé au lieu d'une interface.

ubuntu @ ubuntu: ~ $ ngrep -i http_capture.pcap -qt 'http'

Filtres BPF

BPF comprend une syntaxe riche pour filtrer les paquets en fonction de l'adresse IP, des ports et des protocoles. Les commandes suivantes recherchent le trafic pour les paquets TCP et UDP:

ubuntu @ ubuntu: ~ $ ngrep -w byline 'http' 'tcp'
ubuntu @ ubuntu: ~ $ ngrep -w byline 'http' 'udp'

Pour filtrer tous les paquets de l'interface ENP0S3 pour le port 80, exécutez la commande suivante:

ubuntu @ ubuntu: ~ $ ngrep -d enp0s3 -w port byline 80

De même, utilisez les commandes ci-dessous données pour correspondre aux en-têtes contenant une chaîne HTTP à partir de la destination et de l'hôte source:

ubuntu @ ubuntu: ~ $ ngrep -q 'http' 'dst hôte 172.217 '
ubuntu @ ubuntu: ~ $ ngrep -q 'http' 'src hôte '10.0 '

Enfin, la commande suivante avec un filtre hôte correspond à tous les en-têtes du «10.0.Adresse IP 2 ”.

ubuntu @ ubuntu: ~ $ ngrep -q 'http' 'hôte 10.0.2 '

Recherche de paquets réseau basée sur des chaînes

L'utilitaire NGREP peut combiner les commandes ci-dessus pour rechercher des paquets TCP sur le port 80 pour une chaîne spécifique d'agent utilisateur '.

ubuntu @ ubuntu: ~ $ sudo ngrep -d enp0s3 -w byline -i "utilisateur-agent:" TCP et port 80

-je L'option ignore le cas de l'expression regex.

De même, la commande ci-dessous affiche tous les paquets du port 80 avec la chaîne Get ou Post.

ubuntu @ ubuntu: ~ sudo ngrep -d enp0s3 -i "^ get | ^ poster" tcp et port 80
Interface: ENP0S3 (10.0.2.0/255.255.255.0)
Filtre: (TCP et Port 80) et ((IP || IP6) || (VLAN && (ip || ip6)))
Match: ^ Get | ^ Post
#######
T 10.0.2.15: 59876 -> 34.122.121.32:80 [AP] # 7
Get / http / 1.1… Hôte: Vérifier la connectivité.ubuntu.com… accepter:
###########
T 10.0.2.15: 48634 -> 34.107.221.82:80 [AP] # 18
Obtenir / réussir.txt http / 1.1… Hôte: détectportal.incendier.com… Agent utilisateur: Mozilla / 5.0
#######

Conclusion

L'article présente Ngrep, un outil de reniflement de paquets qui analyse le trafic à l'aide d'expressions régulières. Nous discutons et couvrons toutes les bases pour faire progresser les commandes et options NGREP qui facilitent les administrateurs de réseau dans leurs tâches quotidiennes.