Hping3 y paquetes a medida

A la hora de realizar una auditoría o “pentesting” una de las labores a realizar es la de descubrimiento de hosts, servicios, puertos abiertos, detección de sistemas operativos, etc. La aplicación “reina” en este asunto es Nmap ya que aglutina todo lo anterior y otras más funcionalidades más como Nmap Scripting Engine. Según nuestras preferencias podremos emplearla bien por línea de comandos o por medio de su GUI Zenmap. Aquí os dejo algunas entradas con información de esta herramienta.

Guía Avanzada de Nmap

NSE
Dentro de esa auditoría o pentesting, podríamos encontrarnos aplicaciones o sistemas como cortafuegos, e IDS/IPS tanto a nivel de host como de red. Si empleásemos los valores por defecto podría ser detectada nuestra presencia y además los resultados arrojados podrían no corresponderse con la realidad. Para evitarlo, Nmap trae consigo una serie de opciones que nos permitirán personalizar distintos parámetros en cuanto a cantidad de sondas enviadas, fragmentación de paquetes, retardo en la realización de escaneos, etc.

En cualquiera de los casos la forma que tiene Nmap de actuar es enviar una serie de paquetes (denominadas sondas) con unas características determinadas y en función de la respuesta del, o los, equipos objetivo poder detectar o deducir lo que existe en el otro extremo. Al fin y al cabo, como digo, no dejan de ser paquetes TCP/IP.

Por tanto si de lo que se trata es de enviar paquetes y recibir respuestas, también podríamos hacer uso de otras herramientas que podrían ayudarnos en esta tarea. Una de ellas es Hping3.

Hping3 es un generador de paquetes por línea de comandos y analizador de red. La capacidad de esta herramienta es poder crear paquetes personalizados con el fin de evaluar medidas de seguridad, escaneo de puertos, verificar reglas en cortafuegos, pruebas de rendimiento, detección de IDS/IPS, entre otros.

Por defecto hping3 envía paquetes TCP. Si se quiere cambiar de protocolo podríamos hacerlo bajo las siguientes opciones:

No obstante ejecutando:

root@kali:~# hping3 –h 

Podríamos ver  todas las posibles opciones que nos ofrece hping3.

En el caso de TCP, en función de nuestras necesidades podríamos definir las “flags” dentro de la cabecera, esto es:

Pero mejor lo vemos con algunos ejemplos. Para la ocasión he creado un laboratorio virtual siguiendo el siguiente esquema:

El “PC A” lo utilizamos para abrir distintos puertos simulando ser un equipo con los servicios SSH y HTTP.

Desde el “PC B” enviaremos los paquetes con hping3 y veremos las respuestas.

También podríamos emplear la herramienta Netcat para abrir un socket en un puerto que deseemos.

root@kali:~# nc -l -p 80 

Desde el “PC B” enviaremos un solo paquete TCP con el flag SYN habilitado con lo que al estar el puerto abierto nos responderá con un SYN+ACK.

En cambio si lo hacemos contra un servicio que no esté corriendo en el equipo destino, veremos que nos responderá con un “RST+ACK”. Con ello habremos descartado un servicio activo en el puerto 22, pero sabremos que el host está activo.

Además podríamos definir más parámetros de los paquetes a enviar con el fin de personalizarlos. Por ejemplo:

Con ello habremos fijado el campo ttl (time to Live), a 12; puerto de origen, 11111; tamaño de ventana, 32; puerto de destino 80; y con el flag SYN activado. Acontinuación se muestran capturas con Wireshark.

La verdad que la creación de paquetes a medida es una técnica con la que podremos llevar a cabo muchas tareas especialmente, como digo, cara a una auditoría o pentesting.

Como todo para poder conocer todas sus posibilidades deberemos dedicarle “unos minutos” de nuestro tiempo.

Un saludo y como siempre os invito a dejar vuestro comentario.

Un saludo!