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


No hay comentarios:
Publicar un comentario