Kali-linux distribution GNU/Linux spécialisée dans l'audit et le pentest.
Kali-linux.fr Communauté française de kali-linux
hping3 pour la découverte du réseau

Salut chers amis pentesteurs ! Cet article lève un coin de voile sur un outil disponible sur Kali Linux qu’est Hping3. Il s’agit d’un outil bien plus avancé que l’outil ping traditionnel.

Dans ce tutoriel, vous découvrirez comment Hping3 est applicable à un grand nombre de cas d’usage pour l’attaque et la découverte du réseau.

Pourquoi utiliser Hping3?

Hping3 est un logiciel en ligne de commande créé par Salvatore Sanfilippo, fonctionne en envoyant des paquets TCP à un port de destination puis en signalant les paquets qu’il reçoit en retour.

Il peut également assembler des paquets réseau, ce qui peut être très utile pour les pentesteurs pour la découverte de périphériques et de services et des actions illégales telles que l’exécution d’une attaque par déni de service (DoS).

Hping3 peut notamment être utile dans divers autres scénarios dont:

  • Obtenir le fingerprint des OS sur le réseau
  • Estimer l’uptime d’un équipement réseau
  • Faire du traceroute avancé
  • Tester un réseaux et ses Firewalls
  • Faire du spoofing d’utilisateurs

L’aide de l’outil vous donne une idée sur la richesse de ses fonctionalités

root@kali:~# hping3 -h
 usage: hping3 host [options]
 -h --help show this help
 -v --version show version
 -c --count packet count
 -i --interval wait (uX for X microseconds, for example -i u1000)
 --fast alias for -i u10000 (10 packets for second)
 --faster alias for -i u1000 (100 packets for second)
 --flood sent packets as fast as possible. Don't show replies.
 -n --numeric numeric output
 -q --quiet quiet
 -I --interface interface name (otherwise default routing interface)
 -V --verbose verbose mode
 -D --debug debugging info
 -z --bind bind ctrl+z to ttl (default to dst port)
 -Z --unbind unbind ctrl+z
 --beep beep for every matching packet received
 Mode
 default mode TCP
 -0 --rawip RAW IP mode
 -1 --icmp ICMP mode
 -2 --udp UDP mode
 -8 --scan SCAN mode.
 Example: hping --scan 1-30,70-90 -S www.target.host
 -9 --listen listen mode
 IP
 -a --spoof spoof source address
 --rand-dest random destionation address mode. see the man.
 --rand-source random source address mode. see the man.
 -t --ttl ttl (default 64)
 -N --id id (default random)
 -W --winid use win* id byte ordering
 -r --rel relativize id field (to estimate host traffic)
 -f --frag split packets in more frag. (may pass weak acl)
 -x --morefrag set more fragments flag
 -y --dontfrag set don't fragment flag
 -g --fragoff set the fragment offset
 -m --mtu set virtual mtu, implies --frag if packet size > mtu
 -o --tos type of service (default 0x00), try --tos help
 -G --rroute includes RECORD_ROUTE option and display the route buffer
 --lsrr loose source routing and record route
 --ssrr strict source routing and record route
 -H --ipproto set the IP protocol field, only in RAW IP mode
 ICMP
 -C --icmptype icmp type (default echo request)
 -K --icmpcode icmp code (default 0)
 --force-icmp send all icmp types (default send only supported types)
 --icmp-gw set gateway address for ICMP redirect (default 0.0.0.0)
 --icmp-ts Alias for --icmp --icmptype 13 (ICMP timestamp)
 --icmp-addr Alias for --icmp --icmptype 17 (ICMP address subnet mask)
 --icmp-help display help for others icmp options
 UDP/TCP
 -s --baseport base source port (default random)
 -p --destport [+][+] destination port(default 0) ctrl+z inc/dec
 -k --keep keep still source port
 -w --win winsize (default 64)
 -O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4)
 -Q --seqnum shows only tcp sequence number
 -b --badcksum (try to) send packets with a bad IP checksum
 many systems will fix the IP checksum sending the packet
 so you'll get bad UDP/TCP checksum instead.
 -M --setseq set TCP sequence number
 -L --setack set TCP ack
 -F --fin set FIN flag
 -S --syn set SYN flag
 -R --rst set RST flag
 -P --push set PUSH flag
 -A --ack set ACK flag
 -U --urg set URG flag
 -X --xmas set X unused flag (0x40)
 -Y --ymas set Y unused flag (0x80)
 --tcpexitcode use last tcp->th_flags as exit code
 --tcp-mss enable the TCP MSS option with the given value
 --tcp-timestamp enable the TCP timestamp option to guess the HZ/uptime
 Common
 -d --data data size (default is 0)
 -E --file data from file
 -e --sign add 'signature'
 -j --dump dump packets in hex
 -J --print dump printable characters
 -B --safe enable 'safe' protocol
 -u --end tell you when --file reached EOF and prevent rewind
 -T --traceroute traceroute mode (implies --bind and --ttl 1)
 --tr-stop Exit when receive the first not ICMP in traceroute mode
 --tr-keep-ttl Keep the source TTL fixed, useful to monitor just one hop
 --tr-no-rtt Don't calculate/show RTT information in traceroute mode
 ARS packet description (new, unstable)
 --apd-send Send the packet described with APD (see docs/APD.txt)

Installé par défaut sur Kali Linux, Hping3 est, vous l’aurez compris, vraiment utile en matière de pentesting réseau.

Utiliser hping3 pour la découverte de réseau

Dans une architecture réelle, nous sommes souvent confrontés à des restrictions des pare-feu lors de nos découvertes sur le réseau cible. Hping3 vient à point nommé nous soulager sur ce point.

Scan d’un port à l’aide de hping3

Si nous utilisons Hping3 pour sonder un port spécifique en envoyant des paquets SYN forcera la cible à se révéler.

 sudo hping3 -S [Adresse IP ou hostname] -p [Port] -c [nombre]

-S spécifie les paquets SYN

-p définit le port

-c spécifie le nombre de paquet à envoyer

D’après l’image ci-dessus, nous avons reçu une réponse de la part de la cible. Donc le port 80 de la cible est ouvert.

Découverte des services par hping3

Hping3 permet de révéler des informations sur les ports ouverts comme nous le faisions avec nmap.

sudo hping3 -S --scan 1-1000 scanme.nmap.org

Cette découverte a été effective grâce à l’option --scan. Elle prend pour paramètre la plage de port à scanner.

Sniffing de réseau avec Hping3

Cet outil nous permet aussi de faire du sniffing sur le réseau cible. Pour y arriver, nous allons autoriser la ligne net.ipv4.conf.all.accept_source_route = 0 en enlevant le commentaire (#) qui le précède dans le fichier /etc/sysctl.conf.

sudo hping3 --listen HTTP -I wlan0

l’option --listen prend en argument le nom du paquet que vous voulez renifler

l’option -I précise l’interface sur laquelle le reniflement se fera.

Attaque par déni de service avec Hping3

En effet, une telle attaque est faisable avec hping3 à partir de la commande ci-après:

sudo hping3 -S --flood -V scanme.nmap.org

Cette commande est surtout caractérisée par l’option --flood qui permet d’envoyer les paquets aussi vite que possible sans prendre en compte les réponses de retour.

Par ailleurs, notre attaque peut être aussi menée avec plus d’options comme la commande ci-après:

sudo hping3 -c 20000 -d 120 -S -w 64 -p 80 --flood --rand-source scanme.nmap.org

-d pour fixer la taille du corps du paquet.

-w fixe la taille de la fenêtre TCP. Le défaut est 64.

--rand-source pour envoyer des paquets avec des adresses sources aléatoires.

Usurpation d’adresse IP

Hping3 nous permet de leurrer notre cible avec une autre adresse IP. En effet, la commande ci-après fait l’usurpation d’adresse IP.

sudo hping3 -S <adresse IP cible> -a <adresse IP usurpée>

ou encore

sudo hping3 -S <adresse IP cible> --spoof <adresse IP usurpée>

NB: cette option a pour but de fixer une fausse adresse source, cette option assure que le
système cible n’obtiendra pas votre adresse réelle. Quoi qu’il en soit les réponses seront envoyées à l’adresse usurpée, ainsi vous ne serez pas capable de les voir: Cela justifie le 100% packet loss obtenu sur l’image ci-dessus.

Mode source aléatoire

Ce mode consite à envoyer des paquets à notre cible avec des adresses IP aléatoires. Cette technique est un peu différente de la précédente où nous définissons l’adresse IP à usurper.

En effet, cette technique est possible avec hping3 avec l’option --rand-source

sudo hping3 <adresse IP cible> --rand-source

FIN, URG et PUSH scan

En ajoutant les options –F, -P et –U dans la commande hping3, nous définissons les paquets FIN, PUSH et URG dans les paquets de sonde. A travers cette commande, nous effectuons des analyses FIN, PUSH et URG sur un port spécifique de l’hôte cible. En effet, si le port questionné est ouvert, on n’aura aucune réponse et dans le cas contraire, nous recevrons une réponse avec le flag RST.

sudo hping3 -F -U -P <adresse IP> -p 80 -c 5

Dans notre nous avons effectué le scan sur une cible dont le port 80 est ouvert et le port 800 est fermé.

Le port 80 est ouvert, donc pas de réponse
Le port 800 étant fermé, nous recevons une réponse

Test des IDS/pare-feu

De nombreux pare-feu incluent une règle pour supprimer les paquets TCP qui n’ont pas d’option d’horodatage TCP, ce qui est courant dans les scanners de ports courants. L’option --tcp-timestamp nous permet d’ajouter des informations d’horodatage.

sudo hping3 -S < adresse IP > -p 80 --tcp-timestamp -c 1

Conclusion

Pour bien mener nos missions de pentest, il est plus qu’indispensable de savoir bypasser les pare-feu afin d’obtenir beaucoup plus d’informations et de vecteurs d’attaque. Hping3 fait partie des outils qui nous aident à atteindre ce but.

Hping3 regorge de plusieurs fonctionnalités dont ceux qu’on a pu aborder dans cet article. Il revient au pentesteur de bien l’utiliser en fonction de ses besoins. Vous pouvez en savoir plus sur hping à l’aide la commande man hping3 ou depuis ce lien.

Sur ce, n’oubliez pas de vous abonner à la newsletter pour ne pas rater nos prochains articles.

A très vite !

Leave a Comment

Time limit is exhausted. Please reload CAPTCHA.