Guía de hping3 en Español
Guía de hping3 en Español
hping3 es una de las herramientas más potentes y versátiles en Kali Linux para la auditoría de redes. A diferencia del comando ping tradicional que solo usa ICMP, hping3 te permite ensamblar y enviar paquetes personalizados TCP, UDP e ICMP.
Aquí tienes una guía rápida para entender cómo funciona y sus usos principales.
¿Qué es hping3?
Es un generador y analizador de paquetes de red por línea de comandos. Se utiliza frecuentemente para:
Probar reglas de Firewalls.
Escaneo de puertos avanzado.
Pruebas de rendimiento de red y stress testing.
Auditoría de pilas TCP/IP.
Comandos y Sintaxis Básica
La estructura general es: hping3 [Modo] [Opciones] [Destino]
1. Escaneo de Puertos (Modo TCP)
Para enviar un paquete a un puerto específico (por ejemplo, el 80) y ver si responde:
hping3 -S -p 80 192.168.1.1
-S: Establece el flag SYN (inicio de conexión).-p: Define el puerto de destino.
2. Traceroute Personalizado
A diferencia del traceroute convencional, hping3 puede usar paquetes TCP para atravesar firewalls que bloquean ICMP:
hping3 --traceroute -S -p 443 google.com
3. Transferencia de Archivos (Modo ICMP)
Si quieres probar si puedes mover datos a través de protocolos básicos:
hping3 192.168.1.15 --icmp --file /ruta/archivo.txt --data 100
Modos de Operación Principales
| Parámetro | Descripción | Uso común |
-0 / --rawip | Modo IP Crudo | Envío de cabeceras IP personalizadas. |
-1 / --icmp | Modo ICMP | Comportamiento similar a un ping extendido. |
-2 / --udp | Modo UDP | Útil para probar servicios como DNS o DHCP. |
-8 / --scan | Modo Escaneo | Escanea rangos de puertos (Ej: hping3 -8 1-1024 -S). |
-9 / --listen | Modo Escucha | Recibe paquetes que contengan una firma específica. |
Pruebas de Estrés (Flood)
Nota de seguridad: Realiza estas pruebas solo en entornos controlados o redes de tu propiedad.
hping3 es famoso por su capacidad de enviar paquetes lo más rápido posible sin esperar respuesta:
hping3 --flood -S -p 80 10.0.0.5
--flood: Envía paquetes a máxima velocidad.--rand-source: (Opcional) Oculta tu IP real usando direcciones de origen aleatorias.
Entendiendo la respuesta
Cuando escaneas con el flag -S (SYN), fíjate en los flags de respuesta:
SA (SYN-ACK): El puerto está abierto.
RA (RST-ACK): El puerto está cerrado.
Sin respuesta: Hay un Firewall filtrando el paquete.
Automatizar esto con un script de Bash te permite escanear múltiples puertos de forma organizada y guardar los resultados en un archivo de texto para analizarlos después.
Aquí tienes un ejemplo de un script profesional pero sencillo. Este script intentará identificar si los puertos más comunes (80, 443, 22, 21) están abiertos enviando un paquete SYN.
Script de Escaneo con hping3
Copia este código en un archivo llamado escaneo.sh:
#!/bin/bash
# Comprobar si se proporcionó una IP
if [ -z "$1" ]; then
echo "Uso: $0 <direccion-ip>"
exit 1
fi
IP=$1
PUERTOS=(21 22 80 443 8080)
echo "--- Iniciando escaneo en $IP ---"
echo "Puerto | Estado"
echo "------------------------"
for puerto in "${PUERTOS[@]}"; do
# Enviamos 1 paquete (-c 1), modo SYN (-S) al puerto indicado
# Redirigimos errores a /dev/null para una salida limpia
resultado=$(sudo hping3 -S -p $puerto -c 1 $IP 2>/dev/null | grep "flags=")
if [[ $resultado == *"flags=SA"* ]]; then
echo " $puerto | ABIERTO (SYN-ACK)"
elif [[ $resultado == *"flags=RA"* ]]; then
echo " $puerto | CERRADO (RST-ACK)"
else
echo " $puerto | FILTRADO / SIN RESPUESTA"
fi
done
echo "------------------------"
echo "Escaneo finalizado."
Cómo ejecutarlo
Dale permisos de ejecución:
chmod +x escaneo.shEjecútalo con una IP de tu red:
./escaneo.sh 192.168.1.1
¿Cómo funciona la lógica del script?
El script se basa en el TCP Three-Way Handshake (el saludo de tres vías de TCP). Cuando usamos hping3 -S, estamos simulando el primer paso de una conexión:
SYN-ACK (SA): Si el servidor responde con esto, significa que el puerto está escuchando y acepta conexiones.
RST-ACK (RA): El servidor recibe tu petición pero "rechaza" la conexión porque el puerto está cerrado.
Packet Loss / Timeout: Si no hay respuesta, es muy probable que un Firewall esté descartando tus paquetes silenciosamente (Drop).
Tip de experto: Si quieres que el escaneo sea más difícil de detectar por sistemas IDS (Sistemas de Detección de Intrusos), puedes agregar el parámetro
--fasto aumentar el intervalo entre paquetes con-i u10000(microsegundos)