Net Secure

Netsecure Argentina Hacklab Weblog!

Skip to: Content | Sidebar | Footer

Manual / Tutorial de Hping ( con ejemplos ) II

20 octubre, 2010 (10:27) | Networking | By: Lord Epzylon

Una vez visto el uso mas común de hping (aquí), podemos avanzar un poco mas en el uso de esta  herramienta.
En la entrega anterior vimos como usar hping como un port scanner ( uno avanzado ).  En esta oprtunidad revisaremos una  utilidad que hping nos presenta, y que no encontramos en muchas herramientas más, a saber Trace route avanzado o bien, firewall walking.

Concepto:

Todo paquete ip, tiene una propiedad llamada TTL o Time to life, que originalmente fue pensado para medir el tiempo que un paquete “vivia” en una red. El paquete ip salia del host de origen con un TTL de (por ejemplo) 255, y en cada router que era procesado se le debía restar la cantidad de segundos que tardó en procesarse. Posteriormente ya sea por la velocidad de los routers o por comodidad, en lugar de restarse la cantidad de segundos en que tardo en procesarse, comenzó a restarse 1 en cada router por el que pasaba.  Por lo que el TTL  hoy en día indica la cantidad máxima de saltos que un paquete ip puede dar (255 en este ejemplo) antes de ser descartado.

Explicación sencilla del funcionamiento del ttl

TTL

Esta propiedad del paquete ip, aunque puede parecer trivial, en realidad nos puede brindar bastante información 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 información 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 información sobre el sistema operativo.

Manos al teclado

Veamos como responde Google, ante un ping común 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

Pueden ver que el TTL que nos llega es 57.
Como el TTL suele ser un numero multiplo de 2, puede tomar valores de 2,4,8,16,32,64,128… etc.
Lo mas probable, es que el TTL original, haya sido de 64, y paso por 7  routers antes de llegar hasta nosotros (  64 – 7 = 57 )
Para comprobar feacientemente esto hacemos un traceroute:

Isis:~# traceroute google.com
traceroute to google.com (209.85.195.104), 30 hops max, 40 byte packets
 1  Orus (x.x.x.x)  8.654 ms  8.959 ms  9.246 ms
 2  host13.222-3-64.telefonica.net.ar (221.3.64.13)  19.917 ms  25.344 ms  30.208 ms
 3  host114.194-224-165.telefonica.net.ar (194.224.165.114)  36.107 ms  41.545 ms  45.936 ms
 4  host142.194-225-248.telecom.net.ar (194.225.248.142)  52.120 ms  56.516 ms  61.675 ms
 5  209.85.251.28 (209.85.251.28)  66.672 ms  72.279 ms  76.667 ms
 6  209.85.251.6 (209.85.251.6)  93.145 ms  102.719 ms  103.364 ms
 7  eze03s01-in-f104.1e100.net (209.85.195.104)  21.835 ms  15.071 ms  19.948

Tal como pensamos, hay 7 saltos, desde donde enviamos nuestro ping a google.

Este mismo procedimiento, se puede imitar con hping, pero sería complicarse  un poco, siendo que tenemos estas herramientas que son muy comunes y simples. Sin embargo, habiendo entendido esto, podemos usar hping para una técnica un tanto mas avanzada.

Firewall testing con Hping

Las herramientas anteriormente usadas, usan el protocolo ICMP implicitamente ( Request y Echo). Nosotros en lugar de usar ICMP, usaremos un paquete TCP, sobre un puerto especifico, para estudiar la respuesta del mismo.

Como primer experimento, enviamos un paquete TCP al puerto 21 de un target cualquiera, con el TTL en uno.

Isis:~# hping3 -c 3 -S -p 21 -t 1 nasa.dnsalias.net
HPING nasa.dnsalias.net (eth0 2xx.1x7.x0.x9): S set, 40 headers + 0 data bytes
TTL 0 during transit from ip=192.168.1.1 name=Orus
TTL 0 during transit from ip=192.168.1.1 name=Orus
TTL 0 during transit from ip=192.168.1.1 name=Orus      

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

-c 3 : Indica la cantidad de paquetes que enviaremos

-S : Activa el flag SYN, indicando la intención de iniciar una nueva conexión

-p 21 : Puerto de destino 21

-t 1 : TTL en 1

nasa.dnsalias.net : Puerta tracera de la nasa :P

La respuesta nos llega desde (en este caso) mi super Cisco Pix (192.168.1.1) :P , informandonós que el paquete no pudo ser entregado dado que el paquete murió en el camino (que en paz descanse).  Esto significa que mientras el paquete intentaba llegar a destino, su tiempo de vida llegó a su fin, y el paquete se descartó, por consecuencia, el router que lo descartó, nos informa sobre su deceso.

En la entrega anterior, habiamos comentado, que con el flag -z, asociamos el uso de Control Z al incremento del numero de TTL.

Isis:~# hping3 -S -p 21 -z -t 1 nasa.dnsalias.net HPING nasa.dnsalias.net (eth0 2xx.1xx.9x.x9): S set, 40 headers + 0 data bytes TTL 0 during transit from ip=192.168.1.1 name=Orus TTL 0 during transit from ip=192.168.1.1 name=Orus TTL 0 during transit from ip=192.168.1.1 name=Orus 2: TTL 0 during transit from ip=201.90.61.19 name=host19.201-90-61.telefonica.net.ar TTL 0 during transit from ip=200.3.63.19 name=host19.200-3-63.telefonica.net.ar 3: TTL 0 during transit from ip=204.117.127.90 name=host90.204-117-127.telecom.net.ar TTL 0 during transit from ip=204.117.127.90 name=host90.204-117-127.telecom.net.ar TTL 0 during transit from ip=204.117.127.90 name=host90.204-117-127.telecom.net.ar 4: 5: TTL 0 during transit from ip=200.117.90.39 name=UNKNOWN TTL 0 during transit from ip=200.117.90.39 name=UNKNOWN TTL 0 during transit from ip=200.117.90.39 name=UNKNOWN 6: len=46 ip=2xx.1xx.9x.x9 ttl=123 id=16854 sport=21 flags=SA seq=15 win=16384 rtt=33.7 ms len=46 ip=2xx.1xx.9x.x9 ttl=123 id=16855 sport=21 flags=SA seq=16 win=16384 rtt=34.3 ms len=46 ip=2xx.1xx.9x.x9 ttl=123 id=16856 sport=21 flags=SA seq=17 win=16384 rtt=57.8 ms len=46 ip=2xx.1xx.9x.x9 ttl=123 id=16863 sport=21 flags=SA seq=18 win=16384 rtt=235.6 ms ^C --- nasa.dnsalias.net hping statistic --- 23 packets transmitted, 19 packets received, 0% packet loss round-trip min/avg/max = 33.1/1158.4/3119.4 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:

Isis:~# hping3 -S -p 21 -z -t 1 nasa.dnsalias.net ... 6: len=46 ip=2xx.1xx.9x.x9 ttl=123 id=16854 sport=21 flags=SA seq=15 win=16384 rtt=33.7 ms len=46 ip=2xx.1xx.9x.x9 ttl=123 id=16855 sport=21 flags=SA seq=16 win=16384 rtt=34.3 ms Isis:~# hping3 -S -p 22 -z -t 1 nasa.dnsalias.net ... 7: len=46 ip=2xx.1xx.9x.x9 ttl=122 id=16854 sport=22 flags=SA seq=12 win=12503 rtt=31.3 ms len=46 ip=2xx.1xx.9x.x9 ttl=122 id=16855 sport=22 flags=SA seq=13 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.

Razón: 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.

Nota: Podemos sintetizar la linea usando -T ó –traceroute, lo cual implica -t 1 y -z

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…

Comments

Pingback from 2da parte del Manual de HPing « NetVulcano
Time 1 diciembre 2010 at 16:10

[...] http://www.netsecure.com.ar/2010/10/20/manual-tutorial-de-hping-con-ejemplos-ii/ Escrito en Noticias. Deja un Comentario » LikeBe the first to like this post. [...]

Pingback from OPERACIÓN PAYBACK| About| aRFeGo
Time 10 diciembre 2010 at 01:44

[...] HPING3 Instalación en Ubuntu/Debian: sudo apt-get install hping3 (si alguien usa otra distro ponga su comando) Instalación en RedHat/Suse: rpm -ivh hping3 Instalación en OpenSolaris: pkgadd -d hping3 hping3 -S -i u10000  -p Ej: hping3 -S -i u10000 -p 443 api.paypal.com Mas sobre HPING: 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/ [...]

Comment from Dimitri
Time 5 septiembre 2011 at 04:46

Hola que tal, saben, recien quiero modificar las opciones para no recibir replies ICMP para poder acceder a internet mientras esta funcionando hping3.. Alguna opcion?

Comment from Dimitri
Time 5 septiembre 2011 at 04:46

Por cierto, me falto decirles q excelente informacion… de maravilla!!!!
Felicidades.

Comment from Lord Epzylon
Time 5 septiembre 2011 at 10:26

Dimitri, gracias por tus comentarios.
No llego a comprender bien tu inquietud.
Quieres configurar algún firewall para que no responda ICMP?
Si es así, podes leer esta serie de articulos sobre iptables:
http://www.netsecure.com.ar/2008/12/02/netfilter-iptables-i/
(este es el primero y ahi tenes el link para los siguientes capitulos)
Por otro lado en este artículo hablamos un poco mas sobre ICMP:
http://www.netsecure.com.ar/2011/03/09/hping-icmp/

Si seguís con dudas, lo podemos hablar x mail.
Gracias y saludos

Write a comment