Queridos amigos:
Dada la repercusión y buena acogida que ha suscitado el pequeño artículo que se había puesto previamente
en este medio, me complace compartir con vosotros mis propias experiencias sobre los comportamientos de los
virus, los desastres que nos causan y las formas que he encontrado de combatirlos y de limpiar nuestros sistemas.
Todo esto ha venido a raiz del gran desastre mundial (no exagero) que ha causado la explosión del virus CIH, más
conocido por Chernobyl, dada su actuación el pasado dia 26 de Abril de 1999.
Nos estan llegando noticias desde todos los paises de habla hispana de que quien ha sufrido el ataque del CIH,
aún anda peleándose con ese bicho, y según mi experiencia, dificil le va a ser librarse de él.
Ante todo, os voy a describir los efectos dañinos que he detectado después de la activación del virus.
El dichoso CIH se coló en mi sistema a través de un programa de IRC, en mis conversaciones con el servidor
en donde están las páginas de mi dominio www.quipusoft.com. He de aclarar que tanto las máquinas como el personal
del servidor están totalmente libres de toda sospecha, y que muy probablemente entró al servidor procedente de
la máquina de cualquiera de los contertulios que nos reunimos normalmente, aparte de algún espontaneo (muy sospechoso)
que entra de vez en cuando y que no sabemos quién es. (Hemos rastreado a contertulios extraños de diversos paises).
El servidor de dominios de que hablo está construido con el Sistema Operativo Linux, y según el Webmaster, no ha
tenido problemas de ningún tipo, pero si los han tenido el resto de contertulios. Puesto en contacto con otros colegas que habitualmente trabajan con Linux, me
confirman que ninguno de ellos ha sido afectado por el CIH.
Tampoco tengo noticias de que hayan sido afectadas máquinas con Sistemas Windows NT, OS/2, Unix o Mac,
pero sí que han sido afectadas igualmente las máquinas con procesadores Intel, AMD y Cyrix, de lo que podemos
sacar la primera conclusión:
El código del virus CIH está optimizado para los Sistemas Windows 95/98
Dice un refrán castellano: "En casa del Herrero, cuchillo de palo", y los refranes siempre se cumplen. Yo, que tengo
escrito un libro en el que se trata, entre otras cosas, del comportamiento y combate de los virus, y conozco por
experiencia lo dañinos que son, caí como un pardillo por exeso de confianza, a pesar de que en los periódicos de
ese dia venía una pequeña reseña con la alerta sobre ese virus. Pero también hay un dicho popular: "No hay mal
que por bién no venga", y gracias al ataque del CIH que sufrí, puedo compartir con vosotros mi experiencia de como
he llegado a erradicarlo completamente.
Dia 26 de Abril de 1999 a las 09:00 horas:
Enciendo mi máquina de trabajo, un Sistema con Pentium 200MMX y Windows 98. Efectúa el POST (Previus Operating
System Test) con normalidad y comienza la carga del Sistema Operativo. A los pocos segundos me aparece la
fatídica pantalla azul de errores críticos de Windows, diciéndome que se había producido un Error Fatal, lo que me
hizo rezar un poco por el alma de Bill Gates y su equipo de desarrollo (ahora le pido disculpas por ello).
Oprimo el botón Reset de la máquina, esperando que fuese uno de tantos fallos esporádicos de Windows, pero esta
vez la máquina no hizo absolutamente nada, ni tan siquiera el POST que está controlado por la BIOS del Sistema.
Algo más mosqueado, y con el entrecejo fruncido, apagué la máquina y busqué mi disquete de arranque del Sistema,
pero la respuesta fué la misma: nada. Aquello estaba claro, algún componente de la placa base se había estropeado,
así que llamé al mecánico para ver de repararla con prontitud.
Todos sabemos que las placas base son tan compactas que raramente podemos sustituir alguna de sus partes, lo
que siempre nos toca es cambiar la placa completa. Manos a la obra. Fuimos al almacén de un conocido para comprar
una placa nueva, con el agravante de que a las placas actuales no se les puede pinchar los sets de memoria EDO, algo
más antigüos, así que también hubo que comprar chips de memoria nuevos. En un segundo almacén, al que fuimos
a por otra pieza, nos advirtieron de que "Acaba de activarse el virus Chernobyl, y la primera consecuencia es que
borra las BIOS y tienes que tirar la placa.". Mi primera reacción fué de incredulidad, pués todos estamos
acostumbrados a nombrar a "la ROM BIOS", y un chip ROM no es reescribible ni por el propio fabricante. ¿ Donde estaba el truco ?
Nuestro gran fallo: Desde hace poco tiempo, los fabricantes construyen las BIOS del tipo FLASH, y no del tipo ROM.
de esta forma pueden aprovechar los chips que les quedan en excedente cuando dejan de fabricar un modelo de
placa, les basta con sobreescribir los chips que les han sobrado, y les sale más barato.
El cambio de placa base + memoria, te sale por un pico, y mucho más si tienes una red de ordenadores o un
Web-Café con varias docenas de máquinas, de forma que, entre el mecánico y yo, urdimos la primera solución para
el primer desastre:
Los fabricantes de placas bases suelen tener en sus Webs descarga de programas para actualizar las BIOS de
sus Placas. Así que, entra en la Web del fabricante de tu placa (con otro aparato, claro) y descarga el programa de actualización
de BIOS + el código del modelo de BIOS que tenga la placa afectada. Este programa + este código entran en un disquete.
Acto seguido tienes que localizar otro Computador que tenga, precisamente, la misma placa base que el tuyo y el
mismo modelo de BIOS. Cargas el programa de actualización de la BIOS y te paras justo en el momento en que,
después de reconocer placa y BIOS, se dispone a actualizarla. En ese momento, con este aparato encendido,
despegas de su zócalo el chip BIOS, e insertas el tuyo que ha sido limpiado por el virus. Ahora no tenemos BIOS
que soporte las peticiones de interrupciones de los programa, pero sí que tenemos cargada en memoria la Shadow
Bios con las interrupciones del Sistema Operativo. De todas formas, el programa de actualización de la BIOS, está,
obviamente, construido con código autosuficiente y no necesita apoyarse en las interrupciones de la BIOS.
Una vez cargada tu BIOS con el código del fabricante, vuelves a cambiar los chips y ya tienes tu BIOS tal y como
salió de fábrica.
Si puedes solucionar así la reparación de la BIOS de la máquina, magnífico, pués de otra forma te
tocará comprar una nueva.
Pero, ¡ ten cuidado !.
Cuando tengas resuelto el problema de la BIOS, bién actualizándola como he descrito, o bién con
una nueva,
¡ Ni se te ocurra encender la máquina !.
El código del virus está aún en el Disco Duro, y si la enciendes, te toca empezar de nuevo. Vamos
a analizar un poco como llegó la máquina a colgarse.
Cuando, el dia en cuestión, se encendió la máquina, se ejecutaron, como cada dia, todos los programas
ejecutables que el sistema Windows 95/98 necesita para establecerse. En todos los ficheros ejecutables
se había instalado comodamente el virus, y al comprobar que era la fecha esperada: 26/Abril/1999,
se descomprimió e instaló todo su código a través de más de 80 sectores del Disco C:, desde el
primer sector. A continuación lo cargó en memoria y le pasó el control de ejecución.
Al ejecutarse el CIH, lo primero que hizo fué encriptarse y esconderse en las pistas o cilindros
reservados del Disco Duro (eso lo pude ver después), y, a continuación, pasó a su intento de limpieza
de todas las BIOS que puede tener un Computador, BIOS de Placa Base, BIOS controladoras de
cada uno de los Discos Duros, BIOS de grabadoras de CD, etc.
Está claro. Al limpiar la BIOS de la Placa Base, también se molestó en borrar de la memoria la copia
Shadow de la BIOS, que es en realidad con la que trabajamos. Cuando el próximo programa ejecutable
que Windows necesitaba, hubo de cargarse, Windows Alertó como Error Fatal al no encontrar
en la BIOS las interrupciones que necesitaba. y se paró.
Obviamente, al resetear la máquina, ésta no podía hacer nada, puesto que nada había en la BIOS
para hacer. Y el intento de arranque con un disquete, falla también, ya que faltan las instrucciones
de la BIOS en donde se dan las ordenes oportunas para poder leer un disquete.
El Computador quedó, sencillamente: Descerebrado.
Como mi experiencia y mis investigaciones me han enseñado que todo virus que se ejecuta, deja en
el Disco Duro, todo o parte de su código, en forma bién visible, tomé mi programa más potente,
MICROSCOPE-32, y me dispuse a verle la cara a tan indigno adversario.
NOTA: MICROSCOPE-32 es un programa desarrollado por mí, que viene a darnos a los informáticos un
poder total y absoluto sobre el contenido de los discos magnéticos de ordenador, ya que los programas
anti-virus y otras utilidades por todos conocidas, no nos dejan acceder tranquilamente a los que llamo
los Sectores Maestros de los Discos: Sector de cada una de las Particiones, Sectores Ocultos,
Sectores de Arranque de cada Partición, Sobrecluster (zona muerta de algunos Discos Duros que nadie
comenta y que he tenido que bautizar yo mismo), y pista o cilindro de aterrizaje.
Podeis pensar que esto es autopublicidad, y quizás tengais razón, pero si no describo aquí el
programa con el que se puede restablecer el orden, ante un ataque de este tipo, mi hablar sería
como el de los Alquimistas, que daban la receta completa, pero siempre hacían referencia a una
tal Piedra Filosofal, que nadie conocía, y que daba al traste con la receta.
Para más comentarios sobre este programa y su manual, os puedo remitir a la Revista PC WORD de
Febrero de 1996 y a la revista PC ACTUAL de Marzo de 1996, en donde se hacen las críticas de la
primera versión de MICROSCOPE. La versión actual, MICROSCOPE-32, es capaz de analizar Discos
Duros con FAT_32 y los nombres largos de Windows, en entorno MS_DOS
El manual que se acompaña, un libro de 250 páginas, es un tratado técnico (aunque empieza flojito
para usuarios avanzados) sobre la composición física y lógica de los discos magnéticos. Trata
sobre el problema de los virus y termina enseñando a confeccionar un disco llave, para todo lo
cual proporciona bastante código fuente en BASIC, C y ensamblador.
Arranqué la máquina con un disquete de arranque de mi confianza, y, una vez establecido el sistema
MS_DOS, arranqué MICROSCOPE y pedí analizar el disco C:
MICROSCOPE alertó de que no reconocía el código del Sector de Particiones ni de los Sectores de
arranque, y pasó automaticamente a efectuar un escaneo físico del Disco Duro para conocer, al menos,
el tamaño del disco que tenía que analizar.
Aún en estas adversas condiciones, MICROSCOPE nos permite ver el contenido de todos y cada uno de
los Sectores físicos del Disco, con lo cual pude pedir ver el código del primer sector:
Cara 0 : Pista 0 : Sector 1
Según todas las normas de cualquier sistema Operativo, este es el sector de la partición primaria
del Disco Duro, y es un código que me conozco de memoria, así que al ver en pantalla lo que había
en dicho sector, le estuve viendo la cara al código del CIH.
Como norma establecida, todos los sectores restantes de la Cara 0 : Pista 0, se consideran reservados
y no se utilizan para nada. Pero en este caso, al ir pasando por pantalla el código de estos sectores,
que deberían de estar vacios, fué desfilando ante mí el resto del código del virus.
Asimismo, como norma establecida, el Sector 1 de la siguiente cara: Cara 1: Pista 0, debe de contener
el código con el arranque del Sistema Operativo que tengamos, y, también, es un código bastante
familiar a primera vista. Pero en lugar del código del Sector de arranque, lo que allí había era
obviamente la continuación del código del virus. Seguí rastreando los sectores del Disco Duro secuencialmente,
ya que, siguiendo las normas, despues del sector de arranque (en FAT_32, el arranque ocupa 16
sectores, y además, tiene dos copias, una detrás de otra) vienen los Sectores de la FAT,
facilmente identificables, y después viene el primer sector del Directorio Raiz.
Mi Disco Duro es de 2 Gigabytes, y está formateado en FAT_32, ocupando 4025 sectores cada una de
las copias de la FAT. Seguí rastreando el código de los sectores, secuencialmente, hasta que pude observar
en Pantalla una secuencia numérica claramente perteneciente a FAT_32. Como me encontraba sobre el
sector secuencial 80 del disco y la FAT_32 debería de haber empezado en el sector 96 (63 sectores
de la pista de particiones + 32 sectores de las dos copias del sector de arranque), comprendí que
la primera copia de la FAT estaba irremediablemente dañada, pero que seguramente, la segunda copia
de la FAT estaría intacta, cosa que confirmé enseguida pidiendo ver el código del sector 96+4025=4121
que es donde empezaba la segunda dicha copia.
Afortunadamente, una de las utilidades de MICROSCOPE es la de poder hacer una copia de seguridad
del Sector de Particiones y de los Sectores de Arranque en un disquete. Bastaba con reponer las
copias de seguridad que yo guardaba, sobre los sectores que ahora tenían el código del virus, para
poder después utilizar otra herramienta de MICROSCOPE que es la de poder reescribir una copia de
la FAT con la otra.
Manos a la obra. Tomé el disquete en donde guardaba las copias de seguridad de los Sectores Maestros
y efectué la recomposición sin problema alguno. Una vez hecho esto, basta con volver a pedirle a
MICROSCOPE que vuelva a analizar el disco C: para que tome los parámetros que, antes no, pero ahora
si que había en donde tenían que estar.
¿ Conoceis la sensación de ir a sentaros en una silla, y caeros al suelo porque, en realidad, no
había silla en la que sentarse ? Algo así sentí yo cuando MICROSCOPE me volvió a decir que desconocía
el código que encontraba en los sectores que yo le acababa de reponer. Algo nervioso, abrí el
Editor de Sectores y pude comprobar que el código que acababa de grabar, estaba allí, y era correcto,
pero, sin embargo, MICROSCOPE se negaba a reconocerlo. ¿ Que estaba pasando ?
Mi buén amigo, el Webmaster del servidor antes mencionado, cuando nos surge algún problema, tiene
la sana costumbre de proponerme: ¡ Pensemos en voz alta !, y ese es el mejor método para encontar
solución a los problemas lógicos de este tipo.
¡ Pensemos !
El problema: En el Sector de Partición y en el sector de Arranque había un código exacto y limpio
que yo acababa de restablecer, y que me confirmaba MICROSCOPE que estaba en su sitio, enseñándomelo
por pantalla cuando se lo pedía, sin embargo, el propio MICROSCOPE no reconocía ese código cuando
trataba de analizarlo. ¡ Uff !.
MICROSCOPE está programado en más de un 75% con llamadas directas a la BIOS, en lugar de las posibles
llamadas que pueden hacerse al Sistema Operativo. Me pareció más efectivo, y de esta forma he podido
analizar disquetes de Unix, Mac, etc, bajo MS_DOS, y la BIOS de la placa base era nueva, luego no
era sospechosa, sin embargo, era obvio, que por pantalla me estaba enseñando el contenido de un
sector diferente al sector que se dejaba analizar como primer sector del disco.
¡ Claro ! es un comportamiento típico del "modus operandi" de los virus, se hacen con el control de las
llamadas a la BIOS y te engañan como a un tonto. Pero..., ¡ Si yo había arrancado con un disquete !,
el código del virus no se había podido ejecutar para tomar el control, y había tenido la precaución
de configurar la BIOS, antes de arrancar el aparato por vez primera, poniendo la secuencia de
arranque como A;C. ¡ Para desesperarse !
Pedí ver el código de los ultimos sectores del Disco Duro, e incluso el contenido de los sectores
de la pista de aterrizaje, normalmente inaccesible (exepto para MICROSCOPE), que es donde suelen
esconder código los virus, pero nada, aquello estába tan limpio como podía esperarse.
Con las prisas de poder disponer de mi ordenador para seguir trabajando, y con la seguridad que
da el tener copias de seguridad de todo tu trabajo, opté por cortar por lo sano y no perder más
tiempo en averiguar que estaba pasando. Decidí formatear el Disco Duro a Bajo Nivel con MICROSCOPE
para luego instalarlo todo de nuevo y olvidarme del problema.
¿ Problemas ? - ¡ Aún no habían empezado !
Tras algo más de una hora en formatear el Disco Duro a Bajo NIvel, tuve todas las razones del mundo
para empezar a llorar amargamente. ¡ El formateo a Bajo Nivel no había funcionado !,
todos los sectores seguían teniendo el mismo contenido y código que antes del formateo, cuando
deberían de estar puestos a cero totalmente. En fin, paciencia y a intentarlo de otra forma.
Otra de las opciones de MICROSCOPE, alternativa al formateo, es la de limpiar el disco completo
sobreescribiendo el contenido de todos y cada uno de los sectores con caracteres cero. ¡ Manos
a la obra !. Otra hora de trabajo, y, por fín, pude comprobar que todo el contenido del Disco
Duro, tanto el código del virus como el mio propio, habían sido destruidos.
¡ Que alivio !
El próximo paso era preparar el Disco Duro con el programa FDISK y darle un formateo lógico con
el programa FORMAT del Sistema Operativo. Todo funcionó sin problemas.
A continuación instalé el Sistema Windows 98. Sin problemas.
Instalé los navegadores de Internet, los drivers, los compiladores..., ¡ un dia completo de trabajo
en volver a tener el sistema como nuevo !.
Eso si, a cada paso que daba, le daba un vistazo al Disco duro con MICROSCOPE para, si hubiese
alguna anomalía, saber que programa la había causado. Nada. ¡ Todo perfecto !
Por aquello de "si por las moscas", cuando acabé de instalar todo lo que necesitaba, le pasé un
antivirus especial contra CIH que me había descargado un compañero desde la Web de una conocida
marca de Antivirus que lo había puesto en descarga libre para esos dias.
Cuando el antivirus empezó a trabajar, me dieron unas irresistibles
tentaciones de irme a escalar el Himalaya cuando comprobé que todos y cada uno de los ficheros
ejecutables volvían a estar infectados por el CIH ¿ Como ? La BIOS era nueva, el Disco Duro
estaba limpio por completo, y tanto el Sistema Windows 98 como el resto de aplicaciones que instalé
estaban en CD-ROM originales, imposibles de ser reescritas por virus alguno.
¡¡¡ ¿Donde estás, maldito? !!!
Sin duda alguna, el CIH estaba dentro de los circuitos de la máquina, pero como la placa base era
nueva, sólo podía estar en los discos duros, pero ¡¡ ¿Donde? !!.
El antivirus consiguió limpiarme casi todos los ficheros infectados, con lo cual,
no habíamos hecho nada y tenía que empezar por limpiar el disco de nuevo y comenzar.
Una cosa tenía bastante clara: el virus se encontraba, de alguna forma, en el Disco Duro.
Entonces me puse a pensar, de nuevo en voz alta: Los Discos Duros llevan una tarjeta controladora,
con una BIOS FLASH en donde el fabricante introduce los parametros de cada uno de los
discos que monta, y claro, si el CIH había podido sobreescribir la BIOS de la placa base ¿que le
impedía sobreescribir la BIOS de la controladora del Disco Duro ? ¡ Nada ! El criminal que creó
y propagó el dichoso CIH tenía, por lo visto, unos conocimientos sobre ingeniería de chips iguales
a los ingenieros que diseñan la circuitería de una placa. Podía tocar todo lo que quisiese.
Mis dos Discos Duros son de la Marca Quantum, así que busqué en la Web de este fabricante alguna
utilidad para chequeo de sus propios discos, y la encontré, pero los ingenieros de Quantum se
habían limitado a hacer un programa que verifica el estado físico de los discos, que encontraban
perfectamente, pero el susodicho programa no verifica que la estructura de datos de la BIOS
correspondiente, se encuentre en el estado en que debería de estar, con lo cual, yo seguía bastante
mosqueado.
Opte por poner en mi ordenador un Disco Duro Nuevo, y coloqué el Disco Duro "estropeado" como
segundo Disco Duro, diciéndole a la BIOS que sólo tenía un Disco Duro en el sistema.
Volví a instalar Windows 98 y toda la serie de programas necesarios para mi trabajo, pasando esta vez
el antivirus a cada paso que daba. ¡ Todo perfecto !
En este punto había que jugarse el todo por el todo a fín de poder tener la completa confianza
de que el virus CIH ya no andaba más por mi Sistema. La prueba de fuego consistía en volver el
Sistema a la fecha 26/Abril/1999 y encenderlo como si nada hubiese pasado. El juego era todo o
nada. O volvía a explotar el CIH o se había eliminado totalmente (excepto ese segundo Disco Duro
que yo tenía escondido para analizarlo más tranquilamente).
¡ Brillante ! El ordenador se encendió con toda normalidad y ejecutó todo lo que debía sin problema
alguno. Fecha: 26/Abril/1999, el CIH ya no estaba en mi Sistema.
Por un lado me sentí tranquilo, sabiendo que podía continuar con mi trabajo, después de varios
dias de pelea con el virus, pero por otra parte, me sentía decepcionado al no haber podido
encontrar en donde se había escondido ese virus que seguía, con toda seguridad, en el Disco Duro
que ahora tenía como secundario.
Dejé pasar algunos dias para relajar el estado de ánimo, y luego volví sobre el segundo Disco
Duro. Como sabeis algunos de vosotros, y tal y como se explica en el manual de MICROSCOPE-32,
los que usamos los Sistemas de Microsoft, estamos accediendo a los discos, con nuestros maravillosos
Pentiums, con código del Microprocesador 8086, es decir, utilizando código de 16 bits para las
llamadas a la Interrupción 13H que es la encargada del manejo de los Disquetes y los Discos Duros
del Sistema. Eso nos condiciona a no poder usar, bajo ningún concepto, Discos Duros que tengan
más de 1024 pistas (numeradas: 0 a 1023). Para paliar este defecto, los fabricantes de las placas
base más modernas se inventaron un truco llamado LBA, consistente en que cuando manejamos un
Disco Duro de más de 1024 pistas o cilindros, le decimos a la BIOS que lo trate en forma LBA, y
la BIOS hace que se nos aparezca un disco virtual que tiene 2, 4 u 8 veces más cabezas virtuales
que físicas y 2, 4 u 8 veces menos pistas virtuales que físicas, encargándose la BIOS de la placa
base de hacer los correspondientes ajustes cuando nosotros le pedimos el acceso a una cara más
allá de las que fisicamente tiene el disco.
Esto presenta un posible pequeño problema de redondeo ante un disco cuyo número total de pistas
o cilindros no sea divisible exacto por un múltiplo binario. Siempre quedaría un resto del ultimo
cilindro que sería accesible, sólo en parte de las caras virtuales de las que podemos disponer
en modo LBA. Normalmente, este resto de pista física queda invisible a la lógica de la LBA y
no lo pone a disposición de ningún programa convencional. Los autores de los virus saben esto,
y aprovechan estos trozos de pista para poner código. ¡ Pero MICROSCOPE-32 también puede acceder
a esas pistas, que llamamos de aterrizaje !
De todas formas, si el virus había tocado la BIOS de la controladora del Disco Duro, se habría
cuidado muy bién de respetar el tamaño virtual de la pista de aterrizaje en el modo LBA, y de
alguna forma nos estaba engañando.
¿ Que haría yo para reprogramar una BIOS de Disco Duro y esconderme un cilindro para mi sólo ?
Pondría dentro de la BIOS una instrucción como esta:
Incrementa la pista pedida en 1
Con lo cual jamás enseñaría la auténtica pista Cero, que yo controlaría a mi voluntad, y no tendría
problemas para enseñar la última pista del disco (la 1023 en proceso LBA) ya que los fabricantes
ponen fisicamente un cilindro de más en sus discos, que es la auténtica pista de aterrizaje.
Ante un código tan pequeño como eficaz, no podemos hacer nada sin reprogramar la BIOS de la controladora
del Disco Duro, y eso no está al alcance de cualquiera, hay que tener los datos de fabricante
para saber por qué puerto podemos reprogramar la BIOS, y que parámetros acepta.
Pero se dice popularmente que "la suerte de un loco, es dar con otro", y si este criminal ha procurado
preveer todas las contingencias posibles para no poder detectarlo, creo que ha dejado una pista
clara de por donde NO espera ser atacado. Al principio dijimos que, al parecer, el CIH no había
podido atacar más que a los aparatos con Windows 95/98, y que los aparatos que tenían otro Sistema
Operativo Superior, no habían sido afectados. ¡ Pensemos en voz alta ! ¿Que tienen los demás
Sistemas que no tenga Windows 95/98? ¡Ahí está la solución !,
La diferencia es que los demás sistemas usan el acceso a disco de 32 bits, y
¡ No necesitan el modo LBA !
¡Vale!. Yo podría instalar en mi aparato un Sistema Operativo de acceso real a Disco de 32 bits,
es decir, los sistemas que usan los registros EAX y compañeros en lugar de los registros AX y compañeros
que son de 16 bits. Pero mi programa herramienta, MICROSCOPE-32, está diseñado para el Sistema
MS-DOS, de 16 bits...
Esta vez tuve que pensar sin usar la voz:
De alguna forma, necesito confundir a la BIOS del Disco Duro. Pero ¿como?
Hay cosas que no tienen solución, pero yo, que soy del signo Tauro, soy una de las personas más
tozudas del mundo, cuando me lo propongo.
Arranqué mi máquina y entré en el programa de configuración de la BIOS.
Activé la rutina en que se autodetectan los Discos Duros del Sistema, y le dije a la BIOS que me tratase
al segundo Disco Duro en modo Normal, en lugar de en modo LBA. De esta forma, el sistema podría
ver al Disco Duro tal y como está configurado fisicamente, es decir, con 4096 pistas o cilindros.
La BIOS no pone problema alguno, pués no sabe que Sistema Operativo vamos a instalar en la máquina.
Una vez informada la BIOS de que tratase al Disco Duro en modo Normal, pasé a la primera pantalla
de opciones que tienen todos los programas de configuración. La pantalla en donde le podemos decir
que trate a los Discos Duros en modo predeterminado o en modo USER. Si venimos de la opción de
autodetectar los dicos, habiendo dejado el modo LBA, en esta primera pantalla no nos deja introducir
manualmente el número de pistas, caras y sectores, pero si hemos puesto el Disco Duro en Modo Normal,
en esta pantalla podemos, en modo USER, cambiar manualmente el número de pistas, caras y sectores.
Se trataba de falsificar la información de los parámetros del Disco Duro, para confundir a la BIOS
de la Placa Base, y que tratase de acceder más allá de las pistas reales que tiene el disco.
Sólo falsifiqué el número de pistas, didiéndole que el disco tenía 4097 en lugar de las 4096 que
detectaba la BIOS. (En realidad, el disco tiene 4097 pistas de fábrica, pero siempre se reserva
la última como pista o cilindro de aterrizaje).
Una vez que la BIOS de la Placa Base se dejó falsificar el número de pistas que tenía el Disco Duro,
en la misma linea, al final, podemos, asimismo, cambiar el modo de Normal por el de LBA, que es el
único modo en que yo podría analizar el Disco con mi programa en MS-DOS. ¡ Se lo tragó ! Pude configurar
un Disco Duro en modo LBA con 1025 Pistas, cosa esta que le hará rechinar los dientes a todos los
programadores, ya que sabemos que es de todo punto de vista imposible.
Acto seguido, grabé los cambios en la Shadow BIOS y dejé que el sistema arrancase con un disquete.
¡ Sin problemas ! Segundo Disco Duro tratado en modo LBA, pero con una capacidad ligeramente
superior a la que en realidad tenía.
Arranqué MICROSCOPE-32 y pedí analizar el Disco D: (que en una operación anterior a la falsificación
de los parámatros, había limpiado totalmente). MICROSCOPE-32, obviamente, protestó de que los
parámetros del Sector de Partición y del Sector de Arranque, no guardaban las normas esperadas,
y pasó al escaneo físico del disco. Naturalmente, encontró sólo las 1024 pistas LBA que tenía el
disco, pero MICROSCOPE-32 es muy educado y no da nunca nada por válido sin pedirte confirmación.
Cabezas: 64 / Pistas: 1024 / Sectores por pista: 63 ¿ Estás de acuerdo ?
Pulsé la tecla N y me dió la segunda alternativa: los datos por defecto del Disco D: que tiene
la BIOS de la Placa Base,
Cabezas: 64 / Pistas: 1025 / Sectores por pista: 63 ¿ Estás de acuerdo ?
Esta vez pulsé la tecla S, y acto seguido abrí el Editor de Sectores para ver si encontraba restos
de algún código por alguna parte. (Recuerdo que el disco D: lo había limpiado totalmente con
anterioridad, y el contenido de todos sus sectores debía de estar lleno de caracteres cero).
Nada. El primer sector del disco y siguientes estaban totalmente limpios, sin código alguno.
Me fuí directamente al final del disco y me enseño el contenido del último sector lógico:
Cabeza: 63 / Pista: 1023 / Sector: 63
Aquél último sector también estaba limpio. Había llegado el momento de pedirle a MICROSCOPE-32
que hiciese una petición a la BIOS de una pista más allá de las permitidas por el modo LBA.
[Sobrepista autorizada] me contestó MICROSCOPE-32, e inmediatamente pedí que me enseñase
el contenido del Sector: 1 / Cara: 0 / Pista: 1024 (La pista imposible),
¡¡¡ EUREKA !!!
¡ Allí había código !
Se me disparó la Adrenalina de un modo súbito, y comencé a rastrear los sectores siguientes con
el mismo resultado: Aquel cilindro estaba repleto de un código que no debía de existir, después
de haber formateado y limpiado el disco de mil formas distintas. Pero, ¿ que pista o cilindro
estaba leyendo realmente ? No bastaba con haber localizado el código oculto del virus, necesitaba
saber en que pista física estaba realmente. ¿ Como había llegado hasta allí ?
En un caso como este, un programador necesita, desesperadamente, olvidar su lenguaje materno y
ponerse a pensar en Binario.
La Interrupción 13H de la BIOS para el manejo de discos, usa el registro CL (de 16 bits) para que
indiquemos pista y sector al que queremos acceder, guardando la siguiente norma:
De los 16 bits que tiene el registro, 10 de ellos son para poner el número de pista en binario, y
los seis restantes son para poner el número del sector que queremos. De aquí vienen las consabidas
limitaciones de 1024 pistas (numeradas de 0 a 1023) ya que en 10 bits, el máximo número que podemos
escribir es: 1111111111 = 1023 en decimal, y lo mismo para los sectores, ya que en 6 bits sólo
podemos escribir: 111111 = 63 en decimal, sólo que para la numeración de sectores, no usamos el
sector cero.
¡ La solución ! Al forzar el número 1024 dentro de 10 bits, lo único que se había
conseguido era poner los 10 bits a cero y forzar un uno a su izquierda, que en este caso fué a parar
a ningún sitio, y le pidió a la BIOS la auténtica PISTA CERO. Esto, de alguna forma, había hecho
que la BIOS de la Placa Base y la BIOS de la controladora del Disco Duro se viesen forzadas a
reorganizar sus parámetros, y a partir de ese momento, pude acceder a la pista cero del disco
que antes estaba siempre oculta por aquella orden de "Incrementa la pista en 1" que ya se me
había ocurrido.
Al llegar a esta conclusión, le pedí a MICROSCOPE-32 que me enseñase el contenido de la pista
cero directamente, y allí estaba el código maldito. A partir de ese momento, si le pedía a MICROSCOPE-32
que me enseñase la pista 1024, protestaba y me decía que no la encontraba por ninguna parte, y con
toda la razón, ya que los parámetros del disco habían vuelto a la normalidad y la pista 1024, ya
hemos visto, es la pista imposible, hablando en binario.
Con razón, MICROSCOPE protestaba al intentar analizar el Sector cero de la Tabla de Particiones,
pués de esta forma, con la pista cero oculta, todo el contenido del disco duro estaba desplazado
una pista hacia adelante, y cuando pedía la pista cero, en realidad mostraba la pista uno.
¡¡ Uff, que descanso !! Sólo quedaba decirle a MICROSCOPE-32 que limpiase todo el código que
había en aquel cilindro, y a pensar en una merecidas vacaciones.
¿ Se acabaron los problemas ?
¡ Ni hablar ! Al individuo que diseñó el virus CIH había que matarlo a golpes de pluma de ganso
o había que contratarlo de ingeniero jefe en la Estación Espacial Internacional.
Una vez restablecido el orden en todos mis discos duros (al disco duro que inicialmente tenía
como unidad D:, y que ahora estaba sobre mi mesa, le hice la misma operación, con los mismos
resultados), con una placa base y BIOS nuevas, seguí con mi trabajo normalmente, pero cuando tuve
necesidad de usar mi regrabadora de CD, una Philips 3610, vi con desesperación que parte de las
copias de seguridad que tenía en un CD regrabable, ¡ habian desaparecido !.
Tomé el CD regrabable y fuí a comprobarlo a las regrabadoras de otros colegas, de otras marcas. ¡ Nada ! Se me
había perdido un directorio completo, y de los más importantes para mí. Aquello no se podía
reponer con dinero, era el trabajo de programación de varios meses.
Investigando el CD regrabable con todos los programas que pude conseguir, noté que un CD de este
tipo, de 650 Megabytes, una vez formateado, deja disponible un tamaño de 531 Megabytes, pero el
CD regragable en que tenía mis datos, anunciaba que su máximo tamaño era de 529 Megabytes.
Obviamente, el CIH había conseguido tocar la BIOS de la regrabadora, y, al igual que en los Discos
Duros había conseguido esconder el cilindro cero para él sólo, en el CD regrabable había conseguido
falsificar la TOC y se había reservado 2 Megabytes para su uso, sobreescribiendo los datos del
directorio que a mi me faltaba.
Entré en la página Web de Philps Europa y pude coneguir el programa + los datos necesarios para
actualizar la BIOS de mi regrabadora, pero los señores de Philips dan este servicio sólo para
las unidades compradas por separado del ordenador, y el programa de actualización no funciona
con la unidades OEM que vienen formando parte de la máquina que te compras. Y este era mi caso.
Contacté telefónicamente con el servicio de atención al cliente de Philips Europa y me dijeron
que no podían hacer nada al respecto, que el Firmware de los aparatos se diferencia entre las
unidades OEM y las vendidas al detall, y que eso era lo que había. Tozudo, como ya he dicho,
rastreé las Webs de todos los servicios Philips que encontré, y en el servicio Philips USA,
encontré a un profesional que supo y quiso decirme como podía actualizar la BIOS de mi regrabadora
que me tenía tan preocupado. ¡ Philips Europa: 0 - Philip USA: 1 ! ¡ Parece mentira !
A partir de ese momento, mi sistema funciona perfectamente, y pasa la prueba de fuego de ponerle
para trabajar la fecha del 26/Abril/1999 sin problema alguno.
Si, pero....
Uno de mis colegas tuvo la suerte de enterarse la la explosión del Chernobyl antes de encender su
máquina. Ya le había reventado al compañero de la mesa contigüa, a mí y a medio mundo, de forma
que se puso en contacto conmigo antes de atreverse a encenderla.
- ¿ Que hago ? ¡ Me da miedo, incluso, mirar el teclado !
- ¡ Tranquilo, hombre ! Aún estamos a tiempo de cortarle las alas a ese ......
- Haz exactamente lo siguiente:
- 1 : Introduce en la disquetera el disquete de arranque de Windows 95/98, protegido de escritura
- 2 : Arranca la máqina con el dedo pegado a la tecla [Supr] / [Del] / [Borrar] o como diga tu teclado, para entrar
en el programa de configuración de la BIOS.
- 3 : Una vez en el programa de configuración de la BIOS, cámbiale la fecha al Sistema, para que el virus no
pueda ver la fecha 26/Abril/1999.
- 4 : Graba los cambios de la BIOS y deja que el sistema arranque con el disquete.
.....
- ¿ Que pasa ? ¿ Arranca bién ? pregunté.
- ¡ No ! Sale un mensaje diciendo que desproteja el disque de escritura.
- ¡¡ Cuidado !! Ningún disquete de arranque da jamás ese mensaje. Esa BIOS está tocada y puede explotar
en cualquier momento.
- ¿ Que hago ?
- Apágalo, y al arrancar de nuevo, entra en el programa de configuración de la BIOS, y mira si la secuencia de
arranque está puesta como A;C.
- ¡ Vale !
- ¿ Ya ? ¿ Que pasa ?, pregunté
- Nada. Esto no arranca. Está muerto.
Con esta experiencia supimos que el código del virus ya estaba desencriptado en el Disco Duro antes de
la fecha 26/Abril/1999, y que había tocado la BIOS, para su dominio, antes de la gran explosión. Sin embargo,
a otro compañero de mi amigo, si que le arrancó el sistema con el disquete de arranque, con lo que inmediatamente
pusimos manos a la obra.
- ¿ Tienes la máquina funcionando en MS-DOS ?
- Si. ¿ Que hago ahora ?
- Toma el disquete de MICROSCOPE-32 y arráncalo.
....
- Ya está. MICROSCOPE-32 funciona perfectamente.
- Pídele que te analice el Disco C:
- OK. Lo está analizando sin problemas.
- Toma el Editor de Sectores y dime que ves en el contenido que te enseña por pantalla, que será el Sector de
Particiones.
- Mucho código y caracteres raros que no entiendo.
- Bién. Dile a Microscope que imprima el contenido de ese Sector en modo Hexadecimal, y me lo pasas por Fax.
Cinco minutos después pude analizar el contenido de aquel sector en mi estudio, a 950 Kms. de distancia de donde
se encontraban estos amigos.
- Este código parece correcto, les comuniqué. Ahora ves sacando en pantalla los restantes sectores de esa misma
pista, simplemente pulsando la tecla de flecha a derecha. Deben de estar todos absolutamente vacios. Si
ves algún código en alguno de ellos, estarás viendo al virus.
- Oye Angel, aquí hay código no repetitivo en todos los sectores.
- ¿ Estas en Cara: 0 - Pista: 0 ?
- Si. Y hay código en todos los sectores.
- Vamos a limpiarlo, le propuse.
- ¿ Como ?
- En cada uno de los sectores que haya que limpiar, pulsa Alt-E para entrar en modo edicción, y a continuación pulsa
Alt-L para que el contenido del sector se limpie por completo. Verás el efecto en pantalla. Una vez limpio el contenido
del sector en la pantalla, pulsa Enter o Esc y te aparecerá un cuadro pidiendote permiso para grabar en el disco
los cambios efectuados. Dile que sí.
- ¡ Hecho !
- Repite la operación con los demás sectores que haya en la Cara: 0 - Pista: 0.
- De acuerdo.
......
- Ya está esa pista limpia. ¿ Que hago ahora ?
- Pulsa la tecla Fin y te llevará directamente al último sector del disco. Una vez allí, dime a qué parte del disco
pertenece, Datos, Libre o Sobrecluster.
- En pantalla dice que estamos en el Sobrecluster.
- ¿ Hay código ?
- No.
- Ves pasando sectores hacia atrás, con la flecha izquierda del teclado, mientras que MICROSCOPE-32 diga que
estamos en el Sobrecluster. Deben de estar todos limpios.
- Ya está. He pasado 20 sectores hacía atrás, todos limpios, pero ahora encuentro un sector con código.
- ¿ Estás en el Sobrecluster ?
- No. Aquí dice: Zona Libre, pero hay código.
- No importa, le tranquilicé, son restos basura de algún fichero que se ha borrado. Es normal. Vamos a ver ahora
si podemos entrar en la Pista de Aterrizaje.
- ¿ Como ?
- Pulsa la tecla Fin, de nuevo, para ir al último sector del disco. Una vez allí, pulsa Alt-F para forzar una pista.
- Vale. .... Me ha dicho: Sobrepista Autorizada.
- Bién. Ahora intenta seguir leyendo sectores hacia delante, pulsando la tecla de flecha derecha en el teclado.
- Se ha cambiado la indicación de Sobrecluster por la palabra Aterrizaje, y en pantalla aparece bastante código.
- ¡ Eso es virus, colega ! Hay que limpiarlo igual que hicimos con los sectores de la pista cero.
- ¿ Me dejará escribir en la pista de aterrizaje ?
- Y, ¿ porqué no ? Si escribe el virus, MICROSCOPE-32 también.
- ¡ Funciona ! ¿ Sigo ?
- Claro. Efectúa la operación de limpieza en todos y cada uno de los sectores de la pista de aterrizaje que contengan
código, y cuando termines me avisas, que la llamada telefónica te va a salir por un pico.
En aquella máquina encontramos el código del virus desencriptado y extendido por las partes ocultas del Disco Duro,
esas partes que no mira ningún antivirus, pero tuvimos la suerte de encontrarlo antes de que se ejecutase y pudimos
limpiarlo totalmente. Aquella máquina sigue funcionando bién y no ha causado ningún problema.
Esto nos viene a decir que cualquiera que haya tenido la suerte de no ser atacado por el virus, puede tenerlo aún
latente en las partes ocultas del Disco Duro, incluso aquellos que habeis conseguido limpiar todos los ficheros con
un antivirus, tened cuidado.
Unos dias después, se puso en contacto conmigo uno de los amigos que usan el Programa Microscope-32, algo
preocupado porque los datos que observaba en sus discos duros no parecían muy coherentes.
Le pedí que me enviase por fax el contenido de algunos sectores, y os paso copia del informe que le remití tras el
estudio de los mismos, ya que nos dá otra variante del comportamiento de este virus.
Amigo José:
He recibido el material que me enviaste por correo, y aquí tienes mis impresiones sobre lo que le pasa a tu disco duro:
Microscope recibe de la BIOS de la placa los siguientes parámetros:
Disco: C:
Caras: 255 (0 a 254)
Pistas: 1023 (0 a 1022), con 63 sectores en cada pista.
Esto da un total de 16,434,495 sectores.
De estos sectores, se apartan los 63 primeros que son para la tabla de particiones, y nos quedan 16,434,432 sectores útiles para la
partición primaria.
Este número: 16,434,432, en formato hexadecimal = 00 FA C5 00, debería de estar puesto en el disco duro en dos sitios distintos:
en el sector de partición en el lugar (offset) 01CA y en el sector de arranque, en el lugar 0020 (ya sabes, los números en el disco
se escriben de derecha a izquierda, y en esos dos lugares debería de estar el numero 00 C5 FA 00.
Sin embargo, en esos lugares encontramos el número hexadecimal C1 03 FB 00, (que nosotros debemos de interpretar de derecha
a izquierda como 00 FB 03 C1) que es el número 16,450,497 en decimal.
El número de que se dispone para la partición es superior al que debería de disponer, curiosamente en 16,065 sectores, o sea una
pista completa de 63 sectores en cada una de las 255 caras.
Esto quiere decir que cuando se formateó el disco, se disponía de una pista o cilindro más de las 1023 que ahora nos indica la
BIOS.
Esto lo podemos corroborar por otro sitio.
En los datos que me enviaste por fax, me dabas el contenido del último sector del disco: Cara 254/Pista 1023/Sector 63, que
estaba completamente a cero excepto los cuatro primeros bytes. Si hacemos la cuenta, este es el sector (la cara 254 es la 255, ya
que se comienza en cara 0) 255x1023x63=16,434,495 físico del disco, que en hexadecimal = 00 FA C5 3F.
Algunos fabricantes de discos duros, al formatear en fábrica, numeran secuencialmente los sectores del disco, pero, en este caso,
no usan la norma de escribir los bytes de derecha a izquierda, consideran que es un disco de 32 bits y la numeración de derecha a
izquierda la hacen de dos en dos bytes en lugar de hacerlo de uno en uno.
Me explico con un ejemplo:
El número hexadecimal AA_BB - CC_DD, girado de byte en byte, estaría como DD_CC - BB_AA, pero girado de dos en dos
bytes (que a su vez se giran), estará como BB_AA - DD_CC.
Por este sistema, los cuatro primeros bytes de este sector, según la numeración del fabricante, deberían de ser 3F_C5 - FA_00
Sin embargo, los cuatros primeros bytes que hay marcados por el fabricante en este sector contienen FB_00 - FF_03, que
debidamente rotado nos da el número 00 FB 03 FF = 16,450,559 (como el fabricante comienza por el sector 0, este es el sector
16,450,560 del disco (comenzando por el 1)
Entre el sector 16,450,560 del fabricante, y el sector 16,434,495 que nos sale de la información de la BIOS, tenemos la misma
diferencia de 16,065 sectores (1 cilindro completo).
Microscope detecta el número de sectores que en realidad hay escrito en la tabla de particiones: C1 03 FB 00, y por eso informa
en la tabla de parámetros de que el disco dispone de 1024 pistas.
Todo esto significa que algún virus ha sido capaz de cambiar los datos que hay en la BIOS con la información de los discos duros.
Estos datos los toma la BIOS cuando, en el programa de configuración de la BIOS, hacemos el autodetect para los discos duros.
Los discos duros le pasan a la BIOS del ordenador los datos que tienen en su propia BIOS, y si el virus ha sido capaz, como he
comprobado por mí mismo, de cambiar los datos del fabricante en la mismísima BIOS de los discos duros, el asunto no tiene
arreglo, ya que los fabricantes no nos proporcionan ninguna utilidad para reprogramar las BIOS de los discos duros.
Por si sólo fuese la BIOS de la placa base la que estuviese modificada, se puede tratar de hacer un nuevo autodetect de los discos
duros desde el programa de configuración de la BIOS, a ver si cambia los parámetros actuales o si los deja igual. Si los deja igual,
la BIOS del disco duro está tocada.
Con esta maniobra, el virus le hace creer a todo el sistema que el disco duro tiene un cilindro menos de los que tiene en realidad, y
para que nadie pueda acceder a ese cilindro que se reserva para tener sus datos, cada vez que se pide una pista, el virus la
incrementa en uno, de esta forma, nadie tiene acceso a la auténtica pista cero, y cuando pides la última pista, como creemos tener
1022, el enseña la 1023 como si fuese la 1022. Nadie, excepto Microscope, va a pedir una pista más de la cuenta, con lo cual
hemos dejado al virus con el culo al aire y hemos podido ver lo que hay en la pista cero, que es lo que me enviaste por correo.
Sin embargo, el contenido de los sectores que tu imprimiste, de la pista 1024 (la pista imposible) no es código ejecutable, es una
copia de algunos sectores de FAT_32. Esto me hace sospechar que, cuando el virus está activo en memoria, redirige alguna
petición de datos o de programa ejecutable hacia otro sitio del disco duro, que es donde podría tener un virus del tipo Caballo de
Troya, indetectable por antivirus alguno.
En este caso, el virus ha cometido el fallo de no modificar el número total de sectores que se indican en la tabla de particiones y
en el sector de arranque, y esto, junto con la numeración de sectores hecha por el fabricante del disco, permite identificar al virus
CIH.
Mi consejo para volver a la normalidad:
1 - Haz copia de seguridad de tus datos.
2 - Entra en el programa de configuración de la BIOS y ejecuta Autodetect. Pon el disco en modo LBA.
3 - Utiliza Microscope-32 y entra de nuevo en la pista 1024 y borra a mano todo el contenido de esos sectores
---- (Alt_E para editar y Alt_L para limpiar)
4 - Con Microscope-32, usa la opción Herramientas de Disco/Buscar Perdidos.
---- Esta opción te limpia por completo el disco y, además, te numera secuencialmente los sectores, igual que el
---- fabricante, pero en decimal, para que sea más fácil identificarlos.
5 - Arranca el sistema con un disquete de arranque de Window de confianza y ejecuta FDISK. Haz una sola partición.
6 - Formatea el disco con FORMAT C: /u
7 - Entra de nuevo con Microscope-32 y, con el Editor de Sectores, curiosea aleatoriamente por el disco para ver si el número
marcado en cada sector, coincide con el marcado como Sector del Disco por Microscope.
Si todo va bién, instala de nuevo Windows y tus aplicaciones.
Si los números escritos en los sectores, no coinciden con los que Microscope indica en la cabecera de la pantalla de Editar
Sectores, la cosa está bastante fea. O el fabricante del disco duro te proporciona un programa para reprogramar la BIOS del
disco duro, o tíralo a la basura por la via rápida.
Yo también buscaría en Internet la Web del fabricante de tu placa base. Estos fabricantes sí que suelen tener programas y datos,
en libre descarga, para actualizar las Flash Bios de sus placas.
Espero haberte ayudado a comprender algo mejor la configuración lógica de los Discos Duros y las maniobras que hacen los virus
para volver loco al sistema y a quién intente buscarlos.
Sólo me queda desearos mucho éxito en vuestra lucha contra los virus, y ofrecerme para cualquier consulta
que tengais a través de e-mail.
Con mis mejores saludos:
Angel Moreno