HPING2(8) HPING2(8) NOM hping2 - envoie des paquets TCP/UDP/ICMP arbitraires à des systèmes réseaux RESUME hping2 [ -hvnqVDzZ012WrfxykQFSRPAUXYjJBuTG ] [ -c count ] [ -i wait ] [ -I interface ] [ -9 signature ] [ -a host ] [ -t ttl ] [ -N ip id ] [ -H ip protocol ] [ -m mtu ] [ -o tos ] [ -C icmp type ] [ -K icmp code ] [ -s source port ] [ -p[+][+] dest port ] [ -w tcp window ] [ -O tcp offset ] [ -M tcp sequence number ] [ -L tcp ack ] [ -d data size ] [ -E filename ] [ -e signature ] [ --icmp-ipver version ] [ --icmp-iphlen length ] [ --icmp-iplen length ] [ --icmp-ipid id ] [ --icmp-ipproto protocol ] [ --tcpexit­ code ] hostname DESCRIPTION hping2 est un outil réseau capable d'envoyer des paquets TCP/UDP/ICMP sur commande et d'afficher les réponses de la cible comme le programme ping le fait avec les réponses ICMP. hping2 traite la fragmentation, les contenus de paquets et les tailles arbitraires et peut être utilisé dans le but de transférer des fichiers encapsulés dans les protocoles supportés. En utilisant hping2 vous êtes capa­ bles au moins d'effectuer au moins les tâches suivantes : - Tester les règles d'un firewall - Scanner des ports [en usurpant une adresse] - Tester les performances réseau en utilisant différents protocoles, tailles de paquets, TOS (type de service) et fragmentation. - Découverte de "Path MTU" - Transférer des fichiers même au travers de règles de firewall réellement fachistes. - Comme traceroute avec différents protocoles. - Utilisation comme Firewalk. - Détermination d'OS à distance. - Audit de pile TCP/IP. - Beaucoup d'autres. C'est également un bon outil didactique pour apprendre TCP/IP. hping2 est développe et maintenu par antirez@invece.org et vient sous la version 2 de la licence GPL. Le développement est ouvert donc vous pouvez m'envoyer des patches, suggestions, affronts sans inhibi­ tion. SITE DE TELECHARGEMENT le site principal est à http://www.kyuzz.org/antirez/hping2.html Je veux remercier kyuzz@kyuzz.org pour l'utilisation de l'espace web/bande passante. Également des miroirs seront disponibles dès que possible, voir le fichier MIRRORS pour les détails. 1999 Nov 20 1 HPING2(8) HPING2(8) OPTIONS DE BASE -h --help Montrer l'écran d'aide en écrivant sur la sortie standard, donc vous pouvez rediriger vers less. -v --version Montre les informations de version et l'API utilisée pour accéder au niveau données (data link layer), linux sock packet ou libpcap -c --count count Arrête après avoir envoyé (et reçu) count paquets réponse. Après que le dernier paquet a été envoyé hping2 attend COUNTREACHED_TIMEOUT secondes les réponses du système cible. Vous avez la possibilité de régler COUNTREACHED_TIMEOUT en éditant hping2.h -i --interval Attend wait secondes ou micro secondes entre l'envoie de chaque paquet. --interval X fixe wait à X secondes, --interval uX fixe wait à X micro secondes. Le défaut est d'attendre une seconde entre chaque paquet. En utilisant hping2 pour transférer des fichiers fixer cette option est très important pour augmenter le taux de transfert. Même en utilisant hping2 pour effectuer des scans pas­ sifs/avec usurpation d'adresse vous devriez fixer cette option, voir HPING2-HOWTO pour plus d'infor­ mations. -n --numeric Sortie numérique seulement, aucune tentative ne sera faite pour chercher les noms symboliques pour les adresses système. -q --quiet Sortie silencieuse. Rien n'est affiche excepté les lignes de résume au moment du démarrage et quand c'est fini. -I --interface interface name Par défaut sur les systèmes linux hping2 utilise l'interface de routage par défaut qui est obtenue au travers du système de fichiers /proc. Sur d'autres systèmes ou quand il n'y a pas d'interface de routage par défaut hping2 utilise la première interface non loopback. Quoi qu'il en soit vous avez la possibilité de forcer hping2 à utiliser l'interface dont vous avez besoin en utilisant cette option. Nota bene : vous n'avez pas besoin de spécifier le nom complet, par exemple -I et va cor­ respondre a eth0 ethernet0 myet1 et cetera. Si aucune interface correspond hping2 va essayer d'utiliser lo. 1999 Nov 20 2 HPING2(8) HPING2(8) -V --verbose Active la sortie verbeuse. Les réponses TCP seront affichées comme suit : 40 bytes from 192.168.4.40: flags=RA seq=0 ttl=255 id=19 win=0 rtt=0.1 ms tos = 0 len = 40 seq = 0 ack = 690804780 sum = f4c3 urp = 0 -D --debug Active le mode de débogage, c'est utile quand vous rencontrez quelques problèmes avec hping2. Quand le mode de débogage est activé vous obtiendrez plus d'informations à propos de la détection des inter­ faces, de l'accès au niveau données, des réglages des interfaces, des options d'analyse, de la frag­ mentation, du protocole HCMP et d'autres choses. -z --bind lie CTRL+Z au time to live (TTL) ainsi vous serez capables d'incrémenter/décrémenter le ttl des paquets sortant en pressant CTRL+Z une ou deux fois. -Z --unbind dé-lie CTRL+Z ainsi vous serez capables d'arrêter hping2 SELECTION DE PROTOCOLE Le protocole par défaut est TCP, par défaut hping2 enverra des entêtes TCP sur le port 0 du système cible avec une winsize (ndt : taille de fenêtre) de 64 sans aucun drapeau TCP activé. Souvent c'est la meilleure manière de faire un 'ping caché', utile quand la cible est derrière un fire­ wall qui jette ICMP. De plus un paquet TCP null-flag (ndt : sans drapeau) vers le port 0 a de bonnes probabilités de ne pas être journalisé. -0 --rawip mode RAW IP, dans ce mode hping2 enverra une entête IP avec les données ajoutées avec --signature et/ou --file, voir également --ipproto qui vous autorise à fixer le champ protocole IP. -1 --icmp mode ICMP, par défaut hping2 enverra un paquet ICMP echo-request, vous pouvez fixer un autre type/code ICMP en utilisant les options --icmptype --icmpcode -2 --udp mode UDP, par défaut hping2 enverra des paquets UDP vers le port 0 du système cible. Les options réglables des entêtes UDP sont les suivantes : 1999 Nov 20 3 HPING2(8) HPING2(8) --baseport, --destport, --keep. -9 --listen signature mode d'écoute de HPING2, en utilisant cette option hping2 attend les paquets qui contiennent signature et exporte de la fin de la signature à la fin du paquet. Par exemple si hping2 --listen TEST lit un paquet qui contient 234-09sdflkjs45-TESThello_world il affichera hello_world OPTIONS IP -a --spoof hostname Utiliser cette option dans le 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. Afin de voir comment il est possible d'effectuer des scans avec des adresses usurpées/passifs voir le fichier HPING2-HOWTO. -t --ttl time to live En utilisant cette option vous pouvez fixer le TTL (time to live) des paquets sortant, il est vraisem­ blable que vous utiliserez ceci avec les options --traceroute ou --bind Dans le doute essayez ` hping2 some.host.com -t 1 --traceroute ´. -N --id Fixe le champ ip->id . La valeur du champ id par défaut est aléatoire mais si la fragmentation est activée et que le champ id n'est pas spécifié alors il sera égal à getpid() & 255 , mettre en oeuvre une meilleure solution est dans la liste TODO (ndt : à faire). -H --ipproto Fixe le protocole IP dans le mode RAW IP. -W --winid Le champ id des systèmes Windows* ont un byte ordering (ndt : ordre des octets) différent, si cette option est activée hping2 affichera propre­ ment les champs id des réponses de windows. -r --rel Affiche les incréments du champ id au lieu du champ id. Voir le fichier HPING2-HOWTO pour plus d'infor­ mations. Les incréments ne sont pas calculés comme id[N]-id[N-1] mais en utilisant une compensation de pertes de paquets. Voir le fichier relid.c pour plus d'informations. 1999 Nov 20 4 HPING2(8) HPING2(8) -f --frag Découpe les paquets en fragments, ceci peut être utile afin de tester les performances de la frag­ mentation des piles IP et de tester si certains filtres de paquets sont si faibles qu'ils peuvent être passés en utilisant de petits fragments (anachronique). Par défaut le 'mtu virtuel' (ndt : taille des fragments) est de 16 octets. Voir égale­ ment l'option --mtu -x --morefrag Fixe le drapeau IP "more fragments" (ndt : d'autres fragments), utilisez cette option si vous avez besoin que le système cible envoie un paquet ICMP time-exceeded during reassembly (ndt : délai dépassé durant le réassemblage). -y --dontfrag Fixe le drapeau IP "don't fragment" (ndt : ne pas fragmenter), ceci peut être utilisé pour effectuer un MTU path discovery (ndt : découverte de la valeur minimale de la "taille maximale des paquets" sur le chemin). -m --mtu mtu value Fixe un 'mtu virtuel' différent de 16 quand la fragmentation est activée. Si la taille des paquets est supérieure au 'mtu virtuel' alors la fragmenta­ tion est automatiquement activée. -o --tos hex_tos Fixe Type Of Service (TOS) (ndt : le type de ser­ vice), pour plus d'informations essayez --tos help -G --rroute Enregistrer la route. Inclut l'option RECORD_ROUTE dans chaque paquet envoyé et affiche la route présente dans le tampon du paquet retourné. Notez que l'entête IP n'est suffisamment large que pour neuf routes. Beaucoup de systèmes ignorent ou sup­ priment cette option. Notez également qu'en util­ isant hping vous êtes capables d'utiliser l'enreg­ istrement de la route même si le système cible fil­ tre ICMP. Enregistrer la route est une option IP, non pas une option ICMP, ainsi vous pouvez utiliser l'option d'enregistrement de la route même dans les modes TCP et UDP. OPTIONS ICMP -C --icmptype type fixe le type ICMP, le défaut est ICMP echo request -K --icmpcode code Fixe le code ICMP, le défaut est 0. 1999 Nov 20 5 HPING2(8) HPING2(8) --icmp-ipver Fixe la version IP de l'entête IP contenue dans les données ICMP, le défaut est 4. --icmp-iphlen Fixe la longueur de l'entête IP contenue dans les données ICMP, le défaut est 5 (5 mots de 32 bits). --icmp-iplen Fixe la longueur du paquet IP de l'entête IP con­ tenue dans les données ICMP, le défaut est la taille réelle. --icmp-ipid Fixe le champ IP id de l'entête IP contenue dans les données ICMP, le défaut est aléatoire. --icmp-ipproto Fixe le protocole IP de l'entête IP contenue dans les données ICMP, le défaut est TCP. --icmp-cksum Fixe la somme de contrôle ICMP, le défaut est la somme de contrôle valide. OPTIONS TCP/UDP -s --baseport source port hping2 utilise le port source afin de deviner les numéros de séquence des réponses. Il commence avec un numéro de port source de base, et incrémente ce numéro pour chaque paquet envoyé. Quand un paquet est reçu alors le numéro de séquence peut être cal­ culé comme port.source.reponse - port.source.de.base Le port source de base par défaut est aléatoire, en utilisant cette option vous êtes capables de fixer un numéro différent. Si vous avez besoin que le port source ne soit pas incrémenté pour chaque paquet envoyé utilisez l'option --keep -p --destport [+][+]dest port Fixe le port destination, le défaut est 0. Si le caractère '+' précède le numéro de port destination (i.e. +1024) le port destination sera incrémenté pour chaque paquet reçu. Si deux '+' précèdent le numéro de port destination (i.e. ++1024), le port destination sera incrémenté pour chaque paquet envoyé. Par défaut le port destination peut être modifié interactivement en utilisant CTRL+z. --keep garde constant le port source, voir --baseport pour plus d'informations. 1999 Nov 20 6 HPING2(8) HPING2(8) -w --win Fixe la taille de la fenêtre TCP. Le défaut est 64. -O --tcpoff Fixe un faux offset (ndt : décalage) des données TCP. L'offset des données normal est tcphdrlen / 4. -M --tcpseq Fixe le numéro de séquence TCP. -L --tcpack Fixe le drapeau TCP ack. -Q --seqnum Cette option peut être utilisée afin de collecter les numéros de séquence générés par le système cible. Ceci peut être utile quand vous avez besoin d'analyser si les numéros de séquence TCP sont prévisibles. Exemple de sortie : #hping2 win98 --seqnum -p 139 -S -i u1 -I eth0 HPING uaz (eth0 192.168.4.41): S set, 40 headers + 0 data bytes 2361294848 +2361294848 2411626496 +50331648 2545844224 +134217728 2713616384 +167772160 2881388544 +167772160 3049160704 +167772160 3216932864 +167772160 3384705024 +167772160 3552477184 +167772160 3720249344 +167772160 3888021504 +167772160 4055793664 +167772160 4223565824 +167772160 La première colonne reporte les numéros de séquence, la seconde la différence entre le numéro de séquence courant et le dernier. Comme vous pou­ vez le voir les numéros de séquence du système cible sont prévisibles. -F --fin fixe le drapeau TCP FIN. -S --syn fixe le drapeau TCP SYN. -R --rst fixe le drapeau TCP RST. -P --push fixe le drapeau TCP PUSH. 1999 Nov 20 7 HPING2(8) HPING2(8) -A --ack fixe le drapeau TCP ACK. -U --urg fixe le drapeau TCP URG. -X --xmas fixe le drapeau TCP Xmas. -Y --ymas fixe le drapeau TCP Ymas. OPTIONS COMMUNES -d --data data size fixe la taille du corps du paquet. Attention, en utilisant --data 40 hping2 ne générera pas des paquets de 40 octets mais de entête_de_protocole+40 octets. hping2 affichera en information la taille des paquets comme première ligne de sortie, comme ceci : HPING www.yahoo.com (ppp0 204.71.200.67): NO FLAGS are set, 40 headers + 40 data bytes -E --file filename Utilisez le contenu du fichier filename pour rem­ plir les données du paquet. -e --sign signature remplit d'abord longueur de signature octets de données avec signature. Si longueur de signature est plus grand que la taille des données alors un message d'erreur sera affiché. Cette option peut être utilisée sans risque avec l'option --file filename , l'espace de données restant sera rempli en utilisant le fichier filename -j --dump Affiche les paquets en hexadécimal. -J --print Affiche les caractères imprimables des paquets reçus. -B --safe Active le protocole safe, en utilisant cette option les paquets perdus dans un transfert de fichier seront renvoyés. Par exemple afin d'envoyer le fichier /etc/passwd depuis le système A au système B vous pouvez utiliser ce qui suit : [host_a] # hping2 host_b --udp -p 53 -d 100 --sign signature --safe --file /etc/passwd [host_b] # hping2 host_a --listen signature --safe --icmp 1999 Nov 20 8 HPING2(8) HPING2(8) -u --end Si vous utilisez l'option --file filename , cela vous dit quand vous atteignez la fin du fichier. D'ailleurs cela prévient que l'autre côté accepte plus de paquets. S'il vous plaît, pour plus d'informations voir le fichier HPING2-HOWTO. -T --traceroute Mode traceroute. En utilisant cette option hping2 incrémentera le ttl pour chaque paquet ICMP time to live 0 during transit reçu. Essayez hping2 host --traceroute --ttl 1. Cette option implique --bind. --tcpexitcode Quitte avec le champ tcp->th_flag du dernier paquet reçu comme code de retour. Utile pour les scripts qui ont besoin, par exemple, de savoir si le port 999 de quelque système répond avec SYN/ACK ou avec RST en réponse à un SYN, i.e. le service est lancé ou arrêté. AUTEUR Salvatore Sanfilippo , avec l'aide des personnes mentionnées dans le fichier CHANGES. VOIR AUSSI ping(8), traceroute(8), ifconfig(8) TRADUCTEUR Denis Ducamp 1999 Nov 20 9