ESTE SERVICIO PUEDE CONTENER TRADUCCIONES DE GOOGLE. GOOGLE NIEGA CUALQUIER RESPONSABILIDAD RELACIONADA CON LAS TRADUCCIONES, EXPRESA O IMPLÍCITA, INCLUYENDO CUALQUIER RESPONSABILIDAD ACERCA DE LA PRECISIÓN, LA CONFIABILIDAD Y CUALQUIER RESPONSABILIDAD IMPLÍCITA DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO EN PARTICULAR Y DE NO INFRACCIÓN.

Por su comodidad, se ha traducido el sitio web de Kaspersky Lab utilizando un software de traducción de Google Translate. Se hicieron unos esfuerzos razonables para proporcionar una traducción precisa; no obstante, las traducciones automáticas no son perfectas y no hay ninguna intención de sustituir el trabajo de los traductores. Se proporcionan estas traducciones como un servicio para los usuarios del sitio web de Kaspersky Lab y se han publicado tal "como es". No hay ninguna garantía, expresa o implícita, acerca de la precisión, la confiabilidad o exactitud de cualquier traducción desde el inglés a cualquier otro idioma. La traducción de algunos contenidos (imágenes, videos, Flash, etc) podrían no ser totalmente fiel debido a las limitaciones del software de traducción.

Virus.Win9x.Memorial

Clase Virus
Plataforma Win9x
Descripción

Detalles técnicos

Este texto fue escrito por Peter Szor, Data Fellows Ltd

Memorial es un virus muy interesante de Windows 95. Ha habido un largo desarrollo en la escritura de virus de Windows hasta ahora [finales de 1997]. Sin embargo, la lista de los infectados de Windows 95 aún no es larga. Memorial muestra nuevas ideas al ser un virus "residente en la memoria" de Windows 95. Es decir, infecta archivos COM y EXE basados ​​en DOS, así como archivos Win32 PE (Portable Executable), respectivamente. El formato principal del virus es un Windows 95 VxD (Virtual Device Driver).

El virus no está encriptado en archivos COM y EXE basados ​​en DOS, sino que los archivos PE infectados están encriptados con una rutina oligomórfica (semi-polimórfica). Además, el cuerpo principal del virus (la imagen VxD) está empaquetado con un algoritmo simple. Ya hay un virus cifrado en archivos PE (llamado Win95.Mad), pero Memorial es sin duda el primer virus de Windows 95 que muestra capacidades oligomórficas. Por lo tanto, es el primer paso en el camino del polimorfismo de Windows 95.

Memorial es también un retro-virus efectivo. Manipula el registro de Windows 95 para deshabilitar varios programas antivirus conocidos.

Afortunadamente, el virus tiene algunos errores importantes, que pueden retrasar mucho la propagación. Sin embargo, se ha informado que Memorial.1213 está "en la naturaleza" en Suecia, independientemente de estos problemas.

Ejecutando un archivo COM de DOS infectado

Los creadores de virus de Windows 95 comenzaron a comprender el hecho de que las personas están intercambiando más programas de DOS que las aplicaciones de Windows 95. Esto se convierte en un gran problema desde el punto de vista del virus: simplemente no se puede propagar demasiado al infectar solo programas de Windows 95. Memorial resuelve este problema al infectar también ejecutables DOS. Los archivos infectados funcionan como droppers del módulo VxD principal.

Cuando se ejecuta un archivo COM infectado con Memorial, el virus coloca un archivo VxD en la raíz de la unidad C: llamada C: CLINT.VXD. Primero comprueba si Windows se está ejecutando actualmente. Si es así, el virus simplemente ejecuta el programa de host de DOS. De lo contrario, hace su llamada "Are you there", que es INT 2Fh AX = 0. Si, al regresar de la llamada, el registro AX está configurado en 4AB3h, el virus asume que ya está activo en la memoria y devuelve el control al programa host. A continuación, crea el archivo C: CLINT.VXD con un atributo oculto y comienza a escribir en él.

La rutina de escritura aparece como una función antiheurística. Sin embargo, el objetivo de esta función es diferente. El cuerpo principal del virus está empaquetado a 7508 bytes, y se supone que esta función debe descomprimirlo. El algoritmo es muy simple, pero efectivo. Los archivos VxD están en formato LE (Ejecutable lineal). La estructura de estos archivos contiene muchos ceros. Esta es la razón por la cual el empaque de estas áreas puede ser bastante efectivo. Básicamente, el VxD completo se empaqueta a 7508 bytes, que crece a 12413 después de desempaquetar. Cuando CLINT.VXD está listo, Memorial copia un fragmento de código de sí mismo en la Tabla de vectores de interrupción a las 0: 200 y engancha INT 2Fh (Interrupción de múltiplex). De esta forma, el virus no tiene que preocuparse por cómo asignar memoria, pero será incompatible con algunas aplicaciones.

El controlador INT 2Fh responde "¿Ha llamado allí?" Y espera 1605h en el registro AX para verificar la Notificación de inicialización de Windows. Este mensaje notifica a los controladores de dispositivo DOS y TSR que el Windows estándar o 386 de modo mejorado se está iniciando. Windows llama a esta función cuando comienza a permitir controladores de dispositivos DOS y TSR que monitorean INT 2Fh la oportunidad de prepararse para ejecutarse en el entorno de Windows.

Cuando estas llamadas iniciales entran en el controlador de interrupción del Memorial, el virus abre C: CLINT.VXD para verificar su existencia. Si la apertura fue exitosa, Memorial inicializa una estructura Win386_Stratup_Info_Struc para que Windows cargue el VxD. Cualquier controlador de dispositivo o TSR puede usar un Windows VxD para ayudar a respaldar su funcionamiento en el entorno de Windows. Para especificar el nombre de VxD, el controlador de dispositivo o TSR establece el miembro SIS_Virt_Dev_File_Ptr en la dirección del nombre de archivo del dispositivo virtual. Por lo tanto, Memorial utiliza un medio documentado de dirigir Windows para cargar C: CLINT.VXD. Esto es más elegante que modificar la sección del dispositivo del archivo SYSTEM.INI, que es más complicado y no tan exitoso.

Ejecutando un archivo DOS EXE infectado

Cuando se ejecuta un archivo EXE infectado, el mismo código de desempaquetado toma el control desde el punto de entrada del virus como en los archivos COM. Sin embargo, esta función escribirá sin parar en C: CLINT.VXD porque hay un error importante en el código de infección EXE de DOS. Memorial utiliza un puntero incorrecto y un parámetro de tamaño de virus incorrecto durante la infección EXE. No escribe el código VxD empaquetado (7508 bytes) en archivos EXE, sino los 12413 bytes desempaquetados después del código de desempaquetado. Por lo tanto, al desempacar, el código cuentagotas extrae una imagen VxD ya descomprimida.

Debido a que el código del extractor no conoce este posible problema, escribe megabytes de código en C: CLINT.VXD hasta que llena todo el espacio disponible en el disco duro, pero incluso así el control no volverá al DOS. Al usar Ctrl-C durante esta operación o al reiniciar la máquina, se puede encontrar la enorme C: CLINT.VXD, pero solo si se utiliza la opción / AH (visualizar archivos ocultos) del comando DIR. Por lo tanto, el virus en los archivos EXE se puede clasificar como "Previsto". Afortunadamente, la detección y desinfección de estos archivos sigue siendo posible.

Ejecutando un archivo PE infectado

Cuando se ejecuta un archivo PE infectado, el virus se descifra primero, porque el cuerpo principal del virus está encriptado y empaquetado. El descifrador tiene 46 bytes de largo y oligomórfico (ver a continuación).

Como en el caso de la infección COM, el virus también elimina el C: CLINT.VXD de los archivos PE. En caso de infecciones de DOS, la función cuentagotas toma 275 bytes de código adicional en el punto de entrada del virus. En los archivos PE esta función está en código de 32 bits y es más complicada que la versión de DOS de la misma. Es por eso que este código es más largo: 1360 bytes. Esta función también incluye la rutina de activación del Memorial y se supone que también carga el VxD.

Primero, el virus calcula el punto de entrada de la función GetModuleHandleA en la memoria. Lo hace mediante el uso de un truco real; realiza una búsqueda en estructuras internas de Windows 95. Esto hace que la infección por PE sea un poco más fácil más adelante; el virus no debe agregar ningún nombre a la Tabla de nombres importados. Memorial no necesita una función de parche complicada en su código de infección PE para este propósito.

Más tarde, calcula el punto de entrada de GetProcAddress utilizando el mismo truco. Luego usa GetModuleHanldeA para obtener el control del módulo KERNEL32. Al usar este identificador, Memorial puede llamar a GetProcAddress para obtener y guardar direcciones de procedimientos CreateFileA-, WriteFile-, ReadFile-, SetFilePointer-, CloseHandle-, GetLocalTime-, LocalAlloc, respectivamente. Después de esto, usa GetModuleHandleA nuevamente, para obtener el handle de USER32. Luego usa GetProcAddress nuevamente para guardar la dirección del procedimiento MessageBox.

Después de esto, el virus llama a la función GetLocalTime para verificar la fecha: si es el 10 de abril, el virus se activa y muestra un cuadro de mensaje utilizando el procedimiento MessageBox:


Virus conmemorativo de Clinton Haines por Quantum / VLAD y Qark / VLAD
Clinton Haines, también conocido como Harry McBungus, Terminator Z y Talon
murió de una sobredosis de drogas en su 21 cumpleaños, el 10 de abril de 1997.
Durante su tiempo como escritor de virus, escribió la familia No Frills, X-Fungus,
Daemon y 1984 virus. Él era un buen amigo de VLAD y entonces escribimos
este virus en su honor. Esperamos que sea lo suficientemente bueno para hacerle justicia.
VLAD recuerda. Descansa en paz
q.e.p.d.
De lo contrario, comprueba si .CLINT ya está funcionando. Si es así, se ejecuta el programa host. De lo contrario, crea .C: CLINT.VXD como archivo normal (sin usar el atributo oculto esta vez) con CreateFileA. Si esto fue exitoso, Memorial asigna memoria llamando al procedimiento LocalAlloc. Esto se debe a que tiene que descomprimir el cuerpo del virus empaquetado en una nueva ubicación antes de que pueda escribir el código en el archivo. Por lo tanto, desempaqueta el código VxD (7508 bytes) en el búfer y escribe 12413 bytes desde él en CLINT.VXD con el procedimiento WriteFile. Luego cierra el archivo con CloseHandle. Después de esto, ejecuta el VxD utilizando el procedimiento CreateFileA con el formato de nombre especificado para este fin .C: CLINT.VXD. Finalmente comienza el programa de host.

La inicialización (IFS API hook)

Cuando se ejecuta el archivo CLINT.VXD, el virus espera los siguientes Mensajes de control en su Controlador de mensajes de control: W32_DEVICEIOCONTROL, INIT_COMPLETE, SYS_DYNAMIC_DEVICE_INIT y SYS_DYNAMIC_DEVICE_EXIT. En el caso del mensaje W32_DEVICEIOCONTROL, el virus devuelve 0 ya que no desea comunicarse con otras aplicaciones de Win32. Cuando llega el mensaje SYS_DYNAMIC_DEVICE_EXIT, Memorial devuelve 1 para rechazar la solicitud de descarga. En el caso de los mensajes SYS_DYNAMIC_DEVICE_INIT e INIT_COMPLETE, el virus ejecuta su procedimiento de Inicialización.

Este procedimiento enlaza primero la llamada a la API IFS de DOS (sistema de archivos instalable). Después de esto, elimina varias claves del registro de Windows 95 en 'SystemCurrentControlSetServicesVxd', donde se pueden encontrar nombres VxD cargados estáticamente; como antivirus VxDs. Primero borra las claves 'VETMON95' y 'VETMACRO'. Luego elimina las claves 'NAVAP', 'virusafe', 'WIMMUN32'. Luego abre la sección 'SOFTWAREMicrosoftWindowsCurrentVersionRun' y borra los siguientes valores: 'NORTON AUTO-PROTECT', 'TBAV para Windows 95', 'Anywhere Antivirus Validation', 'Vshwin32EXE' y 'ViruSafe'. Luego pasa a 'SOFTWAREMcAfeeScreenScan' y borra 'bEnableScreenScan', 'bScanAllFiles', 'bScanSubDirs'. A continuación, elimina las siguientes teclas en 'SOFTWARECybecVET Antivirus for Win32': 'ActionsInfectedAction', 'ActionsSuspectAction', 'MemoryEnabled', 'ResidentFileCheck', 'ResidentInfectedAction', 'ResidentSuspectAction', 'ScanningScan All Files', 'ScanningScan Type', 'ScanningSkip Renombrado ',' Escaneo de subcarpetas 'y establece el valor de' Escala de extensión de escaneo 'en' bin, dll, doc, drv, ovl, sys, dot 'eliminando' com, exe y posiblemente 'scr' de esta lista. De esta manera, Memorial desactiva muchos programas antivirus de Windows 95.

Luego, el virus borra los atributos en C: CLINT.VXD. Después de esto, abre el archivo y obtiene y guarda su tamaño, y asigna suficiente memoria para su copia desempaquetada y empaquetada. Luego se lee desde el archivo al buffer principal. Memorial luego cierra el archivo VxD y lo elimina.

Después de esto, empaqueta el código VxD en el segundo buffer. Finalmente vuelve de su rutina de inicialización.

Infección COM

Cuando Memorial intercepta una llamada abierta de archivo, primero verifica la extensión del archivo comparándola con 'COM' primero. Si la extensión es 'COM', Memorial obtiene y guarda el atributo del archivo de la víctima y lo borra. Por lo tanto, el atributo de solo lectura no evitará la infección. Luego abre la víctima y lee 4 bytes de ella. Si el tercer byte (después del salto inicial) fue 'Z' Memorial asume que el archivo ya está infectado. Luego verifica los marcadores 'MZ', 'ZM' para asegurarse de que la estructura de la víctima no sea COM. Luego verifica el tamaño de la víctima y no la infecta si es menor que 7168 o más grande que 51200 bytes. Luego lee los últimos 5 bytes del programa y verifica si comienzan con 'SN'. Si esto se encuentra, el virus no infecta el archivo. No veo ninguna otra razón para esta funcionalidad, excepto para inocular una determinada PC (es posible que los autores de virus sean propietarios) al agregar este marcador especial al final de los archivos COM.

A continuación, Memorial agrega el código del cuentagotas de DOS (275 bytes) al final de la víctima junto con la imagen del virus empaquetado (7508) bytes. Finalmente, modifica la mendicidad de la víctima cambiando los primeros 4 bytes por un salto inicial + un marcador 'Z' y establece el atributo al original. Por lo tanto, el tamaño del virus es de 7783 bytes en caso de infección COM.

Infección DOS EXE

Si el archivo comenzó con marcadores 'MZ' o 'ZM', el virus comprueba la extensión comparándola con '.EXE' y '.SCR'. Luego llama a IFSMgr_Get_DOSTime para tener un número base para su generador de números aleatorios. Como en los archivos PE el virus necesita un nombre de sección agregado al área de encabezado PE y quiere ser oligomórfico, no quiere usar un nombre de sección constante. Por lo tanto, primero muta el nombre estándar de 'CLINTON' a alguna cadena 'basura'.

Básicamente, utiliza un XOR de 8 bits para el cifrado. Durante el cifrado, calcula un byte de verificación y lo guarda como el último carácter de la cadena del nombre de la sección. Este byte adicional se usará al verificar las infecciones de PE existentes. Memorial muta el nombre de la sección solo durante infecciones DOS EXE. Esto hace que la mutación sea lo suficientemente lenta (oligomorfismo lento).

Cuando este esté listo, el Memorial abre a la víctima, la lee en el encabezado y busca la firma 'MZ,' ZM '. Luego lee 4 bytes desde la posición 3Ch del archivo. Esta palabra doble contiene un puntero al área del encabezado de los ejecutables de Windows. Si este puntero es 0, el virus asume que el archivo es un archivo DOS EXE normal e intenta infectarlo como tal. Comprueba el campo de suma de comprobación del encabezado EXE. Si este es 6666h, el virus no infecta el archivo, adicionalmente si el campo de IP es 100h en el encabezado el virus tampoco lo infectará.

Luego, el virus aumenta el tamaño de los archivos EXE al límite del párrafo y agrega el código del cuentagotas VxD (275 bytes) al final del archivo. Entonces viene el error más grande en el virus: Escribe el VxD desempaquetado al final del archivo (12413 bytes). Por lo tanto, el tamaño del virus es de 12688 bytes en el caso de los archivos de víctimas EXE de DOS. Finalmente, modifica el encabezado del ejecutable para que apunte al punto de entrada del virus.

Infección PE

Cuando el archivo EXE o SCR se había asumido como ejecutable de Windows, Memorial busca primero la firma PE. Luego presta atención al atributo de solo lectura. Luego lee la última sección de la estructura del encabezado de imagen y calcula el byte de verificación en el nombre de la sección. Si la suma de comprobación coincide con Memorial no infecta. De lo contrario, modifica el encabezado PE al agregar la nueva sección de virus en él. Como Memorial es un virus oligomórfico, primero muta un descifrador de 46 bytes de longitud (ver: motor oligomórfico) para el comienzo de su cuerpo. Luego encripta la versión PE del dropper VxD que tiene 1360 bytes de longitud. El cifrado se basa en un XOR de 8 bits. Luego agrega el código del descifrador + el código del cuentagotas VxD al final de la víctima (1406 bytes). Finalmente encripta la imagen VxD empaquetada y la agrega al final del archivo (7508 bytes). Luego restaura el atributo de la víctima y lo cierra. La infección de PE está lista. Por lo tanto, el tamaño del código del virus es 46 + 1360 + 7508 = 8914 bytes. Sin embargo, tenga en cuenta que esto podría cambiar porque el virus tiene que aumentar el tamaño del archivo hasta una alineación de sección.

Motor oligomórfico

Este motor es simple pero efectivo. El decrypor básico consiste en 11 partes diferentes. El motor de mutación modifica el orden de estos pequeños bloques cambiando algunos de ellos entre sí. Por lo tanto, el bloque 1 con 2, 8 con 9, 6 con 7, 3 con 4, 5 con 4 y 10 con 0 puede reemplazarse entre sí. Esto da 2 * 2 * 2 * 2 * 6 todos juntos 96 casos diferentes. Esto dificulta la detección del virus en archivos PE.

Conclusión

Memorial es un virus muy complejo. Muestra que los virus polimórficos de Windows 95 aparecerán en la característica cercana más adelante en los motores de mutaciones polimórficas, que pueden usarse solo con virus de Windows 95. Eso significa que es hora de implementar nuevos motores de escaneo para estas nuevas bestias.


Enlace al original