lunes, 9 de julio de 2007

El apasionante mundo de los virus

Alien [blackhat4all@gmail.com]

No creo que exista una persona fanática al mundo digital que no haya sentido alguna vez una cosquillita por dentro que lo impulse a hacer un virus. Puede ser que muchos me tilden de loco o de sicópata, pero los que han creado un virus sabrán de lo que les hablo, cuando ven una de sus creaciones incubándose en otras máquinas, andando libremente por la red, o simplemente jugándole una broma de mal gusto a un vecino.

Generalmente existe una etapa en la que la muchos de los jóvenes interesados en la computación dedican grandes espacios de tiempo a leer, estudiar y luego programar en lenguajes complejos sólo para crear un virus. Luego, cuando tienen una base lo suficientemente sólida en programación, hay quienes toman caminos distintos y se dedican a la programación web -o algo por el estilo-, mientras otros continúan interesados en la evolución de estos infecciosos bichitos.

Los veteranos que me están leyendo ahora no me van a negar que a veces extrañan esos días que pasaban sentados frente al PC, tratando de que sus programas fueran lo más cautelosos posibles, o buscando nuevas formas de cargar ejecutables que no fuera por el registro, o simplemente leyendo el código del último virus que salió. Eran tiempos hermosos, ¿verdad?

Un poco de historia::

Los primeros programas destinados a dañar la computadora (sin calificarlos aún de virus), datan de 1960, cuando Douglas McIlory, Victor Vysottsky y Robert T. Morris crearon un juego para despejar la mente de alguno de los programadores de los laboratorios Bell de AT&T. La idea del juego era que dos programadores escribieran códigos tal que, puestos ambos en la misma máquina, uno obligara al otro a realizar una instrucción inválida. Cuando el juego terminaba, ambos programas se quitaban de la memoria, pues de lo contrario podrían afectar considerablemente a otros programas que corrieran posteriormente en la misma computadora.

El primer programa maligno fue creado en 1972 por Robert Thomas Morris y lo que hacía básicamente era mostrar periódicamente en pantalla un cartel que decía: "I'm a creeper... catch me if you can!" ("soy una enredadera... ¡agárrenme si pueden!"), contra el cual fue creado el primer antivirus de la historia, llamado Reaper (segadora).

Tipos de virus::

La detección de virus se ha hecho más difícil a medida que pasa el tiempo, debido a que no se puede hacer un antivirus que trabaje sólo para un tipo de programa, porque los virus, además de crecer en cantidad, crecen también en variedad; tanto que podemos agruparlos en un conjunto de más de 15 elementos:

Virus residentes::
Son los que se esconden en la memoria RAM. Desde allí controlan todos los archivos que se abran, creen, copien, renombren... en fin, todo lo que se haga sobre un archivo binario. Generalmente atacan cuando se cumple una condición determinada; hasta entonces son "inofensivos".

Virus de Acción directa::
A diferencia de los anteriores, estos no están en memoria, ya que su objetivo es la reproducción y actuar inmediatamente después de que sean ejecutados. Tienen como ventaja (o desventaja para el que los hace) que se pueden desinfectar los ejecutables contagiados.

Virus de Sobreescritura::
Como su nombre indica, sobrescriben los archivos que infectan, dejándolos permanentemente inservibles y haciendo que la única opción para los antivirus sea eliminarlos, perdiéndose toda la información que éstos contenían.

Virus Boot::
Este tipo de virus no infecta ficheros, se graban en el sector de arranque de las unidades. Su única vía de propagación es encender la máquina con un disco infectado, de lo contrario es imposible contagiarse. Es por esta razón que ya no se produce a gran escala este tipo de virus.

Virus macro::
Este tipo de virus se crea utilizando las macros que nos ofrecen algunos programas, dentro de los cuales se encuentran las aplicaciones principales de Microsoft Office. Aunque la mayoría de los programas que utilizan macros advierten cuando un documento incluye alguna, para los creadores de este tipo de virus no es nada difícil esquivar estas protecciones, utilizando cada día nuevas técnicas.

Virus de enlace o de dirección::
Este tipo de virus en específico se encarga de modificar las direcciones donde se encuentran los ficheros, haciendo que éstas lo referencien a él. Así, cuando un usuario ejecuta un archivo, realmente está cargando al virus, y éste pasa a su fase de continuar infectando otros archivos de la misma manera, o inicia un proceso de peores consecuencias.

Virus encriptados::
Estos virus se autoencriptan, sobre todo para evitar que programas antivirus los puedan detectar. A la hora de infectar tienen que desencriptarse, y luego que terminan su acción se vuelven a "esconder". Esta tarea es un poco pesada, si lo vemos desde el punto de vista del algoritmo de programación, pero así se asegura que el virus sea más "fuerte".

Virus polimórficos::
Estos son más "poderosos" que los anteriores. En cada nueva copia de ellos se encriptan, o cambian parte de su código, su nombre, o cualquier otro factor identificable por los antivirus. De esa forma pueden mantenerse mucho más tiempo activos.

Virus multipartes::
Estos son los mejores... perdón, los peores. Son programados para utilizar varias técnicas unidas, no hacen distinción entre ficheros, macros, programas, discos, en fin, lo que sea. Programar uno de estos es realmente difícil.

Virus de Ficheros::
Son los más comunes. Este tipo de virus es conocido por la mayoría de los antivirus y su acción es sencilla. Utilizando código de ensamblador, sobrescribe los primeros bytes del archivo que quiera infectar y luego muestra un mensaje, alerta, o cualquier cosa que el creador haya definido. Es, además, el primer tipo de virus que programa alguien que quiera empezar a desarrollarse en esta tarea. Puede ser desarrollado con cualquier lenguaje y en poco tiempo, relativamente.

Virus de compañía::
Se les llama así porque necesitan para su desarrollo de un archivo que previamente ya está en el sistema. Hacer un virus de este tipo generalmente se debe a que su tamaño es demasiado grande, o porque se desea que su acción tenga efecto en un tipo de sistema específico, así que no hay ninguna necesidad de cargar con archivos que ya están instalados. Por lo general son virus de ficheros.

Virus FAT::
Este tipo en especial es muy peligroso, ya que controlan la FAT y pueden denegar el acceso a ciertas partes del disco duro. Aclaro que no es lo mismo que esconder funciones del sistema operativo; eso es poco en comparación con el daño que pueden ocasionar los virus FAT.

Gusanos::
Los gusanos en especial no necesitan infectar otros archivos. Su misión en sólo propagarse por las redes hasta saturarlas o hacer la misma operación dentro de la memoria del ordenador, hasta colapsarla.

Troyanos::
Un troyano puede ser extremadamente peligroso. Su objetivo es instalar otros programas o enviar por correo electrónico información confidencial o potencialmente peligrosa sin el consentimiento de los usuarios.

Bombas lógicas::
Las bombas lógicas son un tipo especial de programa maligno que permanece en la computadora hasta tanto se cumpla una condición definida por su programador. Generalmente suelen ser devastadores cuando liberan el potencial de su código.

Virus Hoax::
Estos programas no se considera un virus como tal, ya que no resultan peligrosos para los usuarios; sin embargo, sí pueden sembrar el pánico en aquellos que no conozcan mucho sobre computadoras. Pero no hay que asustarse, estos programas sólo muestran un cartel en la pantalla advirtiéndote, o en muchos casos amenazándote.

Técnicas de infección::

Aunque parezca absurdo, en la mayoría de los casos son los mismos usuarios quienes instalan los virus. Sí, como lo oyen, perdón... como lo leen. Un virus por sí solo no puede llegar a infectar la máquina de alguien si primeramente ese alguien no le da entrada, ya sea por correo o por algún dispositivo de almacenamiento.

Sé que puede resultar difícil -para quien no sea un experto- descubrir que un correo contenga virus o no. Sin embargo, muchos tienen activado sus gestores de correo para que le muestre una vista preliminar del contenido que les ha llegado, sin saber que, valiéndose de eso, muchos virus llegan a ejecutarse y transferirse a la PC automáticamente. Otros, que tienen el clic un poco suelto, se desesperan cuando un amigo les lleva un CD de programas a la casa y activan todas las aplicaciones, sin saber exactamente qué hace cada una de ellas.

¿Como sé si estoy infectado?::

Casi todos los tipos de virus, excepto los caballos de Troya, las bombas lógicas, entre otros, van dejando a su paso un rastro, algo que deben hacer para poder cumplir con su cometido. Mencionaré unos aspectos que para mí son importantes a la hora de saber si estoy contagiado, pero aclaro que no es algo definitivo. Alguna de las cosas que diré pueden ser causadas por virus o por desperfectos en el hardware o software.

Por lo general, cuando se adquiere uno de estos programas malignos, se suelen ver cosas extrañas en el sistema, como la aparición o desaparición de ficheros y carpetas, la lentitud de nuestro ordenador; también se nos puede hacer imposible abrir cierto tipo de archivo o dispositivo extraíble, puede disminuir paulatinamente el espacio en nuestro disco duro, en fin, pueden pasar varias cosas, pero para identificarlas bien es necesario tener un amplio conocimiento sobre la máquina que tenemos. No es suficiente saber que tenemos Windows XP SP2 instalado o aprenderse de memoria los nombres y los números de serie de todas las piezas que tenemos incorporadas al board. Hay que saber qué tiempo demora en encender nuestra PC, qué uso se le está dando al disco duro, la velocidad promedio de ciertos programas para abrirse (al menos los más usados), para poder tener una idea lo más exacta posible de si el sistema está más lento por razones normales o por factores desconocidos. Generalmente entramos a nuestras computadoras como administradores y saber sobre qué estamos trabajando es saber realmente administrar. Estas cosas, aunque parezcan un poco paranoicas, nos ofrecen datos reales que pueden ser usados tanto para la detección de virus como para otras cosas.

Técnicas más comunes utilizadas::

La inmensa mayoría de los virus (al menos los de archivos, que son los más abundantes), suelen necesitar activarse desde que nuestro ordenador se prende, lo que les deja poco espacio para esconderse si conocemos los lugares que más frecuentemente se utilizan para dicho fin. Otros, especialmente los que dependen de las memorias para su diseminación, crean o modifican archivos que se encuentran en la raíz de un dispositivo.

¿Cómo crearlos?::

En la edición #13 de la revista hablé sobre algunas técnicas para crear un troyano. No obstante, para crear un buen virus, se debe pensar en muchas cosas. Lo primero es tener bien definido con qué objetivo se va a crear y, sobre la base de ello, trabajarlo. Luego, si se quiere que sea lo más persistente posible, hay que programarle ciertas funciones que le permitan sobrevivir a posibles detecciones. Para esto se pueden crear varios subprogramas que se encarguen de colocar nuevamente el archivo original en la posición más efectiva.

Un aspecto a tener en cuenta a la hora de desarrollar un software maligno es la imaginación... pues sí: la imaginación. No sería nada original hacer un programa que se comporte igual o similar a otro que ya ha sido detectado. Un buen programador de virus debe tener una mente abierta a posibles vulnerabilidades del sistema que quiera atacar, debe conocer a fondo sus debilidades y trabajar en ellas hasta explotarlas. A veces, mientras más ilógico parezca un método, quizás más efectivo sea.

Una buena práctica sería que no se cargara desde el inicio del sistema, sino que se ejecute sólo cuando nos haga falta. Así nos evitaríamos que los programas antivirus (que también se inician junto con el ordenador), lo detectaran mientras chequean las áreas críticas del sistema.

Un virus, siempre que se pueda, debe ser pequeño, compatible con todos los sistemas, portable, seguro, no detectable, cambiante, moderno, potente y, sobre todas las cosas, bien dañino (si es lo que se quiere lograr).

¿Por qué hacerlo?::

Hasta ahora no hay un patrón que rija a los programadores de virus. Hay quienes lo hacen por simple diversión; otros por aprender o por satisfacción personal, por amor a una persona o por amor a sí mismos. Otros crean virus para cubrir ciertas necesidades o para obtener algún tipo de información. Los motivos son incontables, pero sea cual fuere la razón, la mayoría de las personas que crean virus, lo único que quieren es que su "hijito" se propague por la mayor cantidad de ordenadores que pueda, destruya o recopile la información deseada y luego "regrese a casa" con la satisfacción del deber cumplido.

A pesar de toda la mala fama que puedan tener estos programas, es innegable que han ayudado al desarrollo de todo tipo de tecnologías, puesto que muchas de las vulnerabilidades descubiertas en los sistemas operativo son gracias a la acción de un virus. A los virus se les considera como programas malignos, sin embargo, los que se propagan por el correo electrónico utilizan un tipo de programación que perfectamente pudiera ser aplicada a una empresa para distribuir un tipo de información determinada; los que se quedan en la máquina, con unos pequeños cambios en el código, pudieran convertirse en robots que constantemente recorrieran el disco duro verificando que los vínculos a los archivos se mantengan correctos, las bombas lógicas pudieran implementarse para cerrar una ventana cuando algún usuario intente escuchar música en un lugar u horario que no está permitido, etc. Como dijo mi amigo Einstein: "Todo es relativo".

No quiero que se piense, después que leyeron esto, que estoy de acuerdo con destruir máquinas ajenas. Todo lo contrario: estoy haciendo un llamado a esos que tienen que vivir en el anonimato, sin ser reconocidos por la sociedad; los estoy convocando a que programen el mejor virus de sus vidas, que lo configuren para que acabe con todo el mundo en menos de tres días, y luego, cuando se sientan satisfechos antes de compilar, reemplacen todas las instrucciones que digan Delete por Create.

Para saber más...



Artículos relacionados


No hay comentarios: