Saltar al contenido

Cuando deseamos verificar la conectividad, generalmente utilizamos el comando Ping, una herramienta que envía paquetes ICMP a un servidor específico para determinar si hay algún problema de comunicación. Sin embargo, esta herramienta es bastante básica y no permite realizar modificaciones significativas en los paquetes, ni utilizar otros protocolos para el envío de información. Por otro lado, Hping3 es una aplicación más avanzada que nos brinda la capacidad de modificar los paquetes que se envían a través del protocolo TCP/IP, lo cual nos otorga un mayor control de dichos paquetes, permitiéndonos adecuarlos según nuestras necesidades.

Características principales

Hping3 es una aplicación de línea de comandos para Linux que nos permite analizar y construir fácilmente paquetes TCP/IP. A diferencia del Ping convencional, que se utiliza para enviar paquetes ICMP, esta aplicación permite enviar paquetes TCP, UDP y RAW-IP. Además de analizar paquetes, esta aplicación también puede utilizarse con fines de seguridad, como probar la eficacia de un firewall mediante el uso de diferentes protocolos, detectar paquetes sospechosos o modificados, e incluso protegerse contra ataques de denegación de servicio (DoS) en un sistema o firewall.

En el pasado, esta herramienta se utilizaba principalmente para la ciberseguridad, pero también se puede utilizar para probar redes y hosts. Algunas de las principales aplicaciones de esta herramienta son las siguientes:

  • Verificar la seguridad y el funcionamiento de los firewalls.
  • Realizar escaneos avanzados de puertos, aunque es recomendable utilizar Nmap para esta tarea.
  • Realizar pruebas de red utilizando diferentes protocolos, Tipo de Servicio (ToS), fragmentación, etc.
  • Descubrir el MTU (Unidad Máxima de Transmisión) de forma manual en la ruta.
  • Realizar trazas avanzadas utilizando todos los protocolos admitidos.
  • Recopilar información remota sobre el sistema operativo.
  • Verificar la latencia.
  • Auditoría de las pilas TCP/IP.

Debido a la amplia variedad de posibilidades que ofrece esta herramienta, en RedesZone vamos a mostrarles los usos principales y cómo utilizarla. Podríamos decir que esta herramienta es una versión mejorada del «ping», ya que podemos utilizar una gran cantidad de opciones avanzadas para atacar un host, verificar si un puerto está abierto y mucho más. Aunque el programa más utilizado para realizar escaneos de puertos es Nmap, y también contamos con Nmap NSE para agregar extensiones y funciones adicionales, esta herramienta Hping3 nos brinda la capacidad de realizar un «escaneo de puertos», enviando paquetes TCP y UDP a diferentes hosts y verificando si están respondiendo o no. De esta manera, con un pequeño script creado por nosotros y Hping3, podremos realizar un escaneo de puertos rápido.

Esta herramienta puede utilizarse en distribuciones de Linux como Debian, CentOS, Kali, entre otras, pero según su página oficial también puede ejecutarse en Windows, MacOS, Solaris (Sun Microsystems de Oracle) y algunos sistemas operativos de BSD como OpenBSD.

Alternativas a Hping3

En Internet encontramos diferentes opciones para utilizar estos comandos y enviar paquetes TCP/IP. Todas cumplen una función de diagnóstico en redes y realizan pruebas de penetración, entre otras funcionalidades. Sin embargo, es importante tener en cuenta que puede haber pequeñas variaciones entre las diferentes opciones. Algunas de las alternativas más conocidas son:

  • Nmap: Esta herramienta es muy popular y se utiliza en todo el mundo para realizar escaneos de puertos, descubrir hosts o servicios, detectar vulnerabilidades y generar informes detallados.
  • Scapy: Es una herramienta flexible que nos permite programar paquetes para enviar y capturar datos de la red. Se puede utilizar para diversas tareas relacionadas con la seguridad, incluido el análisis de tráfico y diferentes pruebas.
  • Hping: Es similar a Hping3, pero cuenta con características adicionales. Permite enviar paquetes ICMP, TCP, UDP y RAW, y ofrece funciones avanzadas para personalizar el comportamiento de los paquetes.
  • Zmap: Permite realizar escaneos de red a alta velocidad, lo que nos permite detectar dispositivos y servicios en la red. En general, esta herramienta se destaca por su capacidad para realizar escaneos rápidos en redes extensas.
  • Wireshark: Es una herramienta de análisis de paquetes de datos altamente programable que puede decodificar muchos protocolos de red. Se utiliza para detectar intrusiones y realizar análisis de otras aplicaciones de seguridad.

Son numerosas las opciones disponibles, con una amplia variedad de alternativas. Y lo más relevante, nos permiten seleccionar la que mejor se ajuste a nuestras necesidades en cualquier momento dado.

Cómo instalar Hping3

Hping3 está incluido en los repositorios oficiales de Ubuntu, Debian y otras distribuciones Linux. Para instalarlo, simplemente debemos abrir un terminal (o un gestor de paquetes como Synaptic) y escribir lo siguiente:

La instalación ocupará aproximadamente 3.600 KB y una vez completada, podremos empezar a utilizar la herramienta. Algunas distribuciones de Linux, como Kali Linux, una popular distribución enfocada a auditorías de seguridad, ya tienen este programa, Hping3, preinstalado. Además, disponemos de una amplia variedad de herramientas adicionales para comprobar la seguridad de diversos objetivos y explotar vulnerabilidades.

Listado de comandos de Hping3

Esta herramienta ofrece una amplia variedad de funciones. Desde realizar un sencillo ping hasta enviar paquetes a través de un puerto específico e incluso ocultar la dirección IP de origen. Si deseamos conocer a fondo todos los parámetros que ofrece este programa, podemos consultar la ayuda incluida en la herramienta simplemente escribiendo en el terminal:

Uso básico de la herramienta:

El uso de esta herramienta es bastante sencillo, pero incluye una gran cantidad de argumentos para ampliar sus funcionalidades. Podemos enviar un número específico de paquetes, establecer intervalos de espera, enviar paquetes para realizar ataques de denegación de servicio e incluso contar los paquetes enviados y recibidos por diferentes hosts. Además, cuenta con un modo de depuración para realizar un seguimiento detallado de la red.

  • v –version: muestra la versión actual de hping3.
  • -c –count: contador de paquetes.
  • -i –interval: tiempo de espera (uX para X microsegundos, por ejemplo, -i u1000).
    -fast: alias para -i u10000 (10 paquetes por segundo).
    -faster: alias para -i u1000 (100 paquetes por segundo).
    -flood: envía paquetes lo más rápido posible sin mostrar respuestas.
  • -n –numeric: muestra salida numérica.
  • -q –quiet: ejecuta el comando en modo silencioso sin mostrar por pantalla.
  • -I –interface: nombre de la interfaz. Si no se especifica, se utilizará la interfaz predeterminada.
  • -V –verbose: modo detallado para depuración.
  • -D –debug: muestra información de depuración.
  • -z –bind: enlaza ctrl+z a ttl (por defecto al puerto de destino).
  • -Z –unbind: desenlaza ctrl+z.
  • –beep: suena un tono por cada paquete recibido que coincida.

Modos:

El programa Hping3 ofrece varios modos de funcionamiento, siendo el más destacado el modo de envío de paquetes TCP. Este modo es el predeterminado en Hping3, pero también hay opciones para enviar datos a través de UDP, ICMP e incluso en RAW IP, entre otros.

  • El modo por defecto es TCP.
  • -0: Modo RAW IP.
  • -1: Modo ICMP.
  • -2: Modo UDP.
  • -8: Modo SCAN.
  • -9: Modo escucha.

Dirección IP:

Este programa nos permite configurar tanto la dirección IP de origen como la de destino. Esto nos permite falsificar la dirección IP de origen y configurar opciones avanzadas como fragmentación de paquetes, MTU y muchas otras opciones para atravesar firewalls.

  • -a: Falsifica la dirección IP de origen.
  • –rand-dest: Configura una dirección IP de destino aleatoria.
  • –rand-source: Configura una dirección IP de origen aleatoria.
  • -t: Configura el TTL (por defecto 64).
  • -N: Configura el ID (por defecto aleatorio).
  • -W: Utiliza el orden de bytes win*id.
  • -r: Relativiza el campo de identificación (para estimar el tráfico del host).
  • -f: Fragmenta paquetes en más de un fragmento, lo que puede atravesar ACL débiles.
  • -x: Fragmenta aún más los paquetes.
  • -y: No fragmenta los paquetes.
  • -g: Establece el offset del fragmento.
  • -m: Establece un MTU virtual, lo que implica que el fragmento del paquete sea mayor que el MTU.
  • -o: Configura el tipo de servicio (por defecto 0x00).
  • -G: Incluye la opción RECORD_ROUTE y muestra el buffer de la ruta.
  • –lsrr: Enrutamiento de origen suelto y registro de ruta.
  • –ssrr: Enrutamiento de origen estricto y registro de ruta.
  • -H: Establece el protocolo IP, solo para modo RAW IP.

ICMP:

En el caso de utilizar el protocolo ICMP, también se pueden configurar opciones detalladas para adaptarse a las necesidades del usuario.

  • -C: Configura el tipo de ICMP (por defecto es ICMP Echo request).
  • -K: Configura el código ICMP (por defecto es 0).
  • –force-icmp: Envía todos los tipos de ICMP (por defecto solo envía los tipos soportados).
  • –icmp-gw: Establece la dirección de puerta de enlace predeterminada para ICMP redirect (por defecto 0.0.0.0).
  • –icmp-ts: Alias para –icmp –icmptype 13 (ICMP timestamp).
  • –icmp-addr: Alias para –icmp –icmptype 17 (ICMP dirección de máscara de subred).
  • –icmp-help: Muestra la ayuda para otras opciones ICMP.

Es útil conocer algunos códigos de ICMP que Hping3 podría mostrar. A continuación se presentan los más utilizados:

TCP/UDP

  • -s –baseport: especifica el puerto de origen base del puerto, por defecto es aleatorio
  • -p –destport [+][+]: especifica el puerto de destino
  • -k –keep: mantiene el puerto de origen
  • -w –win: establece el tamaño de ventana, por defecto 64
  • -O –tcpoff: establece desplazamiento de datos tcp falso (en lugar de tcphdrlen / 4)
  • -Q –seqnum: muestra solamente el número de secuencia
  • -b –badcksum: envía paquetes con el IP checksum falseado
  • -M –setseq: establece el número de secuencia TCP
  • -L –setack: establece TCP ack
  • -F –fin: establece FIN flag
  • -S –syn: establece SYN flag
  • -R –rst: establece RST flag
  • -P –push: establece PUSH flag
  • -A –ack: establece ACK flag
  • -U –urg: establece URG flag
  • -X –xmas: establece X flag sin usar (0x40)
  • -Y –ymas: establece Y flag sin usar (0x80)
  • –tcpexitcode: usa el último tcp->th_flags como código de salida
  • –tcp-mss: habilita la opción TCP MSS con el valor dado
  • –tcp-timestamp: habilita la opción TCP timestamp para adivinar el tiempo de uptime.

Opciones comunes a todos

  • -d –data: tamaño de los datos, por defecto es 0.
  • -E –file: datos desde un archivo.
  • -e –sign: agrega una firma
  • -j –dump: vuelca los paquetes en hexadecimal
  • -J –print: vuelca los caracteres imprimibles
  • -B –safe: habilita protocolo «safe»
  • -u –end: te dice cuando un archivo ha llegado hasta el final
  • -T –traceroute: modo traceroute (implica –bind y –ttl 1)
  • –tr-stop: salida cuando se recibe el primer paquete que no es ICMP en modo traceroute
  • –tr-keep-ttl: mantiene el TTL del origen fijo, útil para monitorear solo un salto
  • –tr-no-rtt: no calcula y no muestra información RTT en modo traceroute
  • Descripción de paquete ARS (nuevo e inestable)
  • –apd-send: envía paquetes descritos con APD

Ejemplos de utilización de Hping3

Prueba de Ping sencilla

Podemos utilizar esta herramienta como el comando ping convencional, obteniendo prácticamente los mismos resultados. Para ello simplemente debemos teclear:

Y veremos cómo se realiza esta prueba sencilla de conexión. (Podemos cambiar el dominio de Google por cualquier otro o utilizar directamente una IP para hacer ping a ella).

Trazar ruta de conexión

De forma similar a la opción «tracert» de Windows o «traceroute» de Linux, con esta herramienta también podemos seguir todos los saltos entre redes de un paquete desde que sale de nuestro ordenador hasta que llega a su destino, pudiendo conocer en todo momento si hay algún tipo de problema en la conexión.

Escaneo de puertos usando el flag SYN de TCP

En primer lugar, debemos realizar un escaneo de ping para determinar qué hosts están activos en la red escaneada. Sin embargo, este método puede no ser efectivo si el ping está bloqueado en el servicio o en los equipos que buscamos con el comando. En cualquier caso, podemos utilizar otras herramientas como arping, nmap o fping para realizar el escaneo.

Además, esta herramienta nos permite enviar paquetes utilizando el protocolo TCP al estilo del programa Nmap. Para realizar un escaneo utilizando este método, debemos escribir en la terminal «hping3 -S [Dirección IP Destino] -p [Puerto]». El resultado será similar a lo siguiente:

El resultado de esta prueba nos devolverá el flag SA, lo que indica que corresponde a SYN/ACK, es decir, que la comunicación ha sido aceptada y el puerto está abierto. De lo contrario, si el valor es RA, corresponde a RST/ACK, lo que significa que la comunicación no se ha establecido correctamente porque el puerto está cerrado o filtrado.

También podemos asignar otros parámetros que afectan la velocidad de envío de los paquetes, como -fast, -faster o -flood.

Si la cantidad de hosts activos es menor a la esperada, es posible que algunos estén apagados o que se estén filtrando a través de ICMP, por lo que deberíamos probar otras opciones para localizarlos.

También podemos ver que hay un apartado que muestra «^C», lo cual corresponde al comando de Ctrl+C. En este caso, se ha utilizado este comando para finalizar el envío de paquetes. Esto nos permite especificar cuántos paquetes queremos enviar al objetivo. Si utilizamos el parámetro -c, podemos establecer un número específico de paquetes. Por ejemplo, con -c 3, enviaríamos tres paquetes.

De esta manera, podemos determinar si se permite la comunicación a un puerto específico o si el Firewall lo está filtrando.

Escaneo NULL

En este tipo de escaneo, los puertos que se muestran como «Not responding ports» indican que están abiertos o filtrados. Si recibimos un paquete con la etiqueta R (RST) desde uno de estos puertos, significa que está cerrado. Para realizar este escaneo, podemos utilizar el siguiente comando:

  • sudo hping3: Para utilizar la herramienta.
  • –scan: Para enviar el escaneo a los puertos seleccionados.
  • -V: Para establecer un nivel de verbosidad. Este parámetro se puede utilizar en todos los escaneos.

Firmar envíos con un archivo de texto personalizado

Es factible utilizar esta herramienta para modificar los envíos que realizamos e incluir en ellos un mensaje personalizado similar a una firma. Para lograrlo, simplemente debemos escribir:

Esta instrucción incorporará el contenido del archivo txt mencionado dentro de los paquetes de Ping. Si analizamos dichos paquetes con un software apropiado como WireShark, observaremos que contienen el contenido del archivo en cuestión.

  • -d : La extensión del mensaje que vamos a incorporar, en este caso, 50.
  • -E : Archivo del que vamos a extraer la firma o mensaje que deseamos introducir en los paquetes.

Asimismo, podemos utilizar otros parámetros, como por ejemplo, -p para indicar el puerto hacia el cual deseamos enviar dichos paquetes, o -2 para enviar los paquetes mediante el protocolo UDP.

Generar múltiples requerimientos para probar la protección DoS y DDoS

Esta herramienta también nos permitirá evaluar la estabilidad de nuestro sistema frente a ataques de red como el DoS y DDoS, generando pruebas reales tanto en localhost como en otros servidores dentro (o fuera) de la red.

Podemos llevar a cabo una serie de pings únicos modificando la dirección IP de origen de los mismos en los paquetes TCP/IP simplemente escribiendo:

De igual forma, podemos agregar el parámetro –flood para que los paquetes se envíen en tiempo real de manera masiva. De esta manera, podremos evaluar, en primer lugar, el funcionamiento de nuestro firewall, y en segundo lugar, cómo responde nuestro sistema ante un posible ataque DDoS.

En apenas un par de segundos, hemos generado más de 25,000 paquetes, por lo que debemos tener precaución, ya que esto podría bloquear y deshabilitar nuestra red.

Mediante el parámetro rand-source, se generarán una gran cantidad de paquetes con un «falso origen» que se enviarán ininterrumpidamente al servidor de destino (192.168.1.1 en este caso). De esta manera, podremos evaluar la resistencia de nuestro sistema ante los ataques DDoS. Si el sistema deja de funcionar o se bloquea, podría haber un error de configuración y se deben tomar las medidas adecuadas para prevenir esto en un entorno real.

Esta herramienta es muy útil, sin embargo, se debe usar en entornos cerrados y controlados, ya que si se utiliza en el exterior podríamos llevar a cabo un ataque de denegación de servicio a un equipo indebido, lo cual es ilegal y puede resultar en sanciones.

Recomendamos consultar el MAN PAGE oficial de hping para obtener información sobre todas sus opciones.

Artículos relacionados