You are on page 1of 6

Hping es una exelente herramienta de tipo generador de paquetes TCP, UDP, ICMP, etc.

Que
nos Permite hacer inumerables cosas, entre ellas, testear firewalls, scanner de puertos
(mediante flags), Os Fingerprint, Traceo de rutas, e incluso D.o.Seador, Hping2 es una
utilidad principalmente creada para auditar redes, y realmente cumple su cometido y mas
jajaja.....

Se me ocurrio hacer este manual para subir un poco el nivel de conocimientos de los usuarios,
existe Hping2 para windows y linux, pero prefiero mil veces el de linux (por velocidad y
eficiencia), asi que este manual estara sobre linux:

para comenzar el comando hping -h nos devuelve la lista de comandos (opciones):

Code:
usage: hping 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)
-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
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 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 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-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)


como podran leer el uso de la herramienta es hping ip_o_host y la(s) opciones a utilizar.

Primero que nada explicare que es un flag, aunque los que hayan leeido sobre protocolos no
sera ninguna novedad....

Un flag es una especie de comando, que se incluye en paquetes, que especifica acciones, por
ejemplo, preguntar si podemos conectar (sincronizar), contestar que esta abierto
determinado puerto, comenzar conexion, terminar conexion e incluso enviar datos y
especificar la importancia de dichos datos, cave recalcar que dichos flags o banderas.

En TCP todo esta manejado por paquetes, asi que les recomiendo que vean el siguiente video
tutorial que encontre en youtube:

http://www.youtube.com/watch?v=muh9u_F5oeg

Algo Basico pero igual sirve para entender la teoria de como funciona esto....
ahora enumeremos los principales flags (banderas) TCP:

SYN: Le dice al servidor a conectar que intentamos conectar o sincronizar.
ACK: es una cofirmacion de que los datos anteriores llegaron correctamente.
FIN: Le dice al servidor que queremos cerrar una conexion.
Null: un flag de valor nulo (0) o sea que es un paquete al que se le ah eliminado todos los
flags, este paquete es enviado con el fin de optener un RST ACK o un SYN ACK.
RST: Significa Reset, o sea que reinicie la conexion por que ubo algun error, que estan
filtrados los flags o que esta cerrado el puerto.
PSH: Cuando deseamos enviar una cantidad de informacin grande dividida en paquetes, stos
se van
situando en un buffer de transmisin FIFO (First In First Out) hasta que el ltimo de ellos est
preparado.
Este ltimo paquete tiene activado el flag push e indica que se debe vaciar el buffer y
comenzar el envo
de paquetes.
URG: significa urgente y quiere decir que enviamos un paquete con datos urgentes, tambien
se pueden usar punteros para enviar datos urgentes con normales.

Espero ando que no se me aya pasado nada, continuamos:

ICMP (Internet Control Message Protocol) es un protocolo bastante simple que est
orientado a fines
informativos o de control de errores.

Mensaje ICMP:
0=echo reply
3=destination unreachable
4=source quench
5=redirect
8=echo
11=time exceeded
12=parameter problem
13=timestamp
14=timestamp reply
15=information request
16=information reply
Supongo que se entiende no?...

Continuamos:

Para hacer mas entendible el tema vamos a la practica:
Para comenzar utilizaremos a hping2 como un scanner de puertos basado en flags, esto es
algo avanzado y laborioso pero optenemos exelentes resultados ....

En este ejemplo utilizare el hping2 el cual es la version mas resiente (o la mas resiente que
encontre xD).

Quote
BT ~ # hping2 -c 1 -S -p 80 google.com
HPING google.com (eth0 64.233.187.99): S set, 40 headers + 0 data bytes
len=46 ip=64.233.187.99 ttl=241 id=30495 sport=80 flags=SA seq=0 win=8190 rtt=128.4 ms

Vamos por partes:
-c 1: cuenta los paquetes.
-S: especifica que utilizaremos paquetes con flags SYN.
-p 80: especifica el puerto en este caso 80 (HTTP).
Ahora la respuesta:
ip=64.233.187.99: es la io que resolvio hping2.
ttl=241: Time to Alive.
sport=80: el puerto.
flags=SA: Esto es lo que nos interesa, SA significa que envio un paquete con los flags SYN y
ACK, lo cual quiere decir, que nuestro paquete llego correctamente y que el puerto esta
abierto .
Ahora un ejemplo de puerto cerrado:
Quote
BT ~ # hping2 -c 1 -S -p 20 192.168.1.254
HPING 192.168.1.254 (eth0 192.168.1.254): S set, 40 headers + 0 data bytes
len=51 ip=192.168.1.254 ttl=255 DF id=55848 sport=20 flags=RA seq=0 win=0 rtt=0.6 ms

--- 192.168.1.254 hping statistic ---
1 packets tramitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.6/0.6/0.6 ms
Ahora como podremos darnos cuenta aqui cambio el flag:
flags=RA
En este caso resivimos RST y ACK o sea que el puerto esta cerrado...

Ahora vamos por un puerto filtrado:
En este caso es simple, por que no resiviremos respuesta jajajaja.

Ahora cabe especificar que no solo podemos utilizar el flag SYN para esto, lo cual es muy util,
ya que algunas flags, estan filtradas por el firewall, router, o incluso una configuracion del
iptables en un entorno linux, por lo cual estan otras opciones:

-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)

Solo queda probar , asi incluso podemos saltar algunas protecciones de firewalls,
routers, o configuraciones de seguridad ....

Segunda parte, en base a que la parte 1 no estubo muy bien aclarada, aqui la acompleto xD.

Tipo de Scanneos:
ACK: Este es utilizado para saber si el server esta detras de un firewall, o si el puerto(s),
estan filtrados.
Si obtenemos un ACK el puerto esta abierto o cerrado, y si no resivimos respuesta el puerto
esta filtrado (probablemente detras de un firewall).
SYN: este es utilizado para detectar si un puerto esta abierto o cerrado.
FIN: este sirve para detectar puertos abiertos entre otras cosas, si resivimos un RS ACK, esta
cerrado el puerto, si no recivimos nada, es que el puerto esta filtrado o como dije arriba
detras de un firewall, router, modem, etc, que estorban el envio del paquete.
otra clase de scanneos es el que no lleba ningun flag, tambien es bastante efectivo, y
tambien el scanneo mediante todos los flags, que a mi pareser es el menos efectivo, ya que
rara vez responden el paquete...

Scanneo de Puertos multiples:
la sintaxis es simple:
Quote
BT ~ # hping2 -l eth0 -S xxx.xxx.xxx.xxx -p ++80
es basicamente la sintaxis de los anteriores scanneres solo que al numero de puerto se le
agregan los simbolos "++" antes del numero, ademas como podran observar aqui le especifique
el adaptador de red a utilizar (es descartable esto).

Otra forma de scanneo multiple:
Quote
BT ~ # hping2 -V -8 '20-80' -S xxx.xxx.xxx.xx
Este tipo de scanneo es por medio de rangos de puertos, en esta forma utilize el -V (modo
verboso), -8 (el modo de scanner, tambien es remplazable por --scan, y utilizo el flag SYN
para scannear, que como ya dije arriba se puede cambiar por los otros tipos de scanneo
(dependiendo de lo que queremos hacer).

You might also like