¿Qué es hping3 y cómo escanear puertos?
¿Qué es hping3?
hping es una utilidad de línea de comandos con la cual se puede crear, analizar paquetes, entre otros. Hping está orientada a TCP/IP fue creada por Salvatore Sanfilippo, conocido como “antirez”, es opensource y soporta los protocolos TCP, UDP, ICMP y RAW-IP.
¿Cuál es su utilidad?
Con hping podemos diseñar, crear y ensamblar paquetes, detectar hosts activos dentro de una red, ejecutar escaneos de puertos, analizar qué tipo de sistema operativo podría tener un host activo a través de OS fingerprinting, realizar pruebas en Firewalls, realizar pruebas en sistemas de detección de intrusos – Intrusion Detection System (IDS por sus siglas en inglés), realizar traceroute avanzado para determinar la ruta que toma un paquete; incluso, si usted siente alguna dificultad para aprender sobre TCP/IP, esta herramienta le podrá ayudar.
¿En qué sistema operativo funciona?
He utilizado hping3 en distribuciones basadas en Linux como Debian, Kali, CentOS; sin embargo, de acuerdo a la información de la web oficial, se puede ejecutar en Windows, MacOS X, Solaris (sistema operativo creado por Sun Microsystems, propiedad actual de Oracle) y algunos de la familia BSD como OpenBSD.
¿Cómo se instala en Debian 10?
En este caso se realizará la instalación de hping3 en Debian 10 – Buster.
Para instalar hping3 utilice los comandos:
Si está como usuario root, ejecute:
Si está con un usuario regular que está en el sudoers, utilice el comando:
$sudo apt install hping3
A continuación se observa el paquete instalado
Algunos parámetros de hping3
Parámetros de modo | |
-0, –rawip | Selecciona el modo Raw IP |
-1, –icmp | Selecciona el modo ICMP |
-2, –udp | Selecciona el modo UDP |
-8, –scan | Selecciona modo escaneo |
-9, –listen | Selecciona modo escucha |
Algunas opciones TCP/UDP | |
-c | Cantidad de paquetes a enviar |
–rand-dest | Se utiliza para generar un número random que determina el destino |
-p | puerto de destino |
-s | puerto de origen |
-S | fijar bandera SYN |
-A | fijar bandera ACK |
-F | fijar bandera FIN |
-R | fijar bandeja RST |
-T | Utiliza el modo traceroute |
Escaneo de puertos con hping3
Determinar los hosts activos
Lo primero es realizar un ping sweep con el fin de determinar los hosts activos en la red; recuerde que a veces no es suficiente con un ping debido a que este puede estar bloqueado; podría utilizar herramientas alternativas como arping, fping, ping, nmap para realizar el network sweep. Con hping3 usted puede realizar una detección de hosts
En la siguiente imagen tiene las siguientes opciones:
sudo hping3 ← para ejecutar la utilidad hping3
-1 ← Le indica a hping3 que utilice el modo ICMP
192.168.0.x ← segmento o bloque de direcciones IP, la x representa un número que puede estar en el rango de 0 a 255 y es generado a través de: –rand-dest ← Genera un número aleatorio entre 0 y 255
-I ens33 ← Si se va a utilizar la opción –rand-dest, se debe especificar la opción -I acompañada de la interfaz
Puede aumentar la velocidad con la que se envían paquetes en el comando anterior mediante el uso de las opciones: “–fast”, “–faster” o “–flood”; ¿Es conveniente incrementar la velocidad utilizando “–flood”? Ya usted realizará la respectiva valoración.
Si la cantidad de host determinados como activos con la prueba anterior, es inferior a la cantidad de host activos que presuntamente se debería tener (aproximación obtenida, si es que se obtuvo, en la fase de reconocimiento), es posible que estén algunos apagados o que se esté filtrando “icmp”, por tal razón, usted debería buscar otras opciones. La opción de escaneo ACK puede ayudarle:
Si obtiene un paquete con una bandera RST como respuesta, podría pensar que el host está activo.
Enviar el primer paquete TCP SYN
Una vez tenga identificados los hosts activos en la red, puede iniciar con el escaneo de puertos,;voy a enviar un paquete TCP SYN hacia el objetivo de la siguiente manera:
sudo hping3 ← para ejecutar la utilidad hping3
-S ← se configura la bandera (flag) SYN
-p 80 ← se indica que el puerto de destino será el 80, si usted no le especifica un puerto, se enviará el paquete al puerto 0 (ver imagen a continuación)
192.168.0.12 ← dirección ip del objetivo
En la imágen anterior se puede ver la respuesta proveniente del objetivo, donde:
sport=80 ← puerto desde donde se origina la respuesta
flags=SA ← El objetivo a respondido con las banderas SYN,ACK; lo cual indica que ese puerto está abierto (open) y escuchando (listening)
La “^C” que se ve en la respuesta, corresponde a la introducción de las teclas “Ctrl+C” ¿Por qué se introdujeron esas teclas? Para parar el envío de paquetes hacia el objetivo, para especificar la cantidad de paquetes que desea enviar al objetivo, puede utilizar la opción -c especificando el número de paquetes, ejemplo: -c 3, en este caso se enviarán 3 paquetes.
Usted podría ver los paquetes enviados y recibidos utilizando tcpdump, de la siguiente manera:
Enviar TCP SYN a varios puertos
En la siguiente imagen se ve el resultado del comando:
sudo hping3 ← para ejecutar la utilidad hping3
-S ← se configura la bandera (flag) SYN
–scan ← se utiliza el modo scan
10-500 ← rango de puertos a los que se enviará el paquete
En la siguiente imagen, en la opción “–scan” se le especifican los puertos 22,23 y el rango de 400 a 450
En la próxima imagen se puede ver que se envían los paquetes a los puertos y al rango especificados
Escaneo NULL
En el Null scan, no se configura ninguna bandera, el comando para enviar un escaneo de tipo Null es el siguiente:
sudo hping3 ← para ejecutar la utilidad hping3
–scan← se envía paquetes a los puertos 20,21,22,80 y 60000
-V ← se utiliza para tener un nivel de verbosidad (se puede usar con cualquier escaneo)
La siguiente imagen muestra que se envía un paquete sin banderas seleccionadas “Flags [none]”
En este tipo de escaneo los puertos que se muestran en “Not responding ports”, son los que se encuentran abiertos (open) o filtrados (filtered). Cuando el objetivo devuelve desde un puerto un paquete con la bandera R (RST), se considera que este puerto está cerrado (closed)
Escaneo XMAS
En este caso se envía un paquete con las banderas FIN, URG y PSH
sudo hping3 ← para ejecutar la utilidad hping3
-FUP ←- se configuran las banderas FIN, URG y PSH
–scan←- se envía paquetes a los puertos 20,21,22,80 y 60000
En este tipo de escaneo los puertos que se muestran en “Not responding ports”, son los que se encuentran abiertos (open) o filtrados (filtered). Cuando el objetivo devuelve desde un puerto un paquete con la bandera R (RST), se considera que este puerto está cerrado (closed)
Escaneo UDP
Aunque el escaneo de puertos o servicios que utilizan UDP es un poco más lento y más difícil que los que utilizan TCP, nunca descarte estos puertos, en la imagen a continuación podrá ver un escaneo de tipo UDP
sudo hping3 ← para ejecutar la utilidad hping3
-2 ←- modo UDP
-p 53 ←- se determina el puerto de destino, en este caso el puerto 53
-V ←- se añade verbosidad
En este blog hemos explorado el escaneo de puertos desde las perspectiva de una herramienta como hping3, en próximas entradas utilizaremos hping3 para crear y analizar paquetes.
Si te gustó, por favor déjanos tus comentarios! Sé un buen HackerPro y comparte con tu comunidad! Suscríbete a Behackerpro
Otras Entradas
Introducción a la Seguridad en AI – Parte 2
Después de entender los principales ataques, técnicas, tácticas y procedimientos...
Leer másIntroducción a la Seguridad en AI
Cuando hablamos de Seguridad en AI (Artificial Intelligence o Inteligencia...
Leer más5 pilares para Hackers o Profesionales en Ciberseguridad desde una perspectiva técnica
Después de la master class que realizamos en Be Hacker...
Leer más