Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Myslide - Es Manual-Hping3 PDF
Myslide - Es Manual-Hping3 PDF
En vista de que no he encontrado un manual que hable bien amplia mente sobre las posibilidades
que nos brinda hping, me parece interesante comenzar a dedicar tiempo a comenzar a darle forma a
la idea de tener un manual que explique y ejemplifique el uso de hping. Sin embargo, existen varios
artculos dispersos en la web, los cuales voy a citar y al final de este artculo podrn encontrar una
lista de los mas interesantes.
Preeliminares
Como reza la pagina oficial de hping, esta herramienta de linea de comando, esta inspirada el
comando ping de unix, sin embargo su utilidad es 1024 veces superior (lo de mil 1024 es un chiste
geek). Su finalidad es la de poder crear paquetes personalizados para poder analizar las respuestas.
Dentro de sus funciones, con hping podemos hacer:
Firewall testing
Advanced port scanning
Network testing, using different protocols, TOS, fragmentation
Manual path MTU discovery
Advanced traceroute, under all the supported protocols
Remote OS fingerprinting
Remote uptime guessing
TCP/IP stacks auditing
Actualmente hping tiene una versin 3, la cual nos permite realizar scripts sobre tcl para poder crear
nuestras propias herramientas, como veremos mas adelante.
El primer problema que muchos encuentran al querer utilizar hping, es que hping no es una
herramienta que como muchas otras le especificamos un target y esperamos ver resultados. Para
poder utilizar hping, necesitamos conocer exactamente que estamos haciendo.
Por eso, antes de continuar leyendo te recomiendo que obtengas conocimientos en TCP, UDP, IP,
ICMP y el Modelo OSI y DOD. Para los que estn interesados en ms que aprender alguna receta
interesante, les recomiendo encarecidamente leer los siguientes RFC (estan en espaol):
RFC 768 Protocolo UDP (original)
RFC 793 Protocolo TCP (original)
RFC 791 Protocolo IP (original)
RFC 702 Protocolo ICMP (original)
Para los que necesitan recordar el funcionamiento del modelo osi, pueden ver una representacin
muy interesante en este link
Opciones generales
Hping tiene un funcionamiento parecido al ping en el sentido de que envia reiteradamente un
paquete ( en el caso de hping uno armado por nosotros ) hasta que cortemos la ejecucin del
programa con un control C.
- Para poder elegir la cantidad de veces que se quiere enviar el paquete podemos usar la opcin -c la
cual especifica el nmero de paquetes que queremos enviar (Si no, enva paquetes hasta que lo
cortemos con un control c).
- Para elegir el intervalo (la rapidez) con que envia los paquetes usamos -i y como argumento el
intervalo de tiempo (en segundos) entre paquete y paquete. Si quisieramos usar microsegundos en
lugar de segundos utilizamos u100 para 100 microsegundos.
Ademas, podemos usar los alias fast, faster o flood para enviar paquetes a 10000
--fin
--syn
--rst
--push
--ack
--urg
set
set
set
set
set
set
FIN flag
SYN flag
RST flag
PUSH flag
ACK flag
URG flag
Con estas opciones podemos decidir las flags que llevar los paquetes TCP, de esta forma simple,
podemos elegir que las lleve todas, ninguna, o las que querramos.
La mayoria de los distintos tipos de escaneos TCP dependen de estos flags. El mas comn, utilizado
por los scanners mas simples, es el SYN scan, el cual consiste en enviar un SYN ( indicador de
inicio de conexin ) y esperar la respuesta ( normalmente SYN/ACK si el puerto esta abierto, y RST
si esta cerrado ).
Comprendiendo esto, podemos comenzar a usar hping como un escaneador de puertos:
--- 192.168.1.1 hping statistic --5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 1.5/1.6/2.0 ms
Un ejemplo simple, pero eficiente para mostrar el funcionamiento de esta dichosa herramienta:
Con -c 5 le pedimos a hping que solo envie 5 paquetes, al puerto 80, con el SYN activado en la
cabecera TCP, en consecuencia, el host target, nos responde un paquete TCP, con puerto de origen
80, y los flags SYN y ACK.
Esta respuesta, corresponde a un host target con el puerto 80 abierto, ya que los flags SYN/ACK
son indicadores de que el SYN inicial fue recibido.
Si recordamos lo que mas arriba mencion acerca de la opcion de Control Z, podemos convertir a
hping en un tcp-port-scanner:
Isis:~# hping3 -p 1 -S 192.168.1.1
HPING 192.168.1.1 (eth0 192.168.1.1): S set, 40 headers + 0 data bytes
2:
3:
20: len=46 ip=192.168.1.1 ttl=64 id=40704 sport=20 flags=RA seq=24
win=0 rtt=1.3 ms
len=46 ip=192.168.1.1 ttl=64 id=40706 sport=20 flags=RA seq=25 win=0
rtt=1.3 ms
len=46 ip=192.168.1.1 ttl=64 id=40708 sport=20 flags=RA seq=26 win=0
rtt=1.3 ms
21: len=46 ip=192.168.1.1 ttl=64 id=40710 sport=21 flags=RA seq=27
win=0 rtt=1.4 ms
len=46 ip=192.168.1.1 ttl=64 id=40712 sport=21 flags=RA seq=28 win=0
rtt=1.4 ms
len=46 ip=192.168.1.1 ttl=64 id=40714 sport=21 flags=RA seq=29 win=0
rtt=1.4 ms
22:
23: len=46 ip=192.168.1.1 ttl=64 id=40716 sport=23 flags=RA seq=32
win=0 rtt=1.3 ms
35: z^C
--- 192.168.1.1 hping statistic --45 packets transmitted, 7 packets received, 85% packet loss
round-trip min/avg/max = 1.3/1.3/1.4 ms
Observemos que el parametro de -p es 1 (es decir puerto TCP 1), y al no haber respuesta (ni un RST
de parte del host target) Hping no muestra ninguna respuesta. Luego, al presionar Control Z, en
lugar de enviar los paquetes al puerto nmero 1, lo hace al puerto 2, as sucesivamente, hasta el
puerto 20, donde comenza a recibir respuestas RA (RST / ACK ).
Interpretar esta respuesta, involucra un poco de estudio acerca del host objetivo, sin embargo, a
priori, podemos ver, que los puertos del 1 al 19, no responden nada, y sin embargo, el puerto 20
responde RST/ACK. Es decir, que el objetivo, reacciona de manera distinta frente al puerto 20 (lo
mismo pasa en el puerto 21 y 23 ).
Esto se debe generalmente, a reglas de filtrado, como podemos ver los puertos del 1 al 19, han de
estar cerrados, y existe una regla que impide todo tipo de egreso y/o ingreso desde/a estos puertos
(an las respuestas RST), a diferencia de los puertos 20, 21, y 23, en los cuales, nuestro paquete
con flag SYN, es recibido, procesado y respondido, indicando que el puerto correspondiente esta
cerrado.
Nmap tambien nos muestra esta diferencia, de la siguiente forma:
Notemos, que nmap (en un escaneo normal) nos muestra solo los puertos 20,21, y 23, ya que es de
los cuales ha recibido respuestas ( RST/ACK indicando que dichos puertos estan cerrados, closed)
Este caso puede darse por ejemplo, en un host, donde el puerto esta abierto en el firewall, pero no
existe ningn daemon/sistema/programa escuchando en dicho puerto. Tambin puede darse de un
router haciendo forwarding a un puerto cerrado.
Para dar un cierre a esta primera parte, imitaremos con hping los algunos de los distintos tipos de
escaneos que pueden realizarse con nmap, para que comprendamos exactamente como funcionan:
SYN Scan:
Como vimos anteriormente, un SYN scan TCP SYN (en nmap la opcion -sS ) lo hacemos de la
siguiente manera:
Isis:~# hping -c 1 -S -p 80 google.com
HPING google.com (eth0 74.125.65.147): S set, 40 headers + 0 data
bytes
len=46 ip=74.125.65.147 ttl=53 id=13915 sport=80 flags=SA seq=0
win=5720 rtt=155.5 ms
--- google.com hping statistic --1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 155.5/155.5/155.5 ms
Enviamos un paquete TCP con flag SYN activado y recibimos uno con flags SYN/ACK,
verificando que el puerto 80 esta abierto, si la respuesta fuera RA, es decir RST/ACK, estaramos
frente a un puerto cerrado, y si no hubiera respuesta, el puerto 80, est de alguna manera filtrado.
FIN Scan:
El FIN Scan consiste en eviar al paquete TCP con el flag FIN activado (en nmap -sF ), algo que no
sucede en ninguna conexin normal.
--- mytarget.com hping statistic --1 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
--- mytarget.com hping statistic --1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.7/0.7/0.7 ms
--- mytarget.com hping statistic --1 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
--- mytarget.com hping statistic --1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.7/0.7/0.7 ms
El analisis de las respuestas es el mismo, RA para los puertos cerrados, y sin respuesta para los
abiertos / filtrados.
Sin embargo, insisto, estas respuestas van a variar contra que sistema se prueben.
Nota: en lugar de usar -F -P -U, podemos abreviar usando -X
Win Scan:
Para culminar esta primera parte, abandonamos un poco los flags TCP, y nos concentramos en otro
parmetro de la cabezera, a saber, el Win.
Al iniciarse una conexin TCP, se negocia el tamao de los paquetes que cada parte de la conexin
puede procesar antes de enviar una confirmacin (ACK) , este tamao es el Window Size (aka
Win).
Ahora bien, observemos esta respuesta:
Isis:~# hping3
-c 1 -S -p 21 mytarget.com
--- 201.235.102.256 hping statistic --1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 1.6/1.6/1.6 ms
En este caso, si jusgamos la respuesta por las flags (RA), el puerto pareceria cerrado, sin embargo,
si esto fuera as, el win de respuesta debera ser 0, como en el ejemplo del Xmas scan, por ejemplo.
Queda claro entonces, que alguna regla/firewall/router esta filtrando la respuesta, para saber si este
filtro esta en el mismo host o en otro distinto, vas a tener que esperar a la segunda parate de este
manual.
Por el momento, solo hemos visto como usar hping como un simple scanner de puertos TCP.
Comparamos el uso de hping con el de nmap, para quienes esten famialiarizados con el el uso de
esta herramienta, pero veremos que an tiene mas potencial que el que hemos mostrado hasta ahora.
Sin embargo, tendrn que esperar a la segunda parte del manual! Hasta la prxima!
TTL
Esta propiedad del paquete ip, aunque puede parecer trivial, en realidad nos puede brindar bastante
informacin si la usamos bien.
Para empezar, si estamos sentados frente al host destino, cuando recibimos un paquete ip ( sea tcp,
udp o icmp), podemos calcular por cuantos routers paso el paquete. Esta informacin puede
parecernos indiferente, sin embargo como veremos no lo es.
En segundo lugar, como cada sistema operativo puede elegir con que TTL envia/responde un
paquete, calcular con que TTL se envi el paquete, nos proporciona informacin sobre el sistema
operativo.
Manos al teclado
Veamos como responde Google, ante un ping comn y corriente:
Isis:~# ping -c 3 google.com
PING google.com (209.85.195.104) 56(84) bytes of data.
64 bytes from eze03s01-in-f104.1e100.net (209.85.195.104): icmp_seq=1
ttl=57 time=22.2 ms
64 bytes from eze03s01-in-f104.1e100.net (209.85.195.104): icmp_seq=2
ttl=57 time=14.5 ms
64 bytes from eze03s01-in-f104.1e100.net (209.85.195.104): icmp_seq=3
ttl=57 time=13.6 ms
--- google.com ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2006ms
rtt min/avg/max/mdev = 13.684/16.839/22.254/3.846 ms
Tal como pensamos, hay 7 saltos, desde donde enviamos nuestro ping a google.
Este mismo procedimiento, se puede imitar con hping, pero sera complicarse un poco, siendo que
tenemos estas herramientas que son muy comunes y simples. Sin embargo, habiendo entendido
esto, podemos usar hping para una tcnica un tanto mas avanzada.
--- estbissio.dnsalias.net hping statistic --3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
Cada vez que presionamos Control Z, hping aumenta el ttl en uno, as de tener un ttl de uno ( -t 1 )
paso a tener ttl 2, 3, 4 (donde no recibimos respuesta), 5, y 6 donde finalmente obtenemos una
respuesta, indicando que el puerto 21 esta a la escucha ( flags=SA ).
Cual es el beneficio ente hping y traceroute que hace esto automaticamente?
Bien, una de las diferencias, es que al hacer esto puerto por puerto podemos encontrar los puertos
que han sido redirigidos a otro host dentro de la red interna del target.
Repitamos este proceso, en distintos puertos, y si obtenemos una respuesta de distintos TTLs, ya
podemos empezar a desconfiar de que provengan del mismo host.
Veamos dos ejemplos:
win=16384 rtt=39.1 ms
Aqui visualizamos, como haciendo el mismo analisis a dos puertos diferentes, obtenemos las
respuestas con distintos TTLs ( 122 y 123 ).
Esto sucede por que el puerto 22 esta siendo redirigido a un host interno de la red.
Razon: El router que provee el acceso a internet, en la red target (nasa.dnsalias.net), al redirigir el
puerto, decrementa en uno el ttl cuando nos envia la respuesta.
Esta simple tecnica nos permite tener mas datos sobre el target, y nos permite adentrarnos en otras
tecnicas que podemos utilizar con Hping
Pero quedara para el proximo capitulo
Fuentes:
http://www.netsecure.com.ar/2010/05/20/manual-tutorial-de-hping-con-ejemplos-i/
http://www.netsecure.com.ar/2010/10/20/manual-tutorial-de-hping-con-ejemplos-ii/