Falsificar paquetes – hping

Hoy vamos a hablar de una herramienta llamada “hping“. Esta herramienta es un generador y analizador de paquetes TCP/IP. ¿Qué significa esto? Básicamente que podemos generar paquetes TCP/IP manipulados para que lleven la información que nosotros queramos. Normalmente es una herramienta que se utiliza para realizar auditorias de seguridad y testear redes y firewalls.

Como siempre para instalarla, al menos en Ubuntu, simplemente con echas mano de los repositorios tendremos suficiente. En este caso instalaremos “hping3” que es la última versión de esta herramienta, así que teclearemos lo siguiente en la consola:

sudo aptitude install hping3

Como siempre, después de instalarlo, iremos a la página del “man” correspondiente para ojear un poco las posibilidades que nos ofrece. Como se puede ver la página correspondiente nos ofrece varias utilidades como son:

  • Probar las reglas de un firewall.
  • Escaneo de puertos avanzado.
  • Probar el rendimiento de una red utilizando diferentes protocolos, tamaños de paquetes, TOS y fragmentación.
  • Descubrir el MTU de un camino.
  • Transferir archivos a través incluso de un firewall con unas reglas muy restrictivas.
  • Realizar un traceroute con diferentes protocolos.
  • Uso como Firewalk.
  • Descubrir un sistema operativo remoto.
  • Realizar auditorias en la pila TCP/IP.
  • Muchos otros.

Supongo que si alguno se ha leído el post anterior sobre NMap, se habrá percatado de que también realiza algunas de estas funciones, lo cual es lógico, ya que NMap es una implementación de todas estas funciones reunidas. Es por así decirlo, como una capa por encima. Pero, la ventaja que nos da bajar al escalón inferior es que hay cosas que podemos hacer con “hping” que no podemos hacer con NMap. A partir de aquí, voy a comentar como hacer varias cosas interesantes con “hping” y veremos como nos sorprende.

El primer uso que le podemos dar es como herramienta “ping“, con alguna pequeña diferencia sobre la información que nos brinda:

ping -c 1 192.168.1.1

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.631 ms
— 192.168.1.1 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.594 ms

sudo hping3 -c 1 192.168.1.1

HPING 192.168.1.1 (eth0 192.168.1.1): NO FLAGS are set, 40 headers + 0 data bytes
len=46 ip=192.168.1.1 ttl=255 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.6 ms
– 192.168.1.1 hping statistic –
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.5 ms

Como podéis ver la información es casi la misma, pero si nos fijamos, el “hping” nos devuelve un dato más que es el de “flags” que aunque ahora no sabemos a que corresponde lo vamos a ver más adelante.

El segundo uso que le vamos a dar es como escaner de puertos, es decir, imitando a NMap, y para esto es para lo que nos va a servir el campo “flags” comentado antes. Me temo que aquí para entender este apartado, se necesitan unos pequeños conocimientos sobre el funcionamiento del protocolo TCP. A grandes rasgos para el que no los tenga, solo decir que, TCP es un protocolo para comunicar dos o más máquinas. Es un protocolo orientado a conexión en el que los ordenadores se intercambian mensajes para saber el estado de cada uno y iniciar un intercambio de datos. (A groso modo, no os metáis mucho conmigo aquellos que lo conozcáis.)

Bien, pues algunos posibles mensajes que se intercambian pueden ser, están sacados de la RFC0793 que la tenéis aquí en español:

  • URG:  Hace significativo el campo “Puntero urgente
  • ACK:  Hace significativo el campo “Número de acuse de recibo
  • PSH:  Función de “Entregar datos inmediatamente” (‘push’)
  • RST:  Reiniciar (‘Reset’) la conexión
  • SYN:  Sincronizar (‘Synchronize’) los números de secuencia
  • FIN:  Últimos datos del emisor

Pues nada vamos a escanear. Es caso más trivial sería comprobar si un puerto esta abierto:

sudo hping3 -S 127.0.0.1 -p 80

HPING 127.0.0.1 (lo 127.0.0.1): S set, 40 headers + 0 data bytes
len=44 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=32792 rtt=0.2 ms

Como podéis ver si tenemos un servidor web lanzado, como es el caso, el valor de “flags” es “SA” lo que significa que ha respondido con un “SYS/ACK” que significa que esta abierto. Si paráramos el servidor veríamos lo siguiente tras ejecutar la misma instrucción:

len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=RA seq=0 win=0 rtt=0.1 ms

Aquí el valor de “flags” es “RA“, que es el “RST/ACK” lo que significa que esta cerrado.

Os voy a poner otro ejemplo más que será para escanear un rango de puertos, pero para más tipos os recomiendo que os arremanguéis un poquito y probéis, porque “hping” os ofrece un gran abanico de posibilidades. Sobre todo, aquellos que tengáis unas pequeñas nociones sobre TCP os recomiendo que probéis poniendo vosotros las banderas de los paquetes, es decir, “SYS“, “FIN” o “ACK” para ver como responden vuestros puertos y vuestros firewalls. Ya veréis como es una ventaja poder cambiar esto a vuestro antojo. Ahora, el ejemplo de escaneo de un rango de puertos.

sudo hping3 –scan ‘1-100’ 127.0.0.1

El tercer uso que le podemos dar a “hping” es emplearlo como el comando “traceroute“. que para el que no lo lo sepa, básicamente lo que hace es ver el camino que recorre un paquete desde un origen a un fin, enviando paquetes consecutivos incrementando su TTL o tiempo de vida. Evidentemente, esto es mucho más fácil hacerlo con el comando “traceroute” que con “hping“, ya que esta automatizado y nosotros lo vamos a tener que realizar a mano, pero de nuevo el esfuerzo queda compensado por la posibilidad de asignar las banderas (“flags“) a nuestra elección.

Existen dos formas de realizar esto, con el parámetro “-t” donde especificamos nosotros el valor de TTL que deseamos, o con el parámetro “-z” que que hace que cada vez que pulsemos la combinación de teclas “Ctrl+z” se incremente el TTL. Un ejemplo para realizar las dos ejecuciones sería el siguiente:

sudo hping3 -t 1 192.168.1.3

sudo hping3 -z 192.168.1.3

Y por último, pero no menos importante, enviar paquetes. Alguno pensara, pues vaya, eso se puede hacer con muchos programas. Bien, subamos unas lineas y recordemos como empezaba el post, “…podemos generar paquetes TCP/IP manipulados…“. Hasta ahora hemos manipulado las banderas de estos paquetes, podíamos haber manipulado sus tamaños, pero una de las cosas mas destacables, es que podemos manipular sus ip’s y los puertos de las conexiones, lo cual es muy interesante para falsificar tráfico en la red. Es decir, podemos enviar paquetes a una red donde la dirección de origen no sea la de nuestro ordenador.

Voy a mostraros un ejemplo. Vamos a generar tráfico en la red desde un ordenados con IP = 192.168.1.65, este ordenados no existe realmente, pero vamos a probar. Para comprobar esto, como lo voy a hacer en mi ordenado voy a arrancar el “Wireshark” para capturar paquetes y ver el resultado. También el que quiera puede usar “tcpdump“, el que os sea mas cómodo. Para hacerlo, el interfaz de captura será el de “loopback” o “lo“. Ejecutaremos lo siguiente:

sudo hping3 -a 192.168.1.65 -t 123 -s 100 -p 80 127.0.0.1

-a: Dirección origen.

-t: Valor del TTL.

-s: Puerto origen.

-p: Puerto destino.

<host>: Dirección de destino.

Paquetes falseados
Paquetes falseados

Como se puede ver en la imagen, los paquetes generados no llevan la dirección IP de mi ordenador, que es 192.168.1.2, si no que llevan la que le hemos puesto en “hping“. Ni que decir tiene, que si hacéis esto y analizáis los paquetes más a fondo en el Wiresark, veréis que todas las direcciones MAC están a cero, pero no todos los log’s registran las MAC’s.

Bueno, hasta aquí hemos llegado hoy. Si tenési dudas o comentarios o más ideas interesantes sobre como utilizar la herramienta os animo a comentarlo. Nos vemos.

Falsificar paquetes – hping

19 thoughts on “Falsificar paquetes – hping

  1. Juampi says:

    He recibido sucesivos escaneos de puertos.
    este es uno de ellos:

    TCP ports 23422, 3124, 3128, and 808 have been scanned from 118.161.233.111

    La dirección determina que es HINET.NET [118.160.0.0 – 118.167.255.255]

    Pero me ha ocurrido con varias IP’s diferentes por lo que veo eventual la falsificación de paquetes ocultando la IP del equipo real.

    ¿Existe alguna forma de evitar este escaneo? A parte del Firewall claro…

    Like

  2. Juampi says:

    Verificando con Whois, recibi el informe de que HINET-NET a cambiado a APNIC.
    He visto muchos artículos que hacen referencia a APNIC como culpable de los escaneos de puerto, pero APNIC informa que nada tiene que ver con esos tipos de escaneo, donde siempre reciben denuncias de Port Scan por parte de los usuarios. ¿Cuál es la realidad de esto?
    Además tengo el puerto FTP (21) deshabilitado, pero al hacer un diagnóstico de red, el informe detalla que la conexión FTP ha respondido correctamente.
    Sólo tengo habilitados los puertos TCP 443 y 80, el 21 está deshabilitado.
    Los puertos UDP los tengo deshabilitados dejando sólo el valor 1.
    ¿Puede que algún malware en mi equipo esté abriendo el puerto FTP (21)?

    Like

  3. svoboda says:

    Lo primero saludarte. Respecto a tu primer comentario, no existe ninguna forma de evitar que te hagan un escaneo de puertos ya que es algo externo que realiza una persona ajena a tí. Lo único que puedes hace es tener todo bien configurado, los puertos bien cerrados, y si puedes, configurar tu Firewall lo más restrictivo posible para que de la menor información posible. La única solución externa sería hablar con tu ISP y comentarselo, pero no creo que te hagan ningún caso, además, si cambian las IP’s desde donde vienen los escaneos tampoco podrán hacer nada.

    De todas formas, si solo te escanean los puerto que has comentado, que son pocos, no parece preocupante, parece más un barrido para ver máquinas activas. Sería más preocupante si fuera más exahustivo (todos los puertos) a muy a menudo desde la misma IP.

    Respecto a que estén falsificando tráfico al tener varias IP’s no tiene porque ser así, basta con que tengan una IP dinámica para que salgan IP’s diferentes.

    Sobre el segundo comentario, APNIC, por lo que yo se, es una base de datos “whois” para la zona pacifica asiatica, y como has dicho tiene muchas quejas sobre escaneos, si son reales o no no tengo ni idea.

    Respecto a lo del puerto 21, si estas seguro que tienes todo deshabilitado y no tienes ningún servicio corriendo en ese puerto y esta abierto, puede ser que tengas algún tipo de maldware o troyano o similar.

    Like

  4. Juampi says:

    Hola de nuevo, después de tanto tiempo. Mira, me comunicado recientemente con mi ISP, porque además empecé a recibir escaneos de puertos propios de usuarios de mi mismo proveedor de Internet. Algunos de esos escaneos detectados por el Firewall, procedían de ciertos usuarios de Internet, entrando sin problemas a mi servicio ntoskrnl.exe por el puerto 445 o al svchost.exe por el puerto 135.
    Luego de todo esto, conseguí privar estas conexiones a través de comandos, logré identificar las direcciones IP de esos usuarios, los servidores que lo alojan, la fecha, la hora, el TTL y algunos datos más extras por parte del Firewall. Ahora, tengo mi proveedor de Internet trabajando en la resolución de este problema, detallandoles las IP’s, los servidores que lo alojan, la fecha y la hora, ellos están revisando sus bases de datos para identificar las procedencias. Desde ahora, no he recibido tantos Port Scan como antes, y es muy raro encontrar uno. Es sabido que a veces, no es culpa de esos usuarios, quizás ni ellos saben de los escaneos de puerto que se realizan desde su computador, muchas veces, ocurre que sus máquinas están infectadas por gusanos que se intentan propagar de manera automática. Cierro este comentario, diciendo que, mi ISP me ha dado bola y está trabajando en el pedido. Por ahora, no tengo escaneos de puertos. Cabe aclarar, que ciertos escaneos de puertos, son típicos de sitios que intentan propagarse como medios publicitarios. Finalizando, APNIC siempre será responsable de estos Port Scan, debido a que no cumplen con una infraestructura sólida. Gracias amigos mios por el aguante.

    Like

  5. Tommy says:

    Qué hay de la herramienta UMIT en Ubuntu. Que sucede cuando detectamos los puertos abiertos de un servidor. Cómo podemos usar esos puertos abiertos para aprovechar tomar ventaja y hacer algo a traves de ellos. ¿Con que herramienta se puede inyectar o sacar datos más completos para tomar el control de la PC víctima?. Yo he usado Umit y me da todos los datos necesarios, desde los puertos abiertos, los filtrados, el sistema operativo que usa, la versión, si usa modem cableado o wireless, los paquetes TTL, y hasta es posible poner una IP distinta a la nuestra para que el computador receptor interprete a este como el origen del escaneo, ocultando nuestra IP real. ¿Como aprovechar esos puertos abiertos?.

    Like

  6. svoboda says:

    Hola de nuevo Juampi, me alegro que lo estés solucionando todo, y como bien dices, en muchas ocasiones los propios usuarios desconocen que su pc esta infectado y que están llevando a cabo actuaciones de dudosa legalidad desde ellos. Por eso, hay que prevenir todo lo que se pueda y de vez en cuanto escanear nuestros propios sistemas.

    Like

  7. svoboda says:

    Hola Tommy, pues lo primero recordarte que lo que planteas, si no es en tus propios sistemas, es ilegal, así que ten cuidado con lo que haces.
    Lo segundo es que una vez que tienes puertos o servicios a los que puedes acceder (en tu sistema) si quieres probar si se pueden explotar, puedes utilizar herramientas como Nessus, a día de hoy el último post del blog, o, si quieres realizarlo de una forma más manual y didáctica, con unas simples búsquedas en google encontrar vulnerabilidades o como explotar dichos puertos o servicios. Aquí, tengo pensado hacer algún día demos de como vulnerar nuestros servidores, pero a día de hoy es un poco pronto aún. Primero me gustaría ver más herramientas de prevención y diagnóstico.

    Like

  8. BiteAciD says:

    Hola:

    Me parece muy buena la info…
    Sabiendo que nmap y hping tienen bastante en comun con sus diferencias respectivas que has mencionado mi duda es, cuando hacemos spoof de ip en un analisis a un servidor ….es posible detectarlo?, me planteo esto por que en nmap aun cuando aplicas ej :nmap -NP -e eth0 -S ipfalsa ipobjetivo —————–podria ser detectado con un IDS y aun tambien usando decoy, ya que hay IDS que envian un ping de respuesta asi determinan cual es la ip verdadera (corrigeme si me equivoco)—– ya he probado con ambos… Sabemos que tenemos un rango de Ips que funcionan menciono esto por ejemplo en un servidor de irc no puedes spoofear con ciertos ip por que ya estan bloqueados asi tambien algunos IDS avanzados que estan configurados para esos rangos…
    Otra pregunta avanzando en el tema de ocultamiento de identidad que creo, dentro del analisis, es parte fundamental. Cual es el metodo mas eficaz para ocultar tu identidad en un analisis, obviamente ya habiendo hecho un MAC spoof, IP spoof (no100% efectivo)?
    Hping puede pasar a traves de un proxy para hacer un analisis??

    Saludos

    Like

    1. svoboda says:

      Deberías probar nmap con alguna de las opciones “-sF -sX -sN” en principio, para hacer escaneos indetectables son las que se suelen usar ya que realmente manda paquetes de cierre y no de intento de conexión. De todas formas, si el IDS está lo suficientemente bien configurado, y se molestan en mirar logs de conexión, el camino sería utilizar un proxy o más si bloquean IP’s. Lo cual nos lleva a la siguiente pregunta. Si que deberías poder usar proxies para hacer esto (todo depende de la configuración que tengan), de todas formas, lo más usual es conectarte mediante proxies a un sistema desde el que puedas lanzar en análisis no lanzar el análisis a través de una cadena de proxies.

      Like

    1. svoboda says:

      Solo le he arrancado por curiosidad alguna vez, me refería a algo más manual, pero supongo que podrá valer.

      Realmente, me referia a hacer conexiones a varios sistemas uno tras otro hasta que desde el último lanzas el escaneo.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.