Découvrez Hping3 pour manipuler les paquets TCP/IP et mener des attaques
Lorsque nous voulons vérifier la connectivité, nous utilisons tous la commande Ping, un outil qui envoie des paquets ICMP à un serveur spécifique pour savoir si la communication est correcte ou s’il y a un problème. Cependant, cet outil est très simple et ne permet pratiquement aucune modification des paquets, ni n’utilise d’autres protocoles pour envoyer des informations. Hping3 est une application plus avancée, qui nous permettra de modifier les paquets envoyés via le protocole TCP / IP, afin que nous puissions avoir un contrôle beaucoup plus important sur ces paquets, en pouvant les adapter en fonction de nos besoins.
Principales caractéristiques
Hping3 est une application de terminal pour Linux qui nous permettra d’analyser et d’assembler facilement des paquets TCP/IP. Contrairement à un ping classique utilisé pour envoyer des paquets ICMP, cette application permet l’envoi de paquets TCP, UDP et RAW-IP. Outre l’analyse des paquets, cette application peut également être utilisée à d’autres fins de sécurité, par exemple pour tester l’efficacité d’un pare-feu à travers différents protocoles, la détection de paquets suspects ou modifiés, ou encore la protection contre les attaques. système ou un pare-feu.
Dans le passé, cet outil était utilisé pour des problèmes de cybersécurité, mais nous pouvons également l’utiliser pour tester des réseaux et des hôtes. Certaines des principales applications que nous pouvons faire avec cet outil sont les suivantes :
- Vérifiez la sécurité et le fonctionnement des pare-feu.
- Utilisez-le comme analyse de port avancée, bien qu’il soit préférable d’utiliser Nmap pour cette tâche.
- Tests de réseau utilisant différents protocoles, ToS, fragmentation, etc.
- Découvrez le MTU sur l’itinéraire manuellement.
- Traceroute avancée utilisant tous les protocoles pris en charge
- Empreinte digitale à distance du système d’exploitation
- Vérifiez le temps passé
- Audit de pile TCP/IP
En raison du grand nombre de possibilités de cet outil, dans RedesZone, nous allons vous apprendre les principales utilisations et comment le faire. Cet outil, on pourrait dire que c’est un «ping» vitaminé, et c’est qu’on peut utiliser un grand nombre d’options avancées afin d’attaquer un hôte, vérifier si on a un port ouvert et bien plus encore. Bien que le programme par excellence pour effectuer un scan de port soit Nmap, et nous avons aussi Nmap NSE pour avoir des extensions supplémentaires et augmenter les fonctionnalités, ce programme Hping3 a aussi la possibilité d’effectuer un » scan de port «, car on peut envoyer des paquets TCP et UDP à différents hébergeurs, et vérifiez s’ils nous répondent ou non, de cette manière, avec un petit script créé par nos soins et ce programme Hping3, nous aurons la possibilité de faire un scan rapide des ports.
Installer Hping3
Hping3 est disponible dans les dépôts officiels d’Ubuntu, Debian et aussi d’autres distributions Linux, donc pour l’installer il suffit d’ouvrir un terminal (ou un gestionnaire de paquets comme Synaptic) et de le taper :
sudo apt install hping3
L’outil occupera environ 3 600 Ko qui, une fois installé, nous pourrons commencer à l’utiliser. Il existe des distributions Linux sur lesquelles ce programme Hping3 est déjà installé par défaut, comme Kali Linux, la distribution populaire orientée vers les audits de sécurité où nous aurons ceci et des dizaines d’autres outils afin de vérifier la sécurité de différentes cibles et d’exploiter différentes vulnérabilités.
Liste des commandes Hping3
Les fonctions prises en charge par ce programme sont immenses. De l’exécution d’un simple ping à l’envoi de paquets via un port spécifique, même en masquant l’adresse IP source. Si nous voulons connaître en profondeur tous les paramètres que ce programme nous offre, nous pouvons consulter l’aide incluse dans l’outil simplement en tapant dans le terminal :
hping3 --help
Utilisation basique de l’outil :
L’utilisation de cet outil est très simple, mais nous disposons d’un grand nombre d’arguments afin d’augmenter ses fonctionnalités, comme lancer un certain nombre de paquets, envoyer des paquets avec un certain intervalle d’attente, envoyer des paquets à «inonder» vers un objectif et effectuer un déni de service, la possibilité de compter les paquets envoyés et reçus par les différents hôtes, et même un mode debug pour voir à bas niveau ce qui se passe sur le réseau.
- v –version affiche la version actuelle de hping3
- -c –count compteur de paquets
- -i –timeout d’intervalle (uX pour X microsecondes, par exemple -i u1000)
- –Alias rapides pour -i u10000 (10 paquets par seconde)
- –Alias plus rapide pour -i u1000 (100 paquets par seconde)
- –Flood envoie des paquets aussi vite que possible, n’affiche pas les réponses.
- -n –sortie numérique avec des nombres
- -q –commande silencieuse sans l’afficher à l’écran
- -I –interface nom de l’interface, si rien n’est défini, par défaut c’est l’interface de la porte par défaut ci-dessus.
- -V –mode verbeux pour le débogage
- -D – informations de débogage de débogage
- -z –bind bind ctrl + za ttl (par défaut le port de destination)
- -Z –unbind délie ctrl + z
- –Bip bip pour chaque paquet reçu qui correspond
Modes :
Ce programme Hping3 a plusieurs modes de fonctionnement, le plus important est la façon d’envoyer des paquets TCP directement, en fait, c’est le mode par défaut de Hping3, cependant, nous avons également la possibilité d’envoyer des données via UDP, ICMP et même en RAW IP entre autres.
- Le mode par défaut est TCP
- -0 -mode IP RAW rawip
- -1 –icmp mode ICMP
- -2 –udp mode UDP
- -8 –mode de balayage Mode de balayage.
- -9 –Mode d’écoute prêt
Exemple : hping –scan 1-30,70-90 -S www.target.com
IP :
Ce programme nous permet de configurer l’adressage IP source et destination, de cette manière, nous pouvons créer une adresse IP source pour la falsifier, nous pouvons également configurer plus à un niveau bas pour fragmenter les paquets envoyés, le MTU et bien d’autres options avancées dans le but de traverser les pare-feu.
- -a –spoof usurper l’adresse IP source
- –Rand-dest adresse IP de destination aléatoire.
- – Adresse IP source aléatoire de source aléatoire.
- -t –ttl ttl (par défaut 64)
- -N –id id (par défaut aléatoire)
- -W -winid utilise l’ordre des octets win * id
- -r –rel relativise le champ id (pour estimer le trafic hôte)
- -f –frag fragmente les paquets en plusieurs fragments, peut traverser des ACL faibles
- -x –plus de fragments de fragments plus
- -y –dontfrag ne fragmente pas les paquets.
- -g –fragoff définit l’offset du fragment
- -m –mtu définit un MTU virtuel, cela implique que le fragment du paquet est supérieur au MTU.
- -o –tos type de service (par défaut 0x00), essayez de faire –tos help
- -G –rroute inclut l’option RECORD_ROUTE et affiche le tampon de chemin
- –Lsrr de routage de source lâche et journal de route
- –Routage source strict Ssrr et journal de route
- -H –ipproto définit le protocole IP, uniquement pour le mode IP RAW.
ICMP :
Dans le cas où vous utilisez le protocole ICMP, nous pouvons également configurer ce protocole en détail pour l’adapter aux besoins des utilisateurs.
- -C –icmptype Type ICMP (par défaut, la demande d’écho ICMP)
- -K –icmpcode Code ICMP (la valeur par défaut est 0)
- –Force-icmp envoie tous les types ICMP (par défaut, il n’envoie que les types pris en charge)
- –Icmp-gw définit l’adresse de passerelle par défaut pour la redirection ICMP (par défaut 0.0.0.0)
- –Icmp-ts alias pour –icmp –icmptype 13 (horodatage ICMP)
- –Icmp-addr alias pour –icmp –icmptype 17 (adresse de masque de sous-réseau ICMP)
- –Icmp-help affiche l’aide pour les autres options icmp.
Codes ICMP
Il est très utile de connaître certains codes ICMP que hping3 pourrait nous montrer, ci-dessous, vous avez tous les plus utilisés :
TCP/UDP
- -s –baseport port source de base, la valeur par défaut est aléatoire
- -p –destport [+] [+] <port> position de destination (par défaut 0) ctrl + z inc / dec
- -k –keep garder le port source
- -w –win taille de la fenêtre, par défaut 64
- -O –tcpoff définit le décalage des données tcp sur false (au lieu de tcphdrlen / 4)
- -Q –seqnum affiche uniquement le numéro de séquence
- -b –badcksum (essayer d’) envoyer des paquets avec la somme de contrôle IP falsifiée, de nombreux systèmes corrigeront cette somme de contrôle lors de l’envoi du paquet, vous aurez donc une somme de contrôle erronée au niveau UDP / TCP.
- -M –setseq définit le numéro de séquence TCP
- -L –setack définit TCP ack
- -F –fin définit le drapeau FIN
- -S –syn définit le drapeau SYN
- -R –rst définit l’indicateur RST
- -P –push définit l’indicateur PUSH
- -A –ack définit l’indicateur ACK
- -U –urg définit le drapeau URG
- -X –xmas définit l’indicateur X inutilisé (0x40)
- -Y –ymas définit l’indicateur Y inutilisé (0x80)
- –Tcpexitcode utilise le dernier tcp-> th_flags comme code de sortie
- –Tcp-mss active l’option TCP MSS avec la valeur donnée
- –Tcp-timestamp permet à l’option d’horodatage TCP de deviner la disponibilité.
Options communes à tous
- d –taille des données, par défaut c’est 0.
- -E –fichier les données d’un fichier.
- -e –sign ajoute une signature
- -j –dump des paquets de vidage en hexadécimal
- -J –print vide les caractères imprimables
- -B –safe active le protocole « safe »
- -u –end vous indique quand un fichier a atteint la fin
- -T –traceroute mode traceroute (implique –bind et –ttl 1)
- –Tr-stop Quitter lorsque le premier paquet non-ICMP est reçu en mode traceroute
- –Tr-keep-ttl Maintient le TTL source fixe, utile pour surveiller un seul saut
- –Tr-no-rtt Ne calcule pas et n’affiche pas les informations RTT en mode traceroute
- Description du package ARS (nouveau et instable)
- –Apd-send Envoyer des paquets décrits avec APD
Exemples d’utilisation de Hping3
Test de ping simple
Nous pouvons utiliser cet outil comme la commande ping conventionnelle, en obtenant pratiquement les mêmes résultats. Pour cela, il suffit de taper :
hping3 www.google.es
Et nous verrons comment ce test de connexion simple est effectué. (Nous pouvons changer le domaine Google en un autre ou utiliser directement une adresse IP pour le cingler).
Tracer le chemin de connexion
De la même manière que l’option » tracert » sous Windows ou » traceroute » sous Linux, avec cet outil, nous pouvons également suivre tous les sauts entre les réseaux d’un paquet depuis le moment où il quitte notre ordinateur jusqu’à ce qu’il atteigne sa destination, en pouvant savoir à tout moment en cas de problème de connexion.
Pour cela, il suffit de taper :
hping3 redeszone.net -t 1 --traceroute
Analyse des ports à l’aide de l’indicateur TCP SYN
Cet outil nous permet également d’envoyer des paquets sous le protocole TCP, dans le plus pur style Nmap. Pour effectuer un scan via cette méthode, nous allons taper dans le terminal «hping3 –S [Destination IP] –p [Port]», le résultat étant similaire au suivant :
hping3 -S www.google.es –p 80
Le résultat de ce test renverra un drapeau SA , ce qui signifie qu’il correspond à SYN/ACK , c’est-à-dire que la communication a été acceptée, ou ce qui revient au même, que le port est ouvert . Sinon, si la valeur est RA cela correspond à RST / ACK ou ce qui est le même, que la communication n’a pas été effectuée correctement car le port est fermé ou filtré.
De cette façon, nous pourrons savoir, par exemple, si la communication est autorisée vers un certain port, ou si sinon le pare-feu le filtre.
Signer des packages avec un fichier texte personnalisé
Il est possible d’utiliser cet outil pour modifier les colis que nous envoyons et y insérer un message personnalisé semblable à une signature. Pour cela, il suffit de taper :
hping3 redeszone.net -d 50 -E firmaredeszone.txt
Cette commande introduira dans les packages Ping le contenu du fichier txt indiqué. Si nous analysons ces packages avec un logiciel approprié tel que WireShark, nous verrons qu’ils contiennent le contenu du fichier en question.
Les paramètres saisis signifient :
- -d : La longueur du message que nous allons saisir, dans ce cas, 50.
- -E : Fichier à partir duquel nous allons prendre la signature du message que nous voulons introduire dans les packages.
Nous pouvons également utiliser d’autres paramètres, par exemple, -p pour indiquer le port auquel nous voulons envoyer ces paquets ou -2 pour envoyer les paquets via le protocole UDP.
Générer plusieurs requêtes pour tester la protection DoS et DDoS
Cet outil nous permettra également de vérifier la stabilité de notre système contre les attaques réseau telles que DoS et DDoS, en générant de vrais tests, soit vers localhost, soit vers un autre serveur à l’intérieur (ou à l’extérieur) du réseau.
Nous pouvons effectuer une série de pings uniques en modifiant l’adresse IP source de la même dans les paquets TCP / IP en tapant simplement :
hping3 --rand-source 192.168.1.1
De même, nous pouvons ajouter le paramètre –flood pour que les paquets soient envoyés en masse en temps réel. De cette façon, nous pourrons vérifier, d’une part, si notre pare-feu fonctionne et, d’autre part, dans quelle mesure notre système réagit à une menace d’attaque DDoS.
Pour ce faire, nous taperons :
hping3 --rand-source --flood 192.168.1.1
En quelques secondes, nous avons généré plus de 25 000 paquets, nous devons donc faire attention car notre réseau peut être bloqué et inutilisable.
Avec cela, un grand nombre de paquets avec une «fausse origine» vont commencer à être générés (grâce au paramètre rand-source) qui seront envoyés en continu au serveur de destination (dans ce cas 192.168.1.1). De cette façon, nous pouvons vérifier la robustesse de notre système contre les attaques DDoS car, si le système cesse de fonctionner ou tombe en panne, il peut y avoir un échec de configuration et nous devons appliquer les mesures correspondantes pour éviter que cela ne se produise dans un environnement réel.
Cet outil est très utile, même s’il doit toujours être utilisé dans des environnements fermés et contrôlés car sortir à l’extérieur est possible que nous finissions par mener une attaque par déni de service sur une équipe que nous ne devrions pas, cela étant illégal et peut finir par être sanctionné pour il.
Nous vous recommandons d’ accéder à la page MAN PAGE officielle de hping pour connaître toutes vos options.