viernes, 18 de septiembre de 2015

Los administradores que no amaban a sus routers Cisco

El pasado 15 de septiembre se publicó un informe de la compañía FireEye en el que mostraban los detalles de un caso de infección de routers Cisco que merece la pena analizar.

¿Qué es un router? Una cajita con el tamaño suficiente para estorbar en cualquier lugar donde la pongas, (rack del CPD, detrás de un mueble, encima del armario…), llena de cables para que tropieces y que permite que tu red interna se conecte a otras redes internas, entre otros esquemas, para intercambiar información ¿Ingenioso, verdad? Desde pequeñas oficinas (SOHOs) hasta routers frontera de una organización considerable tienen un elemento en común: los instalas, configuras, compruebas que hay conexión y te olvidas de ellos. "Fire and forget" como se diría en la jerga militar.

Ese "y te olvidas de ellos" (voz haciendo eco en tu cabeza) tiene una importante contraprestación: que alguien, en la oceánica inmensidad de la red, saque partido de ese olvido.

Tal vez la cifra parezca ridícula. FireEye detectó 14 routers Cisco con una versión modificada de su firmware original que permite el acceso a la red interna a través de una puerta trasera. 14 routers no son muchos routers, prácticamente nada, una mota de polvo en una tormenta de arena. A lo largo de los días la cifra subió a 79 más, pero como se apunta desde Arstechnica es posible que algunos positivos sean honeypots desplegados por otros investigadores. No es una opción descartable.

De cualquier modo las cifras no deben apantallar la carga explosiva de los hechos. Que una infección no alcance cotas significativas no se traduce en que tengas inmunidad frente a ella.

Hagamos un inciso antes de poner nuestros ojos en el microscopio para ver de cerca al bicho. Seguramente algunos lectores que administren routers Cisco estén en un momento de tensión innecesaria. No se trata de una vulnerabilidad específica de Cisco, no hay ningún gusano suelto (de otro modo las cotas sería exponencialmente superiores). Se sospecha que los autores se están aprovechando de aquellos routers que poseen credenciales de fábrica o contraseñas comunes para acceder al dispositivo. El porqué de Cisco y no otros es posiblemente debido a que este opus diabólico está diseñado exclusivamente para IOS, el sistema operativo de Cisco. Así que si administras Cisco y cambiaste las contraseñas por unas robustas, tranquilo, de lo contrario, si no las cambiaste o pusiste unas débiles…tal vez deberías hacer algunas comprobaciones.


SYNFul Knock

Routers infectados por país. Fuente: zmap.io
El "implante" o SYNFul Knock, como lo llaman en el informe de FireEye, consiste en una imagen de Cisco IOS modificada para permitir el acceso al dispositivo a través de una puerta trasera y capacidad modular para que el atacante pueda cargar funcionalidad acorde al tipo de acción que pretenda realizar.

Lo realmente curioso son los esquemas de comunicación que se han montado los atacantes para interaccionar con el dispositivo. Más que un canal encubierto básicamente se trata de "ofuscar" el modo en el que se accede a las puertas traseras mediante la manipulación de paquetes TCP estándar. Hablamos de ofuscar porque una simple captura de tráfico entre atacante-dispositivo hace saltar las alarmas si te fijas en los detalles. Naturalmente, lo osado es dar con los motivos para hacer tal captura de tráfico.

Llamativo que las puertas traseras solo puedan ser activadas a través de puertos estándar pero sin cifrado, léase: HTTP (a secas), telnet y consola. Se descartan los servicios HTTPS y SSH. El HTTP solo es usado por los atacantes para activar ciertos módulos. Crean un paquete TCP especial, lo envían hacia el puerto 80 y el firmware infectado se encarga de activar el módulo malicioso seleccionado. Si lo que desean es acceder directamente a un terminal de comandos IOS, el sistema de puerta trasera observa si las credenciales son válidas y corresponden a las de un atacante, activando entonces las funciones de puerta trasera (una shell). De lo contrario, las pasa al verdadero sistema de autenticación para que el usuario legítimo no observe nada un comportamiento extraño.

Uno de los factores que tuvieron cuidado de diseñar los autores fue el tamaño característico de la imagen binaria de Cisco IOS. ¿Cómo meter nueva funcionalidad sin engordar el tamaño del firmware? ¿Dieta milagro? No. Básicamente borrando funciones que no eran usadas por el dispositivo objetivo y sustituyéndolas por la funcionalidad maliciosa. Incluso se llegan a borrar algunas cadenas de caracteres de información de IOS por cadenas usadas para el servidor malicioso en HTTP. Algo que, absurdamente, identifica un router como infectado debido a que responde como un servidor Apache sobre un sistema GNU/Linux, pero que hace que el puerto 80 no destaque en escaneos arbitrarios al pasar por un servidor. Es decir, si sospechas de tus routers y escaneas el puerto 80 en busca de cabeceras te das cuenta, pero durante un escaneo rutinario puede pasar por debajo del radar.


Apretones de manos con guantes blancos

La comunicación entre el centro de control y sus tropas desplegadas es digna de detalle.

El router afectado mantiene a la escucha los puertos asociados a su administración. El preámbulo se efectúa con un paquete TCP SYN dirigido al puerto 80 con una constante entre el número de secuencia y el número reconocimiento ("acknowledgment"): 0xC123D.

El SYN-ACK del router responderá con un número diferencial secuencial del anterior: 0xC123E. Los siguientes bytes en las opciones TCP del paquete: "02 04 05 b4 01 01 04 02 01 03 03 05", el puntero URGENT a 0x0001, pero no su bandera correspondiente. También reutilizará el número de reconocimiento del paquete SYN como número de secuencia de su SYN-ACK, número que generalmente es pseudoaleatorio en implementaciones comunes de pila TCP.

Tras el ACK, el centro de control enviará un paquete con las banderas PUSH y ACK activadas, a partir del offset 0x62 la cadena "text" y a 0x67 el comando enviado al router, cifrado trivialmente con XOR. 

Este jaleo de intercambios heréticos se inspira en la técnica del port-knocking, secuencias de paquetes modificados para abrir un puerto en un cortafuegos, grosso modo. 


Fin de la fiesta

Todas estas características crean una firma perfecta para alimentar los IPS/IDS y determinar si ciertos routers se hayan afectados. El propio equipo de FireEye ya nos provee de herramientas para su detección (interesante también para auditorías, ejem, ejem)
Cisco Router 1841

De entre el grupo de dispositivos afectados sobresalen los siguientes modelos de Cisco:

Cisco Router 1841, 2811 y 3825.

No existe correlación entre la distribución geográfica o una organización determinada, aunque de momento Estados Unidos, Líbano o Rusia son los países que más positivos detectados acumulan, el número es pequeño para sacar conclusiones. Ver el estudio de los autores del escáner ZMap para más información.

Cisco ya venía sospechando de este tipo de esquema de ataque. No en vano el 11 de agosto pasado publicó una entrada en su blog bastante reveladora sobre instalación de firmwares maliciosos.


El maldito abracadabra

"…El castillo se desgranaba ante nuestros ojos. A pedazos. Piedra a piedra. De nada sirvieron sus robustos muros, su abismal foso ni las orgullosas torres que rozaban el mismo cielo. Una sola palabra bastó para que el eco de las montañas devolviera el grito desnudo de un viejo gruñón en una fuerza imperturbable, demoledora. Lo que siglos enteros llevó construir a los hombres iba a ser reducido al polvo, apartado a una amarillenta página de una historia que nadie recordará mañana…en cuestión de minutos..."

Resumiendo sin tanta prosa: Cambia las contraseñas por defecto y olvídate del perro cuando elijas una.

Más información:

Malicious Cisco router backdoor found on 79 more devices, 25 in the US

SYNful Knock - A Cisco router implant - Part II

SYNful Knock - A Cisco router implant - Part I
In Search of SYNful Routers

Evolution in Attacks Against Cisco IOS Software Platforms






David García
Twitter: @dgn1729

No hay comentarios:

Publicar un comentario en la entrada