¿Qué es hping3 y cómo escanear puertos?

Behackerpro
7 min readJun 25, 2021

--

hping3-ciberseguridad-port-scan-behackerpro

¿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

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

--

--

Behackerpro

El elemento que le suma a tu conocimiento. Somos un grupo de expertos en #ciberseguridad fundadores de https://behacker.pro donde puedes aprender a ser Hacker