Virus Informaticos

Bueno, esto se trata de una breve explicación informativa a nivel general para aquellos que apenas conozcan esta excéntrica rama dentro de la programación informática. Se trata de crear una nueva forma de vida, capaz de adaptarse a un nuevo entorno, la tecnología.

*NotA: Patada a la ortografia y comenzamos (perdonen mi pecado).

¿Que son los virus informaticos?

Un virus informatico se trata de una porcion de codigo de programacion cuyo objetivo basico es la infeccion del sistema en el que ha sido ejecutado, extendiendo copias de su cuerpo (codigo) por distintos ficheros ejecutables o distintos soportes para hacer de éstos (denominados hosts), réplicas de sí mismo.

Se tratan por tanto, de programas autorreplicantes de pequeño tamaño que se copian a si mismos en archivos ejecutables (por ej.) para multiplicarse por estos y extenderse lo mas posible en el sistema infectado y a ser posible, a otros sistemas.

Su objetivo es por tanto, sobrevivir y extenderse lo mas posible de modo oculto hasta el momento de la activacion o explosion, en el cual ejecuta la accion que lleva impresa en su codigo.

Toda una obra de arte, sin duda. Concepcion que no esta muy generalizada a causa, generalmente, del desconocimiento real de lo que supone este campo de investigacion informático. Los virus informaticos (la programacion de los mismos), suponen una gran tarea de – investigacion – en el campo de la informatica.

El hecho de que algunos programas autorreplicantes sean dañinos (patentando las vulnerabilidades del diseño de sistemas operativos)o no, es otro tema a tratar en la discusion, pero no por ello debemos marcar estos trabajos como – nocivos – . Pasaré de esta discusión, ya que no es el objetivo del articulo.

*Nota: La explicacion aqui ofrecida intenta ser generica, pudiendo diferir en multitud de virus informaticos, a causa del principal atractivo de estos programas, su diversidad.

Generalmente realizan una serie de acciones sobre el sistema en el que fueron ejecutados, pudiendo ser estas de caracter destructivo o no, tomando como generalidad la infeccion de archivos ejecutables, sectores de arranque o tablas de particion, por ej.

El virus, puede encontrarse directamente como el ejecutable que forma, oculto en un programa aparentemente normal, aparecer adjunto en un correo electronico, permanecer en el sector de arranque de un disquete, disco duro, etc.

Evidentemente, un virus no será beneficioso para el sistema que lo contrajo, ya que como poco hace uso del procesador, memoria y demas recursos del mismo, al mismo tiempo que incrementa el tamaño de archivos (con su codigo). Lo cual, no quiere decir que el efecto de estos codigos sea siempre especialmente dañino para el sistema infectado. Un virus, puede pasar inadvertido para el usuario del sistema en el que se aloja y para el antivirus que éste tiene instalado (en caso de tener alguno). Puede incluso, no ser pernicioso y no tener un objetivo destructivo, siendo entonces un virus – benigno – cuyas acciones no supondran problemas criticos para el sistema.

De aqui, la responsabilidad del usuario de conocer minimamente los riesgos a los que se enfrenta al ejecutar archivos cuya fuente no sea segura, pese a poseer antivirus chupando memoria y tiempo de procesador, en (muchas) ocasiones ineficaces a consecuencia del continuo avance en este campo y el desarrollo de nuevas tecnicas para la programacion de estas muestras viricas.

Es habitual que el virus se instale en la memoria RAM del sistema y pueda ser cargado en cada arranque, con objetivo de controlar los procesos que en este tienen lugar para actuar cuando le interese.

El virus, suele interceptar la comunicacion interna del sistema y actuar en consecuencia, conforme a una serie de premisas que deben cumplirse en la maquina infectada, como puede ser la abertura para lectura y ejecucion por parte del sistema operativo de un archivo en memoria, la hora o fecha del sistema, el uso de ciertos servicios, la existencia de ciertos dispositivos, la combinacion de ciertas teclas, la presencia de un disco nuevo a infectar su sector de arranque, etc.

El lenguaje por excelencia para la programacion de virus es sin duda, el ensamblador, ya que dado su pequeño grado de abstraccion a bajo nivel posee una gran potencia y eficiencia, ofreciendonos un control directo sobre la maquina programada.

Aparte, y dada la evolucion de los sistemas operativos, el uso de otros lenguajes de programacion de alto nivel esta bastante extendido en este campo. C, Pascal, Java, JavaScript, VBasic, lenguaje de Macros, y otros, son otros posibles lenguajes de programacion de virus informaticos. Su nivel de abstraccion con respecto al lenguaje ensamblador es mayor y su optimizacion en teoria es menor. No obstante, la programacion virica en estos lenguajes esta ofreciendo resultados interesantes.

¿Como son? Tipos y metodos.

La programacion de virus informaticos supone un gran avance en el desarrollo de tecnicas y metodos de programacion. La variedad existente es una prueba del trabajo realizado en este sector, aumentando su complejidad a medida que se desarrollan nuevas formas de vida digital, gracias a la pericia de programadores de virus, su conocimiento de sistemas operativos y lenguajes de programacion, al mismo tiempo que el juego intelectual al que exponen su ingenio y conocimientos.

Similares a los virus biologicos, los informaticos mantienen sus diferencias basicas en forma de infeccion, metodo de residencia y efecto causado.

Aparte, la existencia de programas diseñados especificamente para la deteccion y eliminacion de los virus informaticos, supone un punto clave a tener en cuenta a la hora de programar una criatura de este tipo.

El tamaño de lo virus informaticos, como antes mencionamos, debe ser lo mas pequeño posible, ya que de este modo su presencia en el sistema sera menos notoria y su accion mas agil.
No olvidemos, que los archivos infectados contendran en su codigo una copia del codigo del virus (al igual que el codigo genetico de una celula infectada contiene una copia del ADN del virus biologico que la infectó), siendo por tanto muy importante la optimizacion de este codigo para que contenga las instrucciones que necesitamos en el menor numero de bytes posibles.

Segun el metodo que el virus utilice para la infeccion y las tecnicas de las que haga uso para esta tarea, podemos clasificarlos en distintos tipos, algunos de los cuales citaremos a continuacion.

Tipos.

– Virus de sector de arranque o de BOOT:

El codigo virico utiliza el primer sector de un disco para infectarlo. El proceso de arranque del sistema, comienza en la BIOS la cual se encuentra en una memoria de tipo ROM (declina actividad a la CMOS (tipo RAM) apoyada por la pila como fuente de permanencia en apagado), la cual contiene las rutinas de configuracion y acceso al hardware. Tras esto, la configuracion BIOS indica en que disco se encuentra el sector de arranque (generalmente, primer sector del disco) a utilizar para la carga (el booteo) del sistema operativo (en un disco duro, cdrom, disquete, etc.). Una vez hecho esto, el DOS comienza a cargarse con IO.SYS (hardware) y MSDOS.SYS (software), leyendo CONFIG.SYS (para carga de drivers y carga en memoria del interprete de comandos que servira de interfaz con el usuario, generalmente COMMAND.COM, y por tanto carga tambien del AUTOEXEC.BAT (configuracion caracteristicas de dispositivos, personalizacion de informacion del DOS y carga de programas residentes, entre otras cosas)). Bueno, tras esto, decir que el virus utiliza el sector de arranque del disco en cuestion, copiando generalmente el sector original en otra ubicacion a la que marcara como defectuosa. Entonces, el virus es ejecutado «antes» de la carga de los ficheros del sistema operativo, cargandose en memoria por tanto y tomando el control desde el principio, para su posterior accion de infeccion en el sistema cuando este sea cargado.

– Virus de fichero o parasitarios:

El codigo virico se encuentra adjunto a un fichero ejecutable que ha invadido con anterioridad y gracias al cual comienza la infeccion por el sistema multiplicandose sistematicamente entre los demas ficheros ejecutables que éste contiene (.EXE,.COM,.DLL,.BIN,.SYS,.DRV,.OVL,etc.).

Dentro de los virus de fichero, podemos diferenciar especialmente tres tipos de virus.

– De accion directa o runtime: Son aquellos que comienzan la infeccion en el momento en que un fichero infectado es ejecutado. Cada vez que sea ejecutado, el virus tomara el control del sistema, infectara otros ficheros ejecutables y comprobara si ha de soltar su carga o bomba con su consiguiente efecto concreto. El auge de estos virus, ha decaido notablemente dada su limitada capacidad.

– De residencia en memoria o TSR: Son aquellos que, tras haber sido ejecutados por un fichero infectado, quedan residentes en un area de la memoria (Terminate and Stay Resident), tomando desde entonces el control del sistema y con capacidad para realizar su infeccion, por ej., cada vez que un fichero es abierto para su ejecucion. Para ello, hace uso de interrupciones software o de la utilizacion de las APIs, por ej., segun el sistema en el que se encuentre y para el que haya sido programado.

– De compañia: Son aquellos que crean un fichero .COM con el codigo virico por cada .EXE que encuentran para poder ser ejecutados antes que los .EXE que sean llamados sin indicacion de extension. Se limitan al sistema de prioridad de ejecucion del MSDOS (primero .com, sino .exe, y sino .bat). Notese que no modifican el archivo .EXE.

– Virus multi-particion:

El codigo virico es una combinacion de virus de fichero y virus de sector de arranque. Su potencial, evidentemente, es mucho mayor dada la mayor capacidad de accion al complementarse un tipo y otro.

Si ejecutamos un fichero infectado por este tipo de virus, aparte de la accion de infeccion del virus por distintos ficheros ejecutables, sera tambien infectado su sector de arranque.

Metodos.

Entre los distintos metodos, diferenciaremos:

– Sobreescritura:

El virus sobreescribe con su codigo el principio del fichero que infecta. Este metodo no es recomendable dado que su presencia se hace patente al no ejecutar de modo adecuado el programa infectado. En vez de este, se ejecutara el virus.

– Anexamiento:

El virus se «anexa» al principio o final del fichero que infecta. No es recomendable anexar el codigo virico al principio ya que deberia leer el codigo original del fichero para escribirlo a continuacion de este, con su consiguiente relentizacion del proceso.

Para ello, el virus suele anexarse al final del fichero que infecta, modificando los primeros bytes de éste para que apunten a la direccion en memoria del virus cuando es cargado, pudiendo este realizar las funciones para las que fue programado y devolver finalmente el control al principio del codigo del programa original (tras restaurar esos primeros bytes que modificamos anteriormente). De este modo, el fichero ejecutable (programa), se ejecuta con aparente normalidad y nuestro virus no es detectado por el usuario.

– De compañia:

El virus utiliza el orden de ejecucion en msdos para ficheros ejecutables sin extension. El modo de trabajo del dos a la hora de ejecutar un fichero sin extension, se cierne a comprobar primero si se trata de un .COM y en caso negativo, de un .EXE. De no ser ninguno de estos dos formatos, pasa a comprobar la existencia de un .BAT con dicho nombre. Entonces, este tipo de virus cada vez que localiza un fichero ejecutable de tipo .EXE, en vez de modificarlo, crea un .COM con el mismo nombre que contendra el codigo virico. De este modo, cuando se vaya a ejecutar (bajo msdos, como dijimos) un .EXE sin indicar la extension, el virus sera cargado, leido y procesado primero, para procesar el .EXE despues.

—–

Bueno, pues eso es todo por ahora. Espero que este articulo haya ayudado a tomar una concepcion un tanto «distinta» a la que (en caso de tener la convencional) teniais sobre estos bichitos

naikon. Bilbao. 19 Junio 2002