Español | English
rss facebook linkedin Twitter

Triquiñuelas a nivel de red

Últimamente me ha tocado hacer alguna que otra auditoría de caja negra de nivel de red y, aprovechando la coyuntura, se me ha ocurrido que podría ser interesante dedicar este post a explicar algunas de las técnicas que suelen utilizarse particularmente en la auditoría de routers. Si bien, es necesario aclarar antes de nada que estas técnicas no siempre funcionarán. Hoy en día existe una mayor conciencia de seguridad y es habitual seguir guías y plantillas de configuración que mejoran mucho este aspecto. Ahora sí, al tajo!

Aunque pueda parecer extraño, es bastante habitual aprovechar que algunas de las tarjetas de red del router no realizan correctamente el relleno (“padding”) durante el proceso de generación de tramas. Para comprobarlo, se puede enviar a la interfaz del router un paquete "icmp echo request" con un tamaño anormalmente pequeño. De esta manera, es posible que al generarse la estructura de datos que representará la trama que encapsula el "icmp echo reply", se reserve una cantidad de memoria mayor que la necesaria. La parte sobrante, si no se realiza un adecuado relleno (p.e. “padding” con ceros), contendrá probablemente datos que operaciones anteriores hayan podido dejar en la memoria del router. Para entender un poco más en detalle el potencial de este ataque se ilustra con el siguiente ejemplo, en el que se hace uso de la herramienta ping de Linux (ping -s 0 IP_ROUTER) y se captura el tráfico de respuesta con tcpdump.

10:15:44.928354 router > station: icmp: echo reply
0x0000 4500 001c 8ae3 0000 fe01 aea9 c0a8 0101       E...............
0x0010 c0a8 0102 0000 17f0 e80c 0003 6377 437a       ............cwCz
0x0020 5010 0400 434a 0000 0204 0200 c0a8            P...CJ........

10:15:45.938513 router > station: icmp: echo reply
0x0000 4500 001c 8ae4 0000 fe01 aea8 c0a8 0101       E...............
0x0010 c0a8 0102 0000 17ef e80c 0004 5061 7373       ............Pass
0x0020 776f 7264 3a20 0000 02ac 3c93 c0a8            word:.....<...

10:15:46.948675 router > station: icmp: echo reply
0x0000 4500 001c 8ae5 0000 fe01 aea7 c0a8 0101       E...............
0x0010 c0a8 0102 0000 17ee e80c 0005 6377 437c       ............cwC|
0x0020 5010 03fe 4349 0000 0204 0200 c0a8            P...CI........

Sí, veis bien, ¡una de las contraseñas del router!

Por otra parte, muchas veces puede venir bien conocer información relativa a la máscara de red que se emplea en una interfaz de un router concreto. Esto ayuda a confeccionar un mapa del segmento de red al que se encuentra conectada dicha interfaz y así obtener nuevos hosts potencialmente vulnerables y que deberemos auditar. Para ello bastaría realizar un escaneo de pings con Nmap al segmento definido por la máscara de subred averiguada. La manera de obtener esta máscara de red se basa en dos de los mensajes de control del protocolo ICMP encontramos. Estos son, "address mask request" y "address mask reply", cuyos correspondientes valores para el campo tipo de la cabecera ICMP son 17 y 18 respectivamente, ambos con valor 0 en el campo de código (véase figura).

Una manera de generar paquetes icmp de este tipo es utilizando Sing, una excelente herramienta para generar paquetes icmp y además creada por uno de nuestros compañeros de S21sec. Basta con pasarle la opción correcta y el host de destino:

sing –mask IP_ROUTER

Por otro lado, para poder descubrir la máscara que tiene configurada una interfaz tendremos que saber antes qué interfaces tiene un router. Existen distintas maneras de lograr esto. Así, podríamos utilizar traceroute contra distintos hosts conocidos, ya sean internos o públicos en Internet. Los hosts conocidos podrían ser los servidores de DNS, algún servidor de base de datos que nos resulte familiar, etc. Según la tabla de rutas del router, los datagramas IP saldrán por una u otra interfaz logrando así nuestro objetivo. Sin embargo, existe otra alternativa a traceroute y que nos ayudará a afinar más. Si recordáis, cuando estudiasteis el protocolo IP habríais visto que en su cabecera existe un campo de opciones. De entre las opciones posibles, existen dos que permiten especificar la ruta que el datagrama IP deberá seguir de manera explícita, es decir, sin hacer caso de las tablas de rutas de los routers intermedios entre el origen y el destino. Si el router que estamos auditando acepta source routing, que es como se le conoce a esta característica del protocolo IP, podremos aprovecharlo para identificar nuevos interfaces y segmentos de red. Una manera de hacer source routing es utilizando Sing, como en el siguiente caso:

sing -tstamp cisco@10.13.1.1@wakeup.man@www.hicks.org

Eso sí, recordad que sólo nos permitirá hacerlo con paquetes icmp.

Pero la utilidad del source routing no termina aquí. Imagínese por ejemplo que alguien con malas intenciones, al que llamaremos Mallory, no logra atacar la red A porque está bien protegida por un firewall. Supongamos ahora que Mallory descubre que la red B tiene comunicación directa con la red A. ¿Qué le impide intentar utilizar source routing para lograr el objetivo de penetrar y atacar la red A pero en este caso a través de la red B?

Elyoenai Egozcue,
S21sec labs


(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login