Hping est un outil Open source en ligne de commande permettant de manipuler des paquets IP. Outre le fait que cet outil soit une excellent alternative à la – basique mais indispensable – commande ping, celui-ci rajoute son lot de fonctionnalités. Il est ainsi possible d’effectuer des requêtes TCP ou UDP personnalisées sur un port de destination quelconque, et, via le passage de certaines options en ligne de commande, vérifier ainsi la sécurité et le comportement d’une pile TCP/IP distante.
Ce billet consistant simplement à introduire l’outil Hping, nous allons dans un premier temps simplement faire un aperçu des options disponibles et donc des utilisations potentielles.
usage: hping host [options]
-h –help show this help
-v –version show version
-c –count packet count
-i –interval wait (mX for X milliseconds, for example -i m10)
–fast alias for -i m100 (10 packets for second)
-n –numeric numeric output
-q –quiet quiet
-I –interface interface IP (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
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 destination 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 dont 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 0×00), 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 [+][+]<port> 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 (0×40)
-Y –ymas set Y unused flag (0×80)
–tcpexitcode use last tcp->th_flags as exit code
–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)
-h –help show this help
-v –version show version
-c –count packet count
-i –interval wait (mX for X milliseconds, for example -i m10)
–fast alias for -i m100 (10 packets for second)
-n –numeric numeric output
-q –quiet quiet
-I –interface interface IP (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
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 destination 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 dont 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 0×00), 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 [+][+]<port> 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 (0×40)
-Y –ymas set Y unused flag (0×80)
–tcpexitcode use last tcp->th_flags as exit code
–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)
Comme vous pouvez le lire ci-dessus, la manipulation des flags TCP ou encore les champs de l’entête IP est aisémment réalisable. On peut donc par exemple envoyer des paquets avec une adresse IP source spoofée (option -a), scanner les ports ouverts sur une machine ou encore faire de la reconnaissance d’OS distant. Toutefois, de telles utilisations nécessitent une bonne connaissance des protocoles TCP/IP pour en exploiter pleinement les capacités.
Certains cas d’utilisation seront détaillés dans des billets ultérieurs afin de bien appréhender l’utilité de cet outil.
L’outil est disponible sur linux et windows, et téléchargeable directement sur le site d’HPing.
Aucun commentaire:
Enregistrer un commentaire