Éxitos y fracasos de Stuxnet

Stuxnet ha marcado un antes y un después en la mitología del malware, acaparando titulares y una buena parte de las últimas noticias mediáticas sobre malware. Hay quien dice que asistimos al nacimiento "de un nuevo mundo". No es para menos, sus virtudes no son pocas. Pero también ha cometido un error.

Eugene Kaspersky considera que Stuxnet (diseñado y financiado supuestamente por algún gobierno para atacar el plan nuclear Iraní) es "el prototipo funcional de una ciber-arma, que dará el pistoletazo de salida a una ciber-guerra en el mundo". Según Eugene, "este programa no ha sido diseñado para robar dinero, enviar spam o acceder a datos personales: ha sido diseñado para sabotear plantas y causar daños en entornos industriales. Me temo que es el principio de un nuevo mundo. Los 90 fueron la década de los ciber-vándalos, la década del 2000 fue la de los ciber-criminales, y me temo que ahora es la nueva era de las ciber-guerras y el ciber-terrorismo".

Al margen de los hitos establecidos, veamos algunos de los puntos fuertes de Stuxnet. El uso de vulnerabilidades desconocidas hasta el momento para difundirse Stuxnet ha usado hasta cuatro vulnerabilidades desconocidas hasta el momento para ejecutar código en las máquinas infectadas. Esto lo hacía 100% eficaz contra cualquier Windows, desde 2000 hasta 7. Solo los administradores que hubiesen tomado las máximas precauciones (evitar la ejecución de programas no conocidos, limitar al máximo los privilegios u otras medidas similares) se habrían podido librar de la menaza.

El uso combinado e inteligente de estas vulnerabilidades De las cuatro vulnerabilidades desconocidas, una permitía la ejecución de código aunque el AutoPlay y AutoRun se encuentrasen desactivados. A efectos prácticos, implica que se había descubierto una forma totalmente nueva de ejecutar código en Windows cuando se inserta un dispositivo extraíble, independientemente de que se hayan tomado todas las medidas oportunas conocidas hasta el momento para impedirlo. Esto ayudaba a su máxima difusión a través de dispositivos USB y del propio explorador de Windows. Fue parcheada por Microsoft en agosto, en un boletín de emergencia.

La segunda permitía la ejecución de código a través del servicio de impresión (spooler) de cualquier Windows. En impresoras compartidas por red, el troyano podía enviar una petición al servicio y colocar archivos en rutas de sistema. Esto permitía su máxima difusión dentro de una red interna, por ejemplo. Fue parcheada en septiembre.

Las otras dos, permitían la elevación de privilegios. Esto cerraba el círculo: si los administradores habían tomado la precaución de limitar los permisos de los usuarios, el troyano podía conseguir ser administrador a través de estos fallos. No había escapatoria, puesto que podía ejecutar código tanto en red como a través de dispositivos extraíbles, y una vez ahí, obtener todos los privilegios.

Uso de certificados válidos Los drivers de Stuxnet utilizados como rootkit estaban firmados digitalmente por la empresa china Realtek. Esto significa que, en principio, solo Realtek puede ser responsable de ese código... excepto que su clave privada haya sido comprometida de alguna forma, cosa que no se ha confirmado todavía. En cualquier caso, Microsoft trabajó con Verisign para revocar en sus sistemas los certificados (con el apoyo de Realtek también). Los atacantes reaccionaron firmando su troyano de nuevo con un certificado válido de otra empresa Taiwanesa dedicada también a crear controladores, llamada JMicron. El caso es que el uso de certificados válidos les permitía instalarse sin advertencias en los sistemas de 64 bits, por ejemplo, que requieren controladores firmados.

Stuxnet ha marcado un antes y un después en la mitología del malware, acaparando titulares y una buena parte de las últimas noticias mediáticas sobre malware. Seguimos repasando algunas de sus virtudes y errores y comentaremos la evolución de algunas muestras en VirusTotal.

Objetivos concretos
Otra de sus virtudes es que dentro de su código contenía la contraseña por defecto "2WSXcder" para la base de datos central del producto SCADA WinCC de Siemens. El troyano conseguía acceso de administración de la base de datos. Los sistemas "Supervisory Control and Data Acquisition (SCADA)" son programas críticos de producción industrial: toman datos muy sensibles de sensores de una fábrica, por ejemplo, y los envían a un sistema central para ser controlados. Se usan en grandes plantas de tratamiento de aguas, control eléctrico, de tráfico... Por tanto, se trata de un malware destinado a un perfil muy diferente del usuario "medio". En otras palabras, malware para al espionaje industrial. Se encontró sobre todo en Indonesia, India, Irán y China. Esto, unido a las cualidades anteriormente mencionadas, permitía llegar a su objetivo de forma silenciosa y eficaz.

Todas estas cualidades hacen pensar que el troyano ha sido concebido no solo por una mafia organizada como la que sostiene la industria antivirus actual, sino que va más allá: forma parte de un entramado que parece tocar altas esferas. Descubrir cuatro vulnerabilidades potentes y desconocidas en Windows y crear exploits eficaces para ellas requiere tiempo y mucho conocimiento... o en su defecto, del dinero para comprarlo. El supuesto robo físico de certificados, el objetivo Iraní... los involucrados han ido mucho más allá de la simple creación de laboratorio y buscaban algo más que limpiar las cuentas de unos cuantos infectados.

El punto débil El punto débil (siempre desde el punto de vista de Stuxnet y sus creadores) ha sido solo uno: ¿por qué un gusano que se autorreplica indiscriminadamente? ¿Qué necesidad de infectar más allá de los sistemas objetivo? Esto ha facilitado su difusión, sin duda, pero también que escape del círculo cerrado que se supone eran sus objetivos primarios y, por tanto, que sea conocido, reconocido y detectado por las casas antivirus. No había ninguna necesidad de salir de los entornos SCADA, puesto que su "payload" solo era válido contra estas infraestructuras; en una máquina de usuario, resulta relativamente "inocuo".

La "fama" del troyano también ha permitido que las vulnerabilidades hayan sido eliminadas rápidamente: todavía queda una de elevación de privilegios por parchear, pero Microsoft ha solucionado tres de ellas en los últimos tres meses. Además ha provocado que los certificados sean revocados... en resumen, que su salida a los medios eche a perder el trabajo y Stuxnet no siga siendo tan eficaz. El troyano debería, o bien no replicarse indiscriminadamente, o bien controlar sobre qué sistemas lo hace para evitar los que escapen a su objetivo.

Después de reflexionar sobre las características de este malware, hemos consultado nuestra base de datos en VirusTotal, buscando referencias sobre Stuxnet para comprobar su evolución. Nos hemos llevado algunas sorpresas.

Por ejemplo, según nuestra base de datos de Virustotal, la primera referencia a Stuxnet viene el 1 de julio de 2009. Sí, 2009 (Stuxnet saltó a los medios en julio de 2010). Pero no es el troyano como tal. Lo que encontramos entonces son las primeras referencias a malware que aprovecha una vulnerabilidad por entonces llamada simplemente por algunos antivirus "Autorun". Solo era detectado por 6 motores. Lo que no sabían, es que esta sería la vulnerabilidad que más tarde (un año más tarde) se calificaría como CVE-2010-2568, y que permitía a Stuxnet la ejecución de código a través de enlaces LNK. En pocas palabras: esta vulnerabilidad (que obligó a Microsoft a publicar un parche de emergencia por su gravedad) era conocida desde hacía más de un año y, aunque algunos motores la detectaban entonces, no descubrieron que era "nueva". La metieron en el saco de malware genérico que se ejecutaba a través del Autorun. Tuvo que entrar en escena Stuxnet para que se analizase, saliera a la luz y fuera corregida.

Las primeras muestras en aprovechar este fallo vienen desde Vietnam, China y una casa antivirus en el Reino unido en julio de 2009. Se siguen recibiendo muestras, pocas, durante todo 2009 y 2010, y no es hasta julio de 2010 que es ampliamente reconocida como lo que realmente es. Una muestra real de Stuxnet en nuestra base de datos la encontramos por primera vez el 16 de mayo de 2010. Se trata de un driver (archivo .sys que contiene la funcionalidad de rootkit de Stuxnet) que no era detectado entonces por ningún motor. Sigue pasando relativamente desapercibido hasta el 7 de julio, cuando un antivirus lo bautiza como Stuxnet. A partir de ahí, recibimos muchas muestras, pero no es hasta finales de julio que es detectado por la mayoría.

El primer ejecutable Stuxnet del que tenemos noticia, se remonta también al 16 de mayo de 2010 y sigue una trayectoria muy similar al driver en nivel de detección. Durante los últimos 30 días, hemos recibido más de 300 muestras calificadas como Stuxnet, y son detectadas por una media de 31 motores antivirus (casi el 80% de detección). Esto no quiere decir que se trate del propio Stuxnet que ataca a plantas nucleares. A partir del descubrimiento de la vulnerabilidad en archivos LNK en julio, muchos otros troyanos comenzaron a incorporar esta vulnerabilidad como método de difusión. Ante la confusión inicial, las casas antivirus comenzaron a llamar Stuxnet a cualquier malware que la explotara, por tanto, podemos encontrar referencias a Stuxnet en archivos de apenas 100 bytes y en otros de hasta 5 megabytes.

Como siempre, creemos que es probable que existan otros "Stuxnet" ahora mismo ocultos en sistema críticos, que compartan las virtudes de este troyano... y todavía no hayan salido a la luz.

Más información:
Kaspersky Lab provides its insights on Stuxnet wormhttp://www.kaspersky.com/news?id=207576183
Interesante (y peligroso) troyano que aprovecha un interesante (ypeligroso) 0 day en Microsoft Windowshttp://www.hispasec.com/unaaldia/4283
La nueva variante del Stuxnet vuelve a estar firmada con un certificadoválidohttp://www.hispasec.com/unaaldia/4288

Comentarios

Entradas populares de este blog

¿Como atacar Kerberos?

El Modelado de Amenazas de Seguridad

MPLS vs. Ethernet: ¿Qué opción de conectividad WAN es mejor?