Stuxnet: Analizando su funcionamiento
La
primera ciberarma digital que llegó a infectar a más de
300.000 equipos en más de 100 países distintos era una
bomba de 500 KB desarrollada para ralentizar el
enriquecimiento de uranio en la central nuclear de Natanz ubicada en
Irán. Continuando con la serie de capítulos del libro Countdown
to Zero Day de Kim Zetter veremos realmente cómo funcionaba esta obra de ingeniería.
Como cualquier otro malware, la primera ciberarma digital se puede
dividir en dos partes. Por un lado, el payload que se encarga de
propagar el virus por diferentes equipos, y por otro lado el payload
que se encarga de robar información o hacer cualquier otra cosa, en
este caso atacar sistemas PLC de Siemens.
Stuxnet, como así se llama la ciberarma, lo primero que hacía era
comprobar si la máquina donde se iba a desplegar era de 32 o 64
bits, ya que este malware tan solo funcionaba sobre máquinas Windows
de 32 bits. Después, comprobaba si la máquina ya estaba infectada,
si era así, comprobaba si existía alguna actualización de Stuxnet
para descargarse la última versión disponible. En cambio, si la
máquina aún no estaba infectada procedía a determinar la mejor
manera para infectarla.
Para infectar la máquina se pone en marcha un rootkit que esconde
los archivos de Stuxnet al sistema operativo, de esta manera los
nombres de los archivos de Stuxnet no podían ser vistos por los
motores de antivirus y no eran analizados. Si un escáner de malware
intentaba leer el contenido de la memoria USB que estaba infectando
la máquina, el rootkit interceptaba los comandos y devolvía una
lista modificada de los archivos que contenía la memoria USB,
obviamente eliminando de la lista los nombres de los ficheros de
Stuxnet para que no fuesen analizados. Sin embargo, Stuxnet no podía
hacer un bypass de todos los motores de antivirus, así que para
aquellos motores que no podía controlar la infección, Stuxnet se
paraba y se terminaba la infección.
A continuación, si Stuxnet decidía proceder porque podía hacer un
bypass del antivirus se activaba un segundo driver con dos tareas. La
primera tarea consistía en infectar cualquier otra memoria USB que
estuviera conectada. La segunda, y más importante, era descifrar y
cargar la biblioteca .DLL, y varios de sus componentes, en memoria. A
continuación descomprimía la DLL para obtener otras DLL más
pequeñas. Una vez que todas las DLL estaban en memoria, Stuxnet
buscaba otras máquinas para propagarse y después se ponía en
contacto con el C&C. Obviamente, como todas las DLL estaban en
memoria cada vez que el equipo se reiniciaba se borraban, así que el
driver en cada reinicio tenía que volver a cargar las DLL a
memoria.
Posteriormente el malware hacía un inventario del software instalado
en la máquina y lo enviaba al C&C, si no encontraba ningún
software de Siemens ni el WinCC, Stuxnet quedaba inactivo.
Si por el
contrario encontraba software de Siemens, concretamente Siemens Step
7, y/o el WinCC, buscaba las PLC S7-315 y S7-417 de Siemens. Sólo
esta combinación de hardware y software hacían posible descifrar y
lanzar el ataque.
A continuación podemos ver las fases del ataque:
Además de la manera de cómo evitar los antivirus y la forma de
cargar los archivos en memoria, Stuxnet monitorizaba los recursos de
la máquina infectada para comprobar si la ejecución del malware
sobrecargaba la máquina. Si Stuxnet utilizaba demasiada CPU o
memoria podría ser detectado. Stuxnet también eliminaba los
archivos temporales que no necesitaba para pasar desapercibido.
Encontrar evidencias suficientes para conocer el origen del malware
es algo muy complicado a no ser que los propios desarrolladores dejen
alguna "pista". Algunos desarrolladores utilizan técnicas
para que sus propios equipos no se infecten con su propio malware,
para ello antes de infectar un equipo el malware realiza una serie de
comprobaciones para conocer si la máquina que va a infectar
pertenece al desarrollador. Stuxnet parece que tenía algo parecido,
antes de infectar la máquina comprobaba un registro de Windows y si
dentro de ese registro se encontraba la cadena 0x19790509, la máquina
no era infectada. Inmediatamente los investigadores se pusieron a
investigar qué podría significar esta cadena. Una hipótesis dice
que la cadena pertenece a una fecha, concretamente el 9 de Mayo de
1979, fecha que coincide con la ejecución de Habib Elghanian, un
importante hombre de negocios de la comunidad judía en Irán. Tras
su muerte muchos judíos migraron hacia Israel.
Otra evidencia que se encontró en el código de Stuxnet que hace
pensar que Israel está detrás de su desarrollo fue que el
compilador del malware dejó rastro del path donde se encontraba el
proyecto. Concretamente la cadena
b:\myrtus\src\objfre_w2k_x86\i386\guava.pdb que nos indica que el
nombre de usuario de la máquina es myrtus, que coincide con el
nombre hebreo de la reina judía que evitó una masacre de judíos en
el imperio persa.
Otra hipótesis del significado de myrtus puede significar My RTUs,
haciendo referencia a Unidades de Terminal Remoto que son componentes
usados para monitorizar y operar equipamiento industrial.
Sea cual sea la verdad, la especulación de quién está detrás de
este sofisticado ataque está abierta para todos los investigadores.
Commentaires
Enregistrer un commentaire