Obrir sessió
logo

DEFENSA DAVANT DE LES CIBERAMENACES

barra-separadora

Stuxnet, así se llama un virus del que ya se conocía su existencia en junio pero que ha desatado la alarma de los expertos a medida que han analizado su potencial destructivo. Algunos medios aseguran que una central iraní habría sido uno de sus objetivos, pero este extremo no se ha confirmado. Siemens ha declarado que su programa no ha sido suministrado a la citada central. Las autoridades iraníes negaron de entrada que la central fuera víctima del virus, aunque posteriormente admitieron que había contagiado equipos ajenos a los principales sistemas de la planta. Las autoridades iraníes ha reconocido estar padeciendo un ataque informático ya que más de 30.000 direcciones IP de centros industriales del país se han visto afectadas. Las mismas autoridades aseguran, sin embargo, que los cortafuegos de sus sistemas han combatido con eficacia la expansión del mismo.

La empresa alemana Siemens ha asegurado que tiene noticias de 15 clientes infectados, "pero en ningún caso ha habido consecuencias para la producción de las empresas contagiadas". Siemens ha elaborado un antídoto este mes y desde su instalación no ha recibido más noticias de infecciones entre sus clientes. El virus aprovecha una vulnerabilidad de Windows para penetrar en los ordenadores. La citada vulnerabilidad ha sido corregida.

Antecedentes, propagación, intalación rastros y efectos del Stuxnet


En el último mes y medio ha habido mucho revuelo por el gusano Stuxnet, o mejor dicho, por el primer rootkit conocido para sistemas de control, y en concreto para el sistema SCADA de Siemens WinCC. La explicación que viene a continuación está basada principalmente en el trabajo realizado por Industrial Defender en su whitepaper sobre Stuxnet y en la información facilitada por Richar Langner en su página web.

Los antecedentes

Stuxnet es detectado por primera vez el 17 de junio de 2010 por la empresa antivirus bielorusa VirusBlokAda. Inicialmente se le considera un gusano ya que aprovecha ciertas vulnerabilidades para propagarse e infectar distintas máquinas. Más adelante Symantec anuncia que también cuenta con propiedades de rootkit (el primero orientado a los sistemas de control), ya que es capaz de modificar el comportamiento normal de distintos componentes del sistema de control y oculta su presencia para no ser detectado.

Existen dos variantes básicas de Stuxnet, la primera Stuxnet.A/B, que viene firmada con un certificado legítimo de RealTek. La segunda en cambio viene firmada por un certificado de JMicron, también legítimo. Los certificados hacen que sea posible su instalación de forma transparente para el usuario en máquinas Windows Vista y Windows 7. La primera variante, ha sido sin duda la más extendida, y de hecho la más estudiada.

Propagación de Stuxnet


La principal vía de infección es a través de llaves USB. Stuxnet aprovecha la ya famosa vulnerabilidad 0-day (actualmente existe ya un parche) en el manejo de ficheros .LNK, de la que ya avisamos en nuestro CERT, por la que con solo visualizar en Windows Explorer los ficheros de acceso directo contenidos en una llave USB, se ejecuta automáticamente código del fichero al que hace referencia dicho acceso directo, en concreto en el caso de Stuxnet unos ficheros .tmp que contienen los binarios de Stuxnet.

Otras vías de infección son a través de recursos de red compartidos (concretamente Admin$) en los que la máquina infectada tiene permisos de escritura, y a través de una vieja conocida, la vulnerabilidad de RPC usada por Conficker y otros gusanos, y de la que ya hablamos en nuestro blog.
Instalación y rastros

Stuxnet crea una serie de ficheros que son visibles con Windows Explorer. Concretamente instala dos drivers en %SystemRoot%\system32\drivers\, mrxcls.sys y mrxnet.sys, así como dos ficheros .pnf en la ruta %SystemRoot%\inf\, oem6c.pnf y oem7a.pnf. Igualmente, se crean dos servicios no visibles a través de INICIO>Ejecutar>services.msc llamados MRXCLS y MRXNET, y sendas claves de registro.

Por otro lado, una vez que se infecta la máquina, los ficheros .tmp y .lnk de las llaves USB quedan ocultos a Windows Explorer.

Antes mencionábamos que Stuxnet utiliza certificados legítimos de RealTek y JMicron. Estos es necesario para lograr instalar los drivers mrxcls y mrxnet en Windows Vista y Windows 7, ya que Windows 7 rechaza instalar drivers que no estén firmados con un certificado confiable, y Windows Vista te pregunta si deseas instalar programas que no estén firmados de esta forma. Los certificados son legítimos aunque ya han sido revocados.

Pero, ¿y qué hace?

Una vez infecta la máquina, Stuxnet contacta con su C&C y envía, de forma cifrada, información básica sobre el host comprometido utilizando la URL http : ///index.php?data=. Esta información incluye:
•Información de la versión de Windows

•Nombre del host

•Nombre del grupo de trabajo

•Un flag indicativo de si el software de WinCC está o no instalado

•Direcciones IP de todas las interfaces de red

Por lo visto, el C&C puede responder bien enviando la orden de ejecutar una llamada a un procedimiento en el host comprometido o descargando una nueva DLL para que Stuxnet la cargue. Las funciones a las que se puede acceder remotamente son:
•Lectura de un fichero

•Escritura en un fichero

•Borrado de un fichero

•Creación de un proceso

•Inyección de una dll en el proceso Isass.exe (proceso que se encarga del funcionamiento de los protocolos de seguridad que maneja Windows)

•Carga de alguna dll adicional

•Inyección de código en otro proceso

•Actualizar los datos de configuración del gusano

Como ya hemos mencionado al principio del post, Stuxnet tiene como objetivo los hosts que ejecutan el HMI de WinCC. Todos los componentes de WinCC utilizan en la misma máquina una base de datos MS SQLServer para almacenar datos de configuración. WinCC utiliza una contraseña “hardcodeada” (y conocida) para acceder a la base de datos. Así, Stuxnet aprovecha esta grave vulnerabilidad de WinCC para lanzar consultas SQL y extraer información de direcciones IP y número de puertos utilizados en otras máquinas WinCC conectadas en el sistema de control.

Además, Stuxnet instala un wrapper para la librería s7otbxdx.dll que es la utilizada por el SCADA WinCC para la comunicación con los PLCs en campo. En realidad, cada vez que el sistema de control hace uso de esta librería, el gusano intercepta las llamadas a las funciones, y en algunos casos pasa directamente la llamada a la función de la dll legítima y en otros casos altera los datos enviados antes de pasárselos a la correspondiente función. Lo mismo ocurre con los datos devueltos por la dll legítima, en algunos casos los datos se pasan sin ser alterados, y para otras funciones éstos sí se modifican. Es principalmente por esta característica por lo que Symantec considera a este gusano el primer rootkit para sistemas de control. El listado de funciones que modifican las entradas y las salidas son:
•s7_event

•s7ag_bub_cycl_read_create

•s7ag_bub_read_var

•s7ag_bub_write_var

•s7ag_link_in

•s7ag_read_szl

•s7ag_test

•s7blk_delete

•s7blk_findfirst

•s7blk_findnext

•s7blk_read

•s7blk_write

•s7db_close

•s7db_open

•s7ag_bub_read_var_seg

•s7ag_bub_write_var_seg

Todas estas funciones están relacionadas con la programación de PLCs. De hecho, si el programa de un PLC fuera alterado de alguna manera, el wrapper podría llegar a ocultar las modificaciones realizadas, de tal manera que los usuarios que tratasen de examinar el programa del PLC, desde un host Windows comprometido, ni se dieran cuenta de dicha modificación. Pero Stuxnet no se limita a ocultar las modificaciones del programa de un PLC, sino que también puede alterarlo. Tanto es así que cuenta con unos setenta bloques de función (function blocks) que es capaz de cargar en los PLCs. Todavía se desconocen los detalles sobre el alcance de dichos bloques de función, pero con toda probabilidad Robert Langner hable sobre el tema en la conferencia ACS. La presencia de estos bloques de función hace pensar que el propósito de Stuxnet es más el sabotaje que realizar labores de inteligencia.
Reflexiones

En el estudio revelado por Richard Langer en su web puede verse que se trata de un ataque bien dirigido, para el que se ha precisado información del propio proceso que controlan los PLCs. De hecho el país con más infecciones es Irán, popular en la actualidad por sus investigaciones en la energía nuclear. Este gusano requiere amplios conocimientos de distintas disciplinas: robo de certificados, conocimiento del SCADA WinCC de Siemens, las vulnerabilidades 0-day, etc. Parece por tanto un ataque largamente planificado, y por alguien o algo con bastantes recursos. Quién sabe, ¿creéis que pueda tratarse de los servicios de inteligencia de algún país enemigo? ¿Se os ocurre alguno?
Soluciones a día de hoy

Antes de comenzar, queremos dejar claro que la medida más efectiva para reducir la probabilidad de infección es minimizar el uso de dispositivos USB en este tipo de instalaciones. De todas maneras vamos a repasar otras soluciones que han ido apareciendo y que podéis encontrar de forma más detallada en el whitepaper de Industrial Defender.

A día de hoy, las principales casas antivirus cuentan con las firmas necesarias para detectar Stuxnet. Igualmente Microsoft ya tiene un parche contra la vulnerabilidad .LNK, concretamente el MS10-046. La vulnerabilidad de RPC se solucionó en 2008 con el parche MS08-067. Si bien es cierto que muchos sistemas de control en la actualidad no cuentan con un adecuado programa de gestión de parches o de un sistema antivirus, no lo es menos que a día de hoy no se han reportado incidentes de relevancia en infraestructuras críticas, por lo que se refuerza la teoría de que se trata de un ataque dirigido.

De todas formas, para los sistemas de control del grupo anterior, también existen dos herramientas que ofrecen un workaround a la vulnerabilidad .LNK sin necesidad de instalar el parche MS10-046 o de tener un sistema antivirus actualizado. Una viene de la mano de Microsoft, y la otra de la mano de Siemens. En ambos casos, se deshabilita la visualización de los iconos de acceso directo. Se trata de una solución preventiva, pero no ayuda a aquéllos que ya se encuentran infectados. Otra solución preventiva de la mano de Siemens es la mejora de la seguridad de algunos parámetros de configuración del servidor SQLServer, especialmente en lo referente a la autenticación de clientes.

Probablemente, la mejor solución venga de la mano de los IPS, que como ya se explicó en este post, permiten crear una lista blanca de qué aplicaciones pueden ejecutarse y cuáles no y además no suponen el problema de la gestión del cambio típicos del parcheo y la actualización de los sistemas antivirus en el mundo de las infraestructuras críticas. De todas formas no hay que olvidar que un cortafuegos bien configurado también prevendría a Stuxnet contactar con su C&C, evitando así que pudiera actualizarse o recibir órdenes específicas.

Respecto a soluciones para quienes ya se han visto infectados, Siemens ha publicado una lista de instrucciones de cómo usar TrendMicro “Sysclean” (la casa antivirus con la que puedes instalar WinCC garantizando el soporte por parte de Siemens) para eliminar Stuxnet. Sin embargo, el hecho de que muchos sistemas de control se encuentran altamente personalizados (según las necesidades del cliente), hace necesario que los propios ingenieros trabajen codo con codo con los ingenieros de Siemens para conseguir eliminarlo de manera exitosa. Se trate por tanto de un proceso arduo y costoso. Hay que pensar, que no solo hay que desinfectar cada uno de los host Windows infectados, sino que también habrá que revisar cada uno de los PLCs para asegurarnos de que el programa no ha sido alterado. Artículo escrito por Elyoenai Egozcue.

El País (27-09-2010)
http://www.elpais.com/articulo/tecnologia/Alarma/virus/pensado/sabotaje/industrial/

Hadden Security (26-09-2010)

http://haddensecurity.wordpress.com/2010/09/26/stuxnet-antecedentes

The Guardian (26-09-2010)

http://www.guardian.co.uk/world/2010/sep/26/iran-stuxnet-worm-nuclear

Tornar

Este sitio web utiliza cookies propias y de terceros para el correcto funcionamiento y visualización del sitio web por parte del usuario, así como la recogida de estadísticas. Si continúa navegando, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información. Modificar configuración