Menu Fermer

25+ exemples de la commande Hping3

Hping est un assembleur/analyseur de paquets TCP/IP orienté ligne de commande.
L’interface est inspirée de la commande unix ping, mais il n’est pas seulement capable d’envoyer des requêtes d’écho ICMP. Il peut utiliser des paquets TCP/IP arbitraires pour un grand nombre d’objectifs différents.

Il fonctionne en envoyant des paquets ICMP ou TCP à un hôte distant et en mesurant le temps qu’il faut à l’hôte pour répondre. Il peut être utilisé dans les cas suivants :

  • Tester des règles de pare-feu
  • Analyse avancée des ports en alternative à nmap
  • Tester les performances d’Internet en utilisant différents protocoles et la taille des paquets.
  • Découvrir le chemin du MTU (MTU Path Discovery)
  • Tracer le cheminement sous différents protocoles
  • Empreinte digitale du système d’exploitation distant
  • Utilisation de type pare-feu
  • Audit de la pile TCP/IP
  • Activer le mode écoute (alternative à nc)

Dans ce tutoriel, je vous donne plusieurs exemples d’utilisation de la commande hping3.

Utiliser la commande hping3 avec des exemples

Comment installer Hping3 et syntaxe

Installer hping3 on Ubuntu and Debian avec APT :

sudo apt install hping3

Installer hping3 on CentOS, RHEL, Fedora avec DNF (ou Yum) :

sudo dnf install hping3

La syntaxe de la commande hping3 est la suivante :

sudo hping3 [options] <nom d'hôte>

Il existe énormément d’options pour vous permettre de forger des paquets.
De plus qu’il est possible d’exécuter des scripts TCL (fichier .htcl).

Voici les options les plus importantes de la commande hping3 :

  • -0 : pour envoyer des paquets RAW IP (forgés)
  • -1 : pour envoyer des paquets l’ICMP
  • -2 : pour envoyer des paquets UDP
  • -8, –scan : Mode de balayage
  • -9, –listen : Mode d’écoute
  • -a, –spoof : Spoof l’adresse source
  • -c, –count : spécifier le nombre de paquets à envoyer
  • -t, –ttl : définit le TTL (time to live) des paquets sortants

Comment utiliser hping3 avec des exemples

Envoyer des paquets TCP à un hôte

Lorsque la commande hping3 est utilisée sans aucune option, elle envoie des paquets TCP à l’hôte spécifié.

sudo hping3 192.168.56.102

Envoyer des paquets SYN à la cible

Pour envoyer des paquets SYN à l’adresse IP cible, vous pouvez utiliser l’option -S :

hping3 -S 192.168.56.102

Une alternative est d’utiliser l’option –syn.

 hping3 --syn 192.168.56.102

Envoyer un paquet TCP avec un drapeau FIN/ACK, RST, ACK, PUSH, XMAS, …

Hping3 permet de très facilement spécifier le drapeau TCP (flag) à utiliser.
Pour cela, utilisez les options suivantes :

  • -S ou –syn : SYN (flags=s)
  • -R ou –rst : RST ( flags=r)
  • -P ou –push : TCP PUSH (flags=p)
  • -A ou –ack : TCP ACK (flags=a)
  • -F ou –syn : FIN (flags=f)
  • -U ou –urg : URG (flags=u)
  • -X ou –xmas : Xmas (flags=x)
  • -Y ou –ymas : Ymas (flags=y)

Par exemple pour envoyer des paquets FIN à l’hôte spécifié, utilisez l’option -F :

sudo hping3 -F 192.168.0.254

Vous pouvez aussi utiliser l’option –fin :

 sudo hping3 --fin 192.168.0.254

Faire un traceroute

En alternative à la commande traceroute pour Linux, MTR (My Traceroute) sur Linux ou encore tracert pour Windows, il est aussi possible de faire un traceur avec hping3.

hping3 www.malekal.com -t 1 --traceroute
Faire un traceroute avec hping3

Vérifier si un port TCP est ouvert

Lorsque l’on a un doute, si un port distant est ouvert ou fermé, bloqué ou accessible par le pare-feu, on peut utiliser hping3.
Pour cela, on envoyer un paquet SYN sur un port ciblé à l’aide de l’option -p.
Par exemple pour vérifier si le port 443 est ouvert :

hping3 -S -p 443 www.google.fr 

La lecture est la même que la commande ping.
Lorsque le port distant est ouvert, les paquets sont transmis et reçus.
Si le port est fermé ou bloqué, les paquets sont perdus.

Tester si un port TCP est ouvert avec hping3

Si besoin, l’option -s vous permet de définir le port source.

hping3 -S -c 1 -s 5151 -p 443 www.google.fr

Effectuer un scan de port TCP (avec TCP SYN)

Hping3 possède aussi un mode de balayage de port. Vous pouvez l’utiliser pour effectuer un scan de port sur un hôte.
L’option attend un argument qui décrit les groupes de ports à balayer séparés par des virgules : un nombre décrit un seul port, donc 1,2,3 signifie le port 1, 2 et 3. les plages sont spécifiées en utilisant une notation début-fin, comme 1-1000, qui indique à hping de balayer les ports entre 1 et 1000 (inclus).
Ainsi pour scanner les ports de 20 à 80 :

hping3 --scan 20-80 -S www.malekal.com

Ou encore avec l’option -8 :

hping3 -8 20-80 -S www.malekal.com

Une autre syntaxe consiste à écrire le premier port à scan et ajouter ++ pour demander à incrémenter.
Par exemple pour lancer un scan de port à partir du port 80 :

hping3 -S www.malekal.com -p ++80

Le mot spécial all est un alias pour scanner tous les ports de 0-65535 :

Faire un scan de port TCP avec hping3

Enfin l’option known inclut tous les ports listés dans /etc/services :

hping3 --scan known -S www.malekal.com
Faire un scan de port TCP avec hping3

 Xmas Scan port scan

Enfin pour faire un scan de port de type Xmas Scan, utilisez la commande suivante :

hping3 -c 1 -V -p 20-80 -s 5050 -M 0 -UPF www.google.fr

Ce balayage met le numéro de séquence à zéro et place les drapeaux URG + PSH + FIN dans le paquet. Si le port TCP du dispositif cible est fermé, le dispositif cible envoie un paquet TCP RST en réponse. Si le port TCP du dispositif cible est ouvert, la cible rejette le scan TCP Xmas et n’envoie pas de réponse.

Null Scan port scan

Voici un exemple pour effectuer un scan du type “Null Scan” :

hping3 -c 1 -V -p 80 -s 5050 -Y www.google.fr

Ce balayage définit le numéro de séquence à zéro et n’a pas de drapeaux définis dans le paquet. Si le port TCP du dispositif cible est fermé, le dispositif cible envoie un paquet TCP RST en réponse. Si le port TCP du dispositif cible est ouvert, la cible rejette le balayage TCP NULL et n’envoie pas de réponse.

Faire une attaque DOS – SYN Flood et SYN Flood avec Spoof

Hping3 donne aussi la possibilité de spoofer l’adresse source.
Il est, pour cela, capable de forger des paquets TCP en modifiant l’adresse source avec une adresse aléatoire.
Pour cela, on utilise l’option –rand-source :

hping3 --rand-source 192.168.1.1

Coupler avec l’option -S, il est alors possible d’effectuer une une attaque SYN flood (attaque DOS) sur l’hôte cible.
Cela est utile pour tester les protections anti-DOS de son parefeu comme par exemple des règles Anti-DOS d’iptables.

hping3 --rand-source -S 10.0.0.41

DOS Land Attack

Voici un exemple d’attaque DOS du type DOS Land Attack :

hping3 -V -c 1000000 -d 120 -S -w 64 -p 445 -s 445 --flood --rand-source 10.0.0.41

Smurf Attack

Enfin une attaque Smurf Attack utilisant le protocole ICMP :

hping3 -1 --flood -a <adresse IP cible> <Adresse Broadcast>

Il s’agit d’un type d’attaque par déni de service qui inonde un système cible via des messages ping de diffusion usurpés.

Faire un TCP Ping

Différents types de TCP Pings peuvent être envoyés en utilisant les drapeaux TCP standard. Par exemple, pour envoyer un Ping TCP SYN au port 80 :

hping3 -S 192.168.1.254 -p 80

Et voici un exemple de Xmas Ping :

hping3 -F -P -U 192.168.1.254 -p 0

Empreinte digitale de l’OS

hping propose plusieurs façons de collecter les ISN et de déterminer leurs incréments. La plus simple est d’utiliser -Q ou – seqnum :

Définir ou désactiver la fragmentation IP

hping3 est aussi capable de définir la fragmentation IP avec les options suivantes :

  • -f –frag : divise les paquets en plusieurs fragments. (peut passer un acl faible)
  • -x –morefrag : définit l’indicateur more fragment
  • -y –dontfrag : met le drapeau “Don’t fragment” (ne pas fragmenter)
  • -g –fragoff : définit le décalage des fragments

Activer le mode IP brut

En mode IP brut, hping3 envoie un en-tête IP avec des données ajoutées avec –signature et/ou –file.

 sudo hping3 -0 192.168.56.102
sudo hping3 --rawip 192.168.56.102

Envoyer des paquets ICMP à la cible

Pour envoyer un paquet en ICMP, utilisez l’option -1 ou –icmp.
Par défaut, hping3 envoie un message avec un code 0.

sudo hping3 -1 192.168.56.102

Si vous avez besoin de changer le type ICMP, utilisez l’option –icmptype ou -K.
Par exemple pour envoyer un message de type 13 :

sudo hping3 -1 --icmptype 13 10.0.0.41

Enfin utilisez l’option –icmptype ou -C pour spécifier le type. Par exemple pour envoyer un message ICMP du type 13 ((ICMP timestamp) :

sudo hping3 -1 --icmptype 13 10.0.0.41

Envoyer des paquets UDP à la cible

Si vous souhaitez envoyer des paquets en UDP, vous devez utiliser l’option -2 :

sudo hping3 -2 10.0.0.41

ou encore l’option –udp :

sudo hping3 --udp 10.0.0.41

Ainsi pour faire un scan de port UDP avec hping :

hping3 -2 192.168.1.254 -p 80 -c 1

Faire de la découverte d’hôte

Pour tous les différents types de mécanismes de découverte d’hôtes, hping n’a que des possibilités limitées de balayer des cibles multiples à partir de la ligne de commande.
Afin de scanner une gamme d’adresses IP, vous pouvez utiliser le caractère //x// qui sera remplacé par hping par un nombre aléatoire. Par exemple, la commande suivante analysera toute la gamme des réseaux locaux de classe C :

sudo hping3 -1 10.0.0.x --rand-dest -I ens33
Faire de la découverte d'hôte avec hping3

Spécifier le port de destination

Le port par défaut est 0. Vous pouvez utiliser l’option -p ou –destport pour définir le port de destination lors de l’envoi de paquets.

sudo hping3 -p port 10.0.0.41
sudo hping3 --destport port 10.0.0.41

Spécifier le nombre de paquets

L’option -c ou –count vous permet de spécifier le nombre de paquets à envoyer.

sudo hping3 -c num 192.168.56.102
 sudo hping3 --count num 192.168.56.102

Mode d’écoute hping3

Vous pouvez activer le mode d’écoute en utilisant l’option -9 ou –listen.

sudo hping3 -9 signature
sudo hping3 --listen signature

Activer la sortie verbeuse

L’option -V ou –verbose affiche les informations détaillées. Vous pouvez voir les détails des paquets qui sont envoyés.

sudo hping3 -V 192.168.56.102
sudo hping3 --verbose 192.168.56.102

Spécifier l’interface à utiliser

L’option -I ou –interface force hping3 à utiliser l’interface que vous spécifiez dans la commande.

sudo hping3 -I <nom interface> <adresse ip>
sudo hping3 -I <nom interface> <adresse ip>

Par exemple pour spéficier l’interface réseau wlan0 :

tcpdump -i wlan0 -n host 10.0.0.4

hping3 pour renifler de paquets réseau

hping3 peut également être utilisé pour renifler des paquets réseau. En utilisant le mode écoute, vous pouvez intercepter le trafic passant par l’interface réseau du système.

Par exemple, vous pouvez utiliser cette commande pour intercepter tout le trafic contenant des signatures HTTP.

sudo hping3 -9 HTTP -I enp0s9

Vous pouvez aussi spécifier une URL :

hping3 -9 "http://www.google.com/search?" --beep -I enp0s9

D’où l’intérêt de HTTPS.

Pour sniffer le réseau, voir les alternatives du type ngrep, tcpdump ou encore wiresharck

Définir la taille du paquet

L’option -d ou –data vous permet de spécifier la taille des paquets.

 sudo hping3 -d size 192.168.56.102
sudo hping3 --data size 192.168.56.102

Activer l’horodatage TCP (Timestamp)

Vous pouvez utiliser l’option –tcp-timestamp pour afficher l’horodatage TCP. Il peut être utilisé pour estimer la fréquence de mise à jour de l’horodatage et le temps de fonctionnement du système distant.

 sudo hping3 --tcp-timestamp 192.168.52.106