Gusano y virus de macro al mismo tiempo

Texto: Javier Guerrero Díaz


Suppl es, técnicamente, un gusano que aprovecha las capacidades que otorgan las macros de "Word" para instalarse en el sistema. Para ello el usuario debe abrir el documento infectado, que puede haber recibido por Internet o por cualquier otro medio. Este documento sólo posee una macro, de nombre Document_Open, que es ejecutada automáticamente al ser abierto; la macro crea una copia del documento en cuestión en el directorio System de Windows, con el nombre de ANTHRAX.INI. El documento maligno incluye una DLL comprimida con el método LZH, que es copiada también al directorio de sistema de Windows. Esta DLL es una versión "troyanizada" de WSOCK32.DLL (la librería de Windows que gestiona las conexiones TCP/IP mediante Sockets) que el gusano utiliza para poder enviarse por correo electrónico.

Un buen truco
 

Para poder llevarlo a cabo, debe reemplazar el fichero original por el suyo propio, pero no puede hacerlo en la misma sesión, ya que las DLL están en uso por el sistema operativo, así que añade determinadas instrucciones al fichero WININIT.INI de manera que, durante el siguiente inicio de Windows, el propio sistema renombra su WSOCK32.DLL a WSOCK33.DLL, sustituyéndola por su propia versión a la que asigna el mismo nombre, WSOCK32.DLL.

Esto provoca que Windows cargue la DLL maligna, la cual, a su vez, se encarga de cargar en memoria la verdadera librería. Desde este momento, "Suppl" intercepta todas las llamadas a funciones de WSOCK32, y las envía de vuelta a la DLL original para que ésta las gestione, excepto dos de ellas: "send" y "connect", utilizadas para enviar correo electrónico. Y es así como el gusano consigue incluir su documento Word en los e-mails enviados, interceptando las funciones, haciendo su trabajo y luego devolviendo el control al código original. Es un poco como el parcheo de interrupciones pero a un nivel más alto.

Y además, destructivo

"Suppl" cuenta con un payload destructivo, que se activa cuando pasan exactamente 6 días, 18 horas, 59 minutos y 18 segundos desde su entrada en el sistema. En ese momento utiliza la función del API de Win32 GetLogicalDriveStrings para obtener todas las letras de unidad disponibles y luego filtra el resultado mediante la función GetDriveType, quedándose sólo con los discos duros. Es entonces cuando "Suppl" localiza en dichas unidades, ya sean locales o remotas, todos los ficheros con extensión DOC, XLS, TXT, RTF, DBF, ZIP, ARJ y RAR, truncándolos a cero bytes y haciéndolos irrecuperables.