Descripción del virus: Win.Apparition.


Prestad todos mucha atención a este virus, que ha aparecido hace poco y viene, cómo no, de Rusia... uno de los más originales (y completos) que he visto en mi vida, lo reconozco :)

El virus ya lo tengo y ya está destripado al 100%, aquí os dejo un informe para que le echéis un vistazo, a ver si os gusta el animalito:

Win.Apparition ¦

Es un nuevo virus procedente de Rusia; es residente, infecta los ejecuta- bles de Windows (Windows 3.x, Windows95 y WindowsNT), y está encriptado con un loop polimórfico. El tamaño total del cuerpo del virus es de 87438 bytes, debido a que está escrito en Borland Pascal orientado a objetos.

Estructura ---------- La estructura del virus es completamente atípica: el módulo principal (de unos 60k) es el código vírico, formado por las propias rutinas víricas y por librerías runtime de Pascal, además de las cadenas de texto, el icono de la aplicación, y las zonas de datos del virus.

El siguiente bloque, de 3.5k, contiene una plantilla de Microsoft Word in- fectada con un nuevo virus de macro propio, y comprimida con el método LZ.

Este mismo método es el que emplea para comprimir el tercer bloque, que es el código fuente del virus (!!!), que, una vez descomprimido, pasa de ocu- par 21k a 46k.

Ya por último, el último bloque, de 3k, contiene un fichero de recursos, que utiliza cuando el virus ejecuta el compilador de Borland Pascal (ver detalles sobre esto más abajo).

Infección --------- Al infectar ficheros, el Apparition desplaza el código de los ficheros que infecta 87438 bytes, y entonces se copia al principio del fichero. Para devolver el control al host, el virus crea un fichero temporal, copia allí su código, y ejecuta ese fichero.

El virus también busca en los ficheros la cadena hexadecimal '4d4dh', co- rrespondiente a los opcodes de las instrucciones 'dec bp/dec bp'. En caso de encontrar esta cadena, sustituye dichos bytes por una llamada a la in- terrupción 83h (cd83h).

El contenido de la interrupción 83h, si el virus está activo, es otro par de dec bp, por lo que se desconoce la utilidad de este parcheo, máxime cuando los ficheros infectados de este modo no funcionarán al ejecutarse si el Apparition no está residente en memoria.

En cuanto a sus objetivos, son los EXE con cabecera NE (Windows 3.x) o PE (Windows95/WindowsNT); el autor dice en un texto interno que no ha probado el virus más que bajo Windows 3.x, pero también funciona bajo Windows95 y bajo OS/2.

Instalación ----------- Cuando se ejecuta un fichero infectado, el virus ubica bloques de memoria del sistema y lee su código desde el cuerpo del fichero infectado, copián- dolo a estos bloques (para usar sus datos en la infección de ficheros).

Una vez hecho esto, crea en el directorio de inicio de Windows un ejecuta- ble llamado VIDACCEL.EXE, de 87438 bytes, que contiene el código vírico. El siguiente paso consiste en declarar el fichero en el WIN.INI, en la sección [Windows] como 'cargado por defecto'.

Esto lo consigue incluyendo la línea 'load=VIDACCEL.EXE' o, si el estamen- to 'load=' ya existe, simplemente añadiendo el nombre de la aplicación in- fectada. El resultado de esto es que el Windows, al ser ejecutado, cargará dicho fichero, activando el virus en memoria.

Para quedar 'residente', el virus no utiliza llamadas a servicios DPMI de la int 31h ni se cuelga como VxD, como los virus que conocíamos hasta el momento; el Apparition crea una ventana oculta, que procesa las llamadas y los distintos eventos al sistema, incluyendo hasta llamadas al timer.

Estas llamadas al timer provocan que, dependiendo de diversos semáforos internos, el virus busque ficheros EXE en el árbol de subdirectorios de todos los discos y los infecte (esto hace que el virus se cuelgue si algún CD está introducido en su unidad). Estas rutinas de búsqueda de ficheros a través de traverse path las tiene implementadas de una librería estándar de Pascal, sin haber programado nada.

Explicándolo de una forma más detallada: el virus se instala en el siste- ma, la librería runtime de Pascal crea y graba una ventana (utilizando las llamadas RegisterClass, CreateWindow y ShowWindow), y entonces la declara al sistema como ventana oculta. Una vez hecho esto, el Apparition constru- ye su propio timer (por medio de una llamada a la función SetTimer), lo pone con un delay de 10 segundos, y fija un handler (wmTimer), que obtiene el control en los eventos del timer. Para quedar residente en memoria, el virus inicializa el loop de display de los mensajes principales (funciones GetMessage, TranslateMessage, DispatchMessage), y se queda preso en este loop hasta que recibe una petición de finalización (wmClose), cuando se cierra la sesión Windows.

El handler del timer -------------------- Cuando el handler del timer obtiene el control (cada 10 segundos), ejecuta una secuencia fija de cuatro rutinas; cada una de estas rutinas es ejecu- tada en cada evento del timer.

La primera rutina hace un mapeo de las unidades activas, accediendo a to- dos los discos, desde la C: hasta la Z:, especificando por medio de swit- ches en cuáles se puede escribir y en cuáles no. Para comprobar esto, el Apparition crea un fichero temporal, \WR.TST, en cada disco, y luego lo borra. Si se produce algún error en esta operación, el virus evita los ac- cesos al disco en cuestión.

La segunda rutina escanea el árbol de directorios del disco especificado, y busca ficheros para infectar. Cada vez que encuentra un fichero EXE, el virus comprueba su tamaño y su fecha. Si el tamaño es menor que 300k y ma- yor que 16384 bytes (curioso, la longitud de una de las versiones de otro virus ruso relativamente reciente, el SSR), y la fecha no es igual a 1234h (7 de febrero de 1990), el virus guarda el nombre del fichero para una posterior infección, en la cuarta parte del ciclo.

También hay que destacar que, al realizar esta búsqueda de ficheros, el A- pparition presta especial atención a diversos nombres de archivos, especi- ficados como OWINDOWS.TPW, BPC.EXE, y NORMAL.DOT (la plantilla de las ma- cros del WinWord). Si se encuentran los dos primeros, correspodientes a la versión para Windows del Pascal, el virus guarda sus paths para usarlos más adelante (en su engine polimórfica).

Si el fichero que encuentra es el NORMAL.DOT, el Apparition lo sobreescri- be con un simple virus de macro -propio- que contiene tres macros: FileO- pen, AutoOpen y WWUpdated. La primera macro infecta documentos de WinWord al ser abiertos, la segunda instala el virus en el setup del Word, y, por último, la tercera es una macro de autoidentificación.

Polimorfismo ------------ La tercera rutina llamada por el ciclo del handler del timer es la engine polimórfica del virus. Es una parte muy difícil de tracear, en la que el virus modifica su fuente y recompila su propio código (!).

No se puede considerar 100% polimórfico, sino que entraría dentro del gru- po de los virus metamórficos, ya que no está encriptado, y simplemente se automodifica, haciendo muy difícil su detección, ya que en cada generación las rutinas y los punteros, datos y demás código estarían en distintos of- fsets, y una versión distinta del Borland Pascal crearía auténtico caos.

Para llevar a cabo esta rutina, el virus vuelca a disco su código fuente, empieza a procesarlo, y va insertando instrucciones basura de Pascal, imi- tando el generador de basura de una engine polimórfica 'real', con cadenas del tipo:

Begin if then Repeat Until or True Until True End While And False do While False do Procedure Word Boolean Real Char integer string pointer wri = <> > < and or xor

Una vez hecho esto, el virus crea los ficheros MAIN.RES y TMP~~TMP.PIF, y ejecuta el compilador de Borland Pascal (utilizando el fichero PIF). Co- mo resultado de esto, se genera un ejecutable llamado TMP$XTMP.EXE, que contiene el código vírico. A este fichero posteriormente le añade la plan- tilla de su virus de macro interno (comprimida con el método LZSS), y el nuevo código fuente, el recién compilado (y también comprimido).

El resultado de esta engine metamórfica es un EXE con similar (pero no i- gual) código y datos, así como ficheros comprimidos con LZSS dentro. Al a- cabar este proceso, el Apparition renombra el fichero a VIDACCEL.EXE, y lo mueve al directorio de inicio del Windows.

Sección del WIN.INI y payloads ------------------------------ Mientras el virus se instala, genera una nueva sección en el fichero 'ker- nel' del Windows, el WIN.INI, llamada '[The Apparition]'. Esta sección es- tá conformada por diversos parámetros utilizados por el virus:

Running NOW=Yes (significa que el virus ya está activo; cuando un fichero infectado se ejecuta por segunda vez, el Apparition comprueba este paráme- tro, y no vuelve a infectar el sistema).

BootInfected=1 (significa que el fichero VIDACCEL.EXE ya ha sido generado y copiado al directorio de inicio del Windows, y que no debe volver a ser procesado).

DieMonth, DieDay= (apuntan a la fecha de activación del virus; en esta fe- cha, el Apparition buscará todos los ficheros (excepto WIN386.SWP y 386SP- ART.PAR) en todos los discos y los borrará; el virus inicializa estos pa- rámetros mientras infecta el sistema, fijando como fecha de activación el mismo día de 'hoy' más un mes).

AtomID, IDAtom= (son parámetros utilizados para llevar a cabo las llamadas al sistema).

Los siguientes parámetros sólo son accedidos por el virus en modo lectura, por lo que, en todo caso, es el usuario quien los inicializa:

Die= (este parámetro bloquea la rutina de activación).

NoRun=1 (si fuese igual a 1, como en el ejemplo, el virus no infectaría el sistema al instalarse).

NoInfect=1 (si fuese igual a 1, como en el ejemplo, el virus no infectaría ningún fichero).

ShowDotsOn=1 + ShowDialog=666 + Parámetros de debugging Logging=Yes +

Si 'Logging' está activado, el virus crea un fichero llamado WINAPP.LOG en el directorio de inicio del Windows, escribiendo allí las siguientes cade- nas de texto:

Started. - al ejecutarse Loaded OK. - ubicación de memoria acabada InfectBoot = start - antes de generar el fichero VIDACCEL.EXE InfectBoot = done - después de generar el fichero VIDACCEL.EXE Running application - antes de ejecutar el host Application finished - después de ejecutar el host Terminate requested - cuando el botón correspondiente es pulsado, Paused si la ventana del virus es visible (ver más Resumed abajo la explicación) Remove from memory requested !!! Destruction requested !!! Executing PIF : - mientras ejecuta el Borland Pascal vía PIF PM Failed : No compiler - mientras ejecuta su engine metamórfica PM started PM is using temp dir PM Failed : Out of diskspace PM Failed : 1st compile failed 1st compile OK. PM Failed : Source file too big PM : Compression started, bytes PM : Compression completed, PM : Constants updated PM : 2nd compile failed PM : I/O Error PM : Linked OK

Cuando el parámetro 'ShowDotsOn' está activado, el virus muestra distintos cuadros de diálogo (cabecera/mensaje) para preguntar al usuario:

!!! VIRUS WARNING !!! Do you really want to run program infected by virus ?

!!! WARNING !!! Overwrite NORMAL.DOT, confirmed ?

!!! THE APPARITION WARNING !!! Infect [filename] Confirmed ?

Cuando 'ShowDialog' es igual a 666, el virus hace su ventana visible, y el siguiente cuadro de diálogo aparece por pantalla:

+--------------------------------+ ¦ - ¦ THE APPARITION ¦ * ¦ +--------------------------------¦ ¦ File Help ¦ +--------------------------------¦ ¦ The Apparition for Windows ¦ ¦ UltraGluk ALL-IN-ONE ¦ ¦ ¦ ¦ Status : ¦ ¦ Last : ¦ ¦ Total : ¦ ¦ ¦ ¦ +------------+ +-----------+ ¦ ¦ ¦ Terminate ¦ ¦ Pause ¦ ¦ ¦ +------------+ +-----------+ ¦ ¦ +---------------------------+ ¦ ¦ ¦ !!! DESTRUCT !!! ¦ ¦ ¦ +---------------------------+ ¦ +--------------------------------+

El menú 'File' contiene cuatro opciones:

1) 'Check': el virus enseñará un cuadro de diálogo con el texto:

Double FUCK!!! Press CTRL+ALT+DEL Twice to Install Printer!!!

2) 'Infect': el virus ejecutará el administrador de archivos para selec- cionar un fichero a infectar. Si mientras se ejecuta esto el virus está infectando otro fichero, mostrará el siguiente texto:

Error! Infection engine is busy.

Si el fichero ya está infectado, el Apparition enseñará este texto:

You MAZDAI! File is already infected, I WANNA new file to infect!

3) Las opciones 'Remove' y 'Teminate' (mal escrito) desinfectan el siste- ma. En caso de elegir la primera opción, el virus también enseñará un cuadro de diálogo con el siguiente texto:

WINAPP About to remove from memory, confirmed?

En cuanto al menú 'Help', contiene una sola opción ('About'). Al seleccio- narla, aparecerá el siguiente texto en un cuadro de diálogo:

About The Apparition Win-Apparition Written by Lord Asd Last modified : 25 Dec '96 This beta version of The Apparition was tested only under Win 3.10 and may work incorrectly under other Win versions and OS/2 Warp

El parámetro 'Status' está seguido por una cadena de texto que indica el estatus en el que se encuentra el virus:

Completing task... Wait... Locked. Upgraded OK. Paused by operator. Mapping drives... Scanning tree (Level x)... Spreading... Idle. PM : Loading... PM : Unpack... PM : Mutation... PM : 1st compile PM : FAILURE PM : Compression... PM : Updating... PM : 2nd compile PM : Linking...

El parámetro 'Last' está seguido del nombre del último fichero infectado por el virus. Al parámetro 'Total' le sigue el número de ficheros procesa- dos en el momento de escanear el árbol de subdirectorios.

Cuando se elige pulsar el botón 'Terminate', el virus se quita de memoria. Al seleccionar 'Pause', el Apparition detiene su timer interno, y el botón pasa a poner 'Resume', para volver a activarlo. Por último, si la opción elegida es 'DESTRUCT', el virus enseña dos cuadros de diálogo:

WARNING Are you sure you want to delete all files from your disks?

!!! DANGER !!! Destroy all data on all available devices, confirmed?

Y entonces borra todos los ficheros que encuentra en todos los discos. El virus además puede llegar a mostrar otros cuadros de diálogo con distintas cadenas de texto:

Warning Destruction locked.

System error System stack failure, error code 0xC6 at 0004:2F16

Error Unexpected disk operation failure, error code 0x0x

Error Out of memory.

Error Unknown disk error.

!!! VIRUS WARNING !!! This program is infected by The Apparition for Windows and will not start.

Por último, también contiene las siguientes cadenas internas:

APPARITION _PSEUDO_ICON MAIN_MENU ABOUTDLG UNTITLED WINAPP COMMDLG KERNEL KERNEL GDI USER KEYBOARD KERNEL USER KEYBOARD WINAPP.EXE All files *.* Executable files (*.EXE) *.EXE Infect file EXE ApparitionInstalled hInstance= *** PERMUTATION START HERE *** *** PERMUTATION STOP HERE *** Function Begin End \TMP$XTMP.T01 \TMP$XTMP.T02 \TMP$XTMP.EXE \MAIN.RES !!! CODE SIZE !!! VSize= cs_const= !!! DECOMPRESSED SRC SIZE !!! XSrcSize= xss_const= !!! COMPRESSED SRC SIZE !!! CSrcSize= css_const= ApparitionInstalled AboutDlg Apparition ApparitionInstalled THE APPARITION Running THE APPARITION KERNEL USER GDI KRNL386 KRNL286 MICROSOFT PIFEX WINDOWS 286 3.0 WINDOWS 386 3.0 Portions Copyright (c) 1983,92 Borland OW1 OW2 TurboWindow Error code = %d. Continue? Application Error (Inactive %s) TPWinCrt Runtime error 000 at 0000:0000. Main_Menu Apparition THE APPARITION Times New Roman Terminate Apparition Last None Pause Total !!! DESTRUCT !!! Initializing... Status

[Indice general] - [Sexo] - [linux] - [humor] - Chat entre usuarios - [miscelanea] - [Novedades] -

Para hacerme llegar tus comentarios, sugerencias o si deseas colaborar con esta página, por favor, envíame un E-mail a marqueze (arroba) marqueze.net Web: http://www.marqueze.net