La definición más simple y completa que hay de los virus corresponde al modelo D. A. S., y se fundamenta en tres características:
La característica de auto-reproducción y mutación de estos programas, que las hace parecidas a las de los virus biológicos, parece ser el origen del nombre con que hoy los conocemos.
Los virus tienen la misma edad que las computadoras. Ya en 1949 John Von Neumann, describió programas que se reproducen a sí mismos en su libro "Teoría y Organización de Autómatas Complicados".
Antes de la explosión de la micro computación se decía muy poco de ellos. Por un lado, la computación era secreto de unos pocos. Por otro lado, las entidades gubernamentales, científicas o militares, que vieron sus equipos atacados por virus, se quedaron muy calladas, para no demostrar la debilidad de sus sistemas de seguridad, que costaron millones. Las empresa privadas como Bancos, o grandes corporaciones, tampoco podían decir nada, para no perder la confianza de sus clientes o accionistas. Lo que se sabe de los virus desde 1949 hasta 1989, es muy poco.
Se reconoce como antecedente de los virus actuales, un juego creado por programadores de la empresa AT&T, que desarrollaron la primera versión del sistema operativo Unix en los años 60. Para entretenerse, y como parte de sus investigaciones, desarrollaron un juego llamado "Core Wars", que tenía la capacidad de reproducirse cada vez que se ejecutaba. Este programa tenía instrucciones destinadas a destruir la memoria del rival o impedir su correcto funcionamiento. Al mismo tiempo, desarrollaron un programa llamado "Reeper", que destruía las copias hechas por Core Wars. Conscientes de lo peligroso del juego, decidieron mantenerlo en secreto, y no hablar más del tema.
En el año 1983, el Dr. Ken Thomson, uno de los programadores de AT&T, que trabajó en la creación de "Core Wars", rompe el silencio acordado, y da a conocer la existencia del programa, con detalles de su estructura.
La Revista Scientific American a comienzos de 1984, publica la información completa sobre esos programas, con guías para la creación de virus.
En 1984, el Dr. Fred Cohen hace una demostración en la Universidad de California, presentando un virus informático residente en una PC. Al Dr. Cohen se le conoce hoy día, como "el padre de los virus". Paralelamente aparece en muchas PCs un virus, con un nombre similar a Core Wars, escrito en Small-C por un tal Kevin Bjorke, que luego lo cede a dominio público.
El primer virus destructor y dañino plenamente identificado que infecta muchas PC’s aparece en 1986. Fue creado en la ciudad de Lahore, Paquistán, y se le conoce con el nombre de BRAIN. Sus autores vendían copias pirateadas de programas comerciales como Lotus, Supercalc o Wordstar, por suma bajísimas. Los turistas que visitaban Paquistán, compraban esas copias y las llevaban de vuelta a los EE.UU. Las copias pirateadas llevaban un virus. Fue así, como infectaron mas de 20,000 computadoras. Los códigos del virus Brain fueron alterados en los EE.UU., por otros programadores, dando origen a muchas versiones de ese virus, cada una de ellas peor que la precedente. Hasta la fecha nadie estaba tomando en serio el fenómeno, que comenzaba a ser bastante molesto y peligroso.
En 1987, los sistemas de Correo Electrónico de la IBM, fueron invadidos por un virus que enviaba mensajes navideños, y que se multiplicaba rápidamente. Ello ocasionó que los discos duros se llenaran de archivos de origen viral, y el sistema se fue haciendo lento, hasta llegar a paralizarse por mas de tres días.
El virus Jerusalem, según se dice creado por la Organización de Liberación Palestina, es detectado en la Universidad Hebrea de Jerusalem a comienzos de 1988. El virus estaba destinado a aparece el 13 de Mayo de 1988, fecha del 40 aniversario de la existencia de Palestina como nación. Una interesante faceta del terrorismo, que ahora se vuelca hacia la destrucción de los sistemas de cómputo, por medio de programas que destruyen a otros programas.
El 2 de Noviembre del 1988, dos importantes redes de EE.UU. se ven afectadas seriamente por virus introducidos en ellas. Más de 6,000 equipos de instalaciones militares de la NASA, universidades y centros de investigación públicos y privados se ven atacados.
Por 1989 la cantidad de virus detectados en diferentes lugares sobrepasan los 100, y la epidemia comienza a crear situaciones graves. Entre las medidas que se toma, para tratar de detener el avance de los virus, es llevar a los tribunales a Robert Morís Jr. acusado de ser el creador de un virus que infectó a computadoras del gobierno y empresas privadas. Al parecer, este muchacho conoció el programa Core Wars, creado en la AT&T, y lo difundió entre sus amigos. Ellos se encargaron de diseminarlo por diferentes medios a redes y equipos.
En los últimos años, con el uso masivo de las redes, han aparecido una serie de virus cuya principal característica ha sido su rápida difusión, aprovechando las redes de comunicaciones, y también han alcanzado gran importancia los virus de macro.
La cantidad de virus que circula en la actualidad
no puede llegar a ser precisada pero para tener una idea los últimos
antivirus pueden identificar alrededor de cincuenta mil virus (claro que
en este valor están incluidos los clones de un mismo virus).
a) Tipos de virus según el destino de infección.
b) Tipos de Virus según sus acciones y/o modo de activación
A continuación se explican los prefijos más
identificatos:
Inserción. Los virus que utilizan el método de inserción buscan alojarse en zonas de código no utilizadas o en segmentos de datos dentro de los archivos que contagian, de esta manera la longitud total del archivo infectado no varía. Este método, parecido al de empalme, exige mayores técnicas de programación de los virus para poder detectar las zonas posibles de contagio dentro de un ejecutable, por lo que generalmente no es muy utilizada por los programadores de virus informáticos.
Reorientación. Este método es una variante del anterior. Bajo este esquema se introducen centrales virósicas (los códigos principales del virus) en zonas físicas del disco duro marcadas como defectuosas o en archivos ocultos del sistema. Estos códigos virales, al ejecutarse, implantan pequeños trozos de código en los archivos ejecutables que infectan, que luego actúan como llamadores de las centrales virósicas. La principal ventaja de este método es que el cuerpo del virus, al no estar inserto en el archivo infectado sino en otro sitio oculto, puede tener un tamaño bastante grande, aumentando así su funcionalidad. La desventaja más fuerte es que la eliminación de este tipo de infecciones es bastante sencilla. Basta con borrar archivos ocultos sospechosos o reescribir las zonas del disco marcadas como defectuosas.
Polimorfismo. Este es el método más avanzado de contagio logrado por los programadores de virus. La técnica básica usada es la de inserción del código viral en un archivo ejecutable, pero para evitar el aumento de tamaño del archivo infectado, el virus compacta parte de su código y del código del archivo anfitrión de manera que la suma de ambos sea igual al tamaño original del archivo. Al ejecutar el programa infectado actúa primero el código del virus descompactando en memoria las porciones previamente compactadas. Una variante mejorada de esta técnica permite a los virus usar métodos de encriptación dinámicos para disfrazar el código del virus y evitar ser detectados por los antivirus.
Sustitución. El método de sustitución, usado con variantes por los Caballos de Troya, es quizás el método más primitivo. Consiste en sustituir el código completo del archivo original por el código del virus. Al ejecutar el programa infectado el único que actúa es el virus, que cumple con sus tareas de contagiar otros archivos y luego termina la ejecución del programa reportando algún tipo de error. Esta técnica tiene sus ventajas, ya que en cada infección se eliminan archivos de programas válidos, los cuales son reemplazados por nuevas copias del virus.
Tunneling. Es una técnica usada por programadores
de virus y antivirus para evitar todas las rutinas al servicio de una interrupción
y tener así un control directo sobre esta. Requiere una programación
compleja, hay que colocar el procesador en modo kernel. En este modo de
funcionamiento, tras ejecutarse cada instrucción se produce la INT
1. Se coloca una ISR (Interrupt Service Routine) para dicha interrupción
y se ejecutan instrucciones comprobando cada vez si se ha llegado a donde
se quería hasta recorrer toda la cadena de ISRs que halla colocando
el parche al final de la cadena. Los virus utilizan el tunneling para protegerse
de los módulos residentes de los antivirus que monitorean todo lo
que sucede en la máquina para interceptar todas las actividades
"típicas" de los virus. Para entender como funciona esta técnica
basta saber como trabaja este tipo de antivirus. El módulo residente
queda colgado de todas las interrupciones usualmente usadas por los virus
(INT 21, INT 13, a veces INT 25 Y 26) y entonces cuando el virus intenta
llamar a INT 21, por ejemplo, para abrir un ejecutable para lectura / escritura
(y luego infectarlo), el antivirus emite una alerta, pues los ejecutables
no son normalmente abiertos, ni menos para escritura. Y así con
todas las llamadas típicas de los virus. En cambio, cuando se hace
una llamada común y corriente, el antivirus no le da mayor importancia
y la deja pasar, llamando a la INT 21 original. Un virus con tunneling,
entonces, antes de llamar a ninguna función ni hacer nada, intenta
obtener el address absoluto de esta INT 21 original, que está en
alguna parte de la memoria del antivirus residente. Una vez que obtiene
este address, accede al MS-DOS por medio de el, sin llamar al antivirus.
Y así, efectivamente, le "pasa por debajo", lo "tunelea". ¿Cómo
se hace esto?
Existen dos formas fundamentales de obtener este address:
La primera, y la más usada, es utilizando
la interrupción de trace (INT 1) y la trap flag. (Que son usadas
por los DEBUGGERS) para atravesar el código línea por línea
hasta hallar lo que se busca. Es usada por todos los virus que usan esta
técnica, como por ejemplo, el Predator II o el Yankee Doodle.
La segunda, hacer un simple y llano scanning del código, byte
a byte, hasta hallar el address. Se usa en pocos virus, pero es la que
usa Kohntark en su célebre Kohntark Recursive Tunneling Toolkit.
Problemas Generales del Tunneling.
Pero el problema principal del tunneling es que
aún teniendo éxito en obtener la INT 21 posta, se pueden
tener problemas si hay algún residente importante y uno lo esta
pasando por debajo. Es famoso ya el caso del Predator II y el DoubleSpace.
El predator II tuneleaba por debajo del DoubleSpace y trataba de acceder
al disco directamente por MS-DOS. Esto produjo que destruyera el contenido
de varios discos rígidos. En definitiva, esto es contrario a las
intenciones del tunneling.
PROPAGACIÓN
¿Cómo se propagan los virus?
Técnicas de auto encriptación (ocultación): Esta técnica muy utilizada, consigue que el virus se encripte de manera diferente cada vez que se infecta el fichero, para intentar pasar desapercibido ante los antivirus.
Anti-debuggers (protección antivirus): Un debugger es un programa que permite descompilar programas ejecutables y mostrar parte de su código en lenguaje original. Los virus usan técnicas para evitar ser desensamblados y así impedir su análisis para la fabricación del antivirus correspondiente.
Mecanismos Polimorficos (camuflaje): Una técnica
para impedir ser detectados, es la de variar el método de encriptación
de copia en copia. Esto obliga a los antivirus a usar técnicas heurísticas
ya que como el virus cambia en cada infección es imposible localizarlo
buscándolo por cadenas de código. Esto se consigue utilizando
un algoritmo de encriptación que pone las cosas muy difíciles
a los antivirus. No obstante no se puede codificar todo el código
del virus, siempre debe quedar una parte sin mutar que toma el control
y esa es la parte más vulnerable al antivirus. La forma
más utilizada para la codificación es la operación
lógica XOR. Esto es debido que esta operación es reversible:
2 XOR 5 = 3
3 XOR 2 = 5
En este caso la clave es el número 9, pero
utilizando una clave distinta en cada infección se obtiene una codificación
también distinta. Otra forma también muy utilizada
consiste en sumar un numero fijo a cada byte del código vírico.
Armouring (Proteccion Antivirus): Mediante esta técnica el virus impide que se examinen los archivos que él mismo ha infectado. Para conocer más datos sobre cada uno de ellos, éstos deben ser abiertos (para su estudio) como ficheros que son, utilizando programas especiales (Debuger) que permiten descubrir cada una de las líneas del código (lenguaje de programación en el que están escritos). Pues bien, en un virus que utilice la técnica de Armouring no se podrá leer el código
Técnica Tunneling (evasión): Con esta técnica, intentar burlar los módulos residentes de los antivirus mediante punteros directos a los vectores de interrupción. Requiere una programación compleja, hay que colocar el procesador en modo paso a paso. En este modo de funcionamiento, tras ejecutarse cada instrucción se produce la interrupción 1. Se coloca una ISR (Interrupt Service Routine) para dicha interrupción y se ejecutan instrucciones comprobando cada vez si se ha llegado a donde se quería hasta recorrer toda la cadena de ISRs que halla colocando el parche al final de la cadena.
Definiremos daño como una acción indeseada, y los clasificaremos según la cantidad de tiempo necesaria para reparar dichos daños. Existen seis categorías de daños hechos por los virus, de acuerdo a la gravedad.
No para toda enfermedad existe cura, como tampoco existe una forma de erradicar todos y cada uno de los virus existentes.
La función de un programa antivirus es detectar
la presencia o la acción de un virus informático. Adicionalmente,
un antivirus puede dar la opción de erradicar un virus informático
de una entidad infectada.
1. SCANNINGSobre la base de estas consideraciones, podemos consignar que un buen sistema antivirus debe estar compuesto por un programa detector de virus, que siempre esté residente en memoria, y un programa que verifique la integridad de los sectores críticos del disco rígido y sus archivos ejecutables. Existen productos antivirus que cubren los dos aspectos, o bien pueden combinarse productos diferentes configurados de forma que no se produzcan conflictos entre ellos.
Es la primera técnica que se popularizó para la detección de virus informáticos, y que todavía se sigue utilizando. Consiste en revisar el código de todos los archivos contenidos en la unidad de almacenamiento, fundamentalmente los archivos ejecutables, en busca de pequeñas porciones de código que puedan pertenecer a un virus informático. Este procedimiento, denominado escaneo, se realiza a partir de una base de datos que contiene trozos de código representativos de cada virus conocido, agregando el empleo de determinados algoritmos que agilizan los procesos de búsqueda.Fue bastante eficaz en los primeros tiempos de los virus informáticos, cuando había pocos y su producción era pequeña. Este relativamente pequeño volumen de virus informáticos permitía que los desarrolladores de antivirus escaneadores tuvieran tiempo de analizar el virus, extraer el pequeño trozo de código que lo iba a identificar y agregarlo a la base de datos del programa para lanzar una nueva versión. Sin embargo, la obsolescencia de este mecanismo de identificación como una solución antivirus completa se encontró en su mismo modelo.
El primer punto grave de este sistema radica en que siempre brinda una solución a posteriori: es necesario que un virus informático alcance un grado de dispersión considerable para que sea enviado (por usuarios capacitados, especialistas o distribuidores del producto) a los desarrolladores de antivirus. Estos lo analizarán, extraerán el trozo de código que lo identificará, y lo incluirán en la próxima versión de su programa antivirus. Este proceso puede demorar meses a partir del momento en que el virus comienza a tener una dispersión considerable, lapso en el cual puede causar graves daños sin que pueda ser identificado.
Además, este modelo consiste en una sucesión infinita de soluciones parciales y momentáneas que deben actualizarse periódicamente debido a la aparición de nuevos virus.
La técnica de scanning es altamente ineficiente, pero se sigue utilizando debido a que permite identificar rápidamente la presencia de los virus más conocidos y, como son estos los de mayor dispersión, permite una importante gama de posibilidades.
Un ejemplo típico de un antivirus de esta clase es el Viruscan de McAfee.
2. ALGORITMOS HEURÍSTICOS
En virtud del pronto agotamiento técnico de la técnica de scanning, los desarrolladores de programas antivirus han dotado a sus creaciones de métodos para búsquedas de virus informáticos (y de sus actividades), que no identifican específicamente al virus sino a algunas de sus características generales y comportamientos universalizados.Este tipo de método rastrea rutinas de alteración de información que no puedan ser controladas por el usuario, modificación de sectores críticos de las unidades de almacenamiento (master boot record, boot sector, FAT, entre otras), etc.
Un ejemplo de este tipo de métodos es el que utiliza algoritmos heurísticos.
De hecho, esta naturaleza de procedimientos busca, de manera bastante eficiente, códigos de instrucciones potencialmente pertenecientes a un virus informático. Resulta eficaz para la detección de virus conocidos y es una de las soluciones utilizadas por los antivirus para la detección de nuevos virus. El inconveniente que presenta este tipo de algoritmo radica en que puede llegar a sospecharse de muchisimas cosas que no son virus. Esto hace necesario que el usuario que lo utiliza conozca un poco acerca de la estructura del sistema operativo, a fin de poseer herramientas que le faciliten una discriminación de cualquier falsa alarma generada por un método heurístico.
Algunos de los antivirus de esta clase son F-Prot, Norton Anti Virus y Dr. Solomon's Toolkit.
En el siguiente apartado se aprofundiza más este tipo de algoritmos.
3. CHEQUEADORES DE INTEGRIDAD
Otra forma de detectar la presencia de un virus informático en un sistema consiste en monitorear las actividades de la PC señalando si algún proceso intenta modificar los sectores críticos de los dispositivos de almacenamiento o los archivos ejecutables.
MODELO ANTIVIRUS
La estructura de un programa antivirus, está
compuesta por dos módulos principales: el primero denominado de
control y el segundo denominado de respuesta. A su vez, cada uno de ellos
se divide en varias partes:
Módulo de control
Posee la técnica verificación de integridad que posibilita el registro de cambios en los archivos ejecutables y las zonas críticas de un disco duro. Se trata, en definitiva, de una herramienta preventiva para mantener y controlar los componentes de información de un disco rígido que no son modificados a menos que el usuario lo requiera.Otra opción dentro de este módulo es la identificación de virus, que incluye diversas técnicas para la detección de virus informáticos. Las formas más comunes de detección son el scanning y los algoritmos, como por ejemplo, los heurísticos.
Asimismo, la identificación de código dañino es otra de las herramientas de detección que, en este caso, busca instrucciones peligrosas incluidas en programas, para la integridad de la información del disco duro.
Esto implica descompilar (o desensamblar) en forma automática los archivos almacenados y ubicar sentencias o grupos de instrucciones peligrosas.
Este módulo posee una administración de recursos para efectuar un monitoreo de las rutinas a través de las cuales se accede al hardware de la computadora (acceso a disco, etc.). De esta manera puede limitarse la acción de un programa restringiéndole el uso de estos recursos, como por ejemplo impedir el acceso a la escritura de zonas críticas del disco o evitar que se ejecuten funciones de formato del mismo.
Módulo de respuesta
La función alarma se encuentra incluida en todos los programas antivirus y consiste en detener la acción del sistema ante la sospecha de la presencia de un virus informático, e informar la situación a través de un aviso en pantalla.Algunos programas antivirus ofrecen, una vez detectado un virus informático, la posibilidad de erradicarlo. Por consiguiente, la función reparar se utiliza como una solución momentánea para mantener la operatividad del sistema hasta que pueda instrumentarse una solución adecuada. Por otra parte, existen dos técnicas para evitar el contagio de entidades ejecutables: evitar que se contagie todo el programa o prevenir que la infección se expanda más allá de un ámbito fijo.
Aunque la primera opción es la más adecuada, plantea grandes problemas de implementación.
Las técnicas heurísticas nacen de la necesidad de una “detección genérica” de los virus informáticos, es decir, la posibilidad de detectar “cualquier virus” sin haberlo analizado antes y sin estar en la base de datos del antivirus que se esté considerando. Para esto sólo hay que buscar “instrucciones comunes” de los virus para advertir de la posibilidad de que un archivo o programa esté infectado.
Cuando analizamos las primeras instrucciones de cualquier archivo, veremos instrucciones para detectar los parámetros de la línea de comandos, borrar la pantalla, llamar a alguna función, ejecutar alguna macro, etc. Si se trata de un virus suelen ser otras bien diferentes como activar el cuerpo del virus o buscar más archivos para intentar implantarles su código.
La experiencia es lo que lleva a una persona a reconocer algo infectado de algo limpio en cuestión de segundos. Esa “experiencia” se ha pretendido introducir en los programas antivirus bajo el nombre de “heurística”.
El funcionamiento de la heurística es sencillo, primero se analiza cada programa sospechoso sin ejecutar las instrucciones, lo que hace es desensamblar el código de máquina para deducir que haría el programa si se ejecutara. Avisando que el programa tiene instrucciones para hacer algo que es raro en un programa normal, pero que es común en un virus.
El principal problema de las técnicas heurísticas es los falsos positivos. A pesar de que se han mejorado mucho en los últimos años, siguen sin conseguir demasiada efectividad. El problema más que en la calidad de la rutina heurística está en la interpretación que el usuario realice de ese aviso heurístico.
Entendiendo la Heurística como un indicador de probabilidad de contagio, esto nos lleva a considerarla como un sistema de detección mejorada que al incluirla los antivirus nos permite establecer un sistema de alerta y de prevención ante la aparición de mutaciones de virus o de nuevos virus.
Existen algunos programas que, sin llegar a ser virus, ocasionan problemas al usuario. Estos no-virus carecen de por lo menos una de las tres características identificatorias de un virus (dañino, autorreproductor y subrepticio).