Copy Link
Add to Bookmark
Report

VR6: Analisis de virus: VCL

por Fernando Bonsembiante

eZine's profile picture
Published in 
virus report
 · 2 years ago

En este número vamos a analizar un programa generador de virus, el VCL. Con este programa cualquiera puede ser autor de su propio virus.

Una pregunta que se oye siempre en los seminarios sobre virus es "¿es difícil hacer un virus?". La respuesta suele ser variada, pero básicamente hay que tener un conocimiento bastante bueno de assembler, de las estructuras del DOS y de los archivos ejecutables. Por supuesto que existen virus hechos en lenguajes de alto nivel como Pascal o C, pero para que el virus sea medianamente exitoso debe ser pequeño y rápido, por lo cual el assembler es el lenguaje de elección. Normalmente la producción de virus es algo para quienes tienen algunos conocimientos. Incluso se dijo que si hacer un virus sirve para algo, puede ser que el que lo hace aprende mucho en el proceso. Pero el programa que estamos analizando hoy es la demostración de que incluso no sabiendo prácticamente nada de programación se pueden hacer virus que funcionen.

El Virus Creation Lab, o laboratorio de creación de virus, es un programa que permite crear virus seleccionando una serie de opciones. El programa fue hecho por alguien que se hace llamar "Nowhere Man", perteneciente a una organizacion llamada 'NuKE', quien indudablemente quiso ganarse la fama (bajo seudónimo) haciendo la vida más fácil a los que quieren hacer virus. La presentación del paquete no puede ser más profesional. Trae un programa instalador que marca el disco para que no se pueda distribuir el programa una vez instalado, y los programas y documentación vienen comprimidos. No se pueden descomprimir sin el instalador, con lo cual el autor se asegura de que se mantenga la integridad del programa.

La documentación es similar a la de cualquier programa de shareware, está muy cuidada y detallada. Empieza reconociendo las marcas registradas que se van a nombrar en el texto, como cualquier manual de origen norteamericano. Le sigue una nota supuestamente 'legal', que cuesta decidir si fue escrita en broma o en serio. Basicamente dice que Nowhere Man no puede ser hecho responsable por ningun daño causado por el uso o mal uso de cualquier programa producido en totalidad o en parte por el VCL. Tambien se reserva el derecho de propiedad sobre todo el código producido por el programa, sin el permiso escrito de Nowhere Man. Me gustaría saber como es el permiso escrito de una persona que se esconde tras un alias. De todas formas, todo esto es para llegar a decir que prohibe que se use cualquier código generado por el programa para hacer un string de identificación para un scanner o para examinarlo y encotrar la forma de detectarlo y/o removerlo. Tambien se prohibe desensamblar los virus generados con este programa. Todo esto no parece haber preocupado mucho a los autores de anti- virus, porque casi todos detectan a los virus producidos por el VCL.

A continuación de esta nota, hay una de carácter más práctico que dice que por favor le den crédito al VCL cuando distribuyan virus creados con este programa, porque un proyecto que le llevó varios meses. Tambien avisa que se debe tener mucho cuidado con que se hace con estos programas y a quien se los da porque son muy peligrosos. Con esto quiza quiere calmar su conciencia por haber hecho algo reprochable como crear este programa, aunque en el resto de la documentación se enorgullece de su producto.


El entorno de producción

El programa está hecho usando Turbo Vision, un conjunto de rutinas y bibliotecas de funciones desarrolladas por Borland para facilitar la creación de interfaces de usuario. El resultado es un programa que es visual y operativamente muy similar a los lenguajes de Borland. Incluye un sistema de ayuda en contexto muy completo, con hipertexto, que hace innecesario el manual cuando se está usando el VCL.

Hay un menú de sistema, donde podemos encontrar el 'about', o sea, un copyright del programa, y la opción de 'boss key', para ocultar el programa en el caso de que se acerque alguien. Esta opción está bastante bien hecha, ya que se emula un DOS bastante bien, del que sólo se sale tipeando NuKE. Luego tenemos el menú de manejo de archivo, con el cual se puede crear un nuevo archivo de definición de virus, cargar uno con el que ya se estaba trabajando, guardar el que se está editando en ese momento, y todas las opciones de archivo que normalmente se encuentran en un entorno de trabajo de un lenguaje tipo Borland. Tambien en ese menú tenemos la opción de pedir información sobre el virus que se está creando, nos da un resumen muy breve de como es el virus.


Opciones

El tercer menú ya es más interesante. En éste podemos elegir que tipo de virus se creará. Las opciones son: Appending, o sea que el virus se agregue al programa infectado. Overwriting, donde el virus sobreescribe a su huésped. Spawning, es el caso en el que en vez de modificar el programa original se crea un archivo con el mismo nombre pero con extensión .COM para que el DOS ejecute en lugar del .EXE infectado. Trojan Horse, este caso no es un virus, sino un caballo de troya, o sea un programa que dice realizar una acción legítima pero en su lugar produce un daño. Por último, tenemos las Logic Bomb, bombas lógicas, en ese caso el VCL va a producir una porción de código que se puede incorporar a un programa para que, dada cierta condición, se active. El caso típico de la bomba lógica es el programa de sueldos y jornales que detecta que su autor fue despedido y formatea el disco del empleador como represalia. Para cada uno de estos casos tenemos varias opciones. Para los virus, se puede elegir que infecten. En esta versión del VCL solo se pueden crear virus parasitarios que infecten archivos .COM, en el caso de los overwriting pueden infectar .COM y .EXE, y en los spawning, por su forma de funcionamiento, sólo .EXE. Empezamos a notar las limitaciones del programa, ya que sólo permite infectar .COM sin destruirlos (recordemos que los virus overwriting destruyen sus huéspedes). La opción de ser residente está presente pero no activa, en el manual la prometen para la próxima versión. Esto es otra debilidad del programa, ya que los virus más interesantes y exitosos son residentes. Tambien se promete la opción de hacer indetectable al virus para cualquier antivirus residente, pero si la primer versión no tiene la opción de hacerlos residentes parece muy difícil que pueda llegar a tal nivel técnico en la segunda versión. Se puede tambien elegir el tipo de búsqueda que va a hacer el virus al infectar, o sea, en que directorios va a buscar y que archivos, y la virulencia, o sea, la cantidad de infecciones que va a hacer por cantidad de veces que se ejecute el virus. Para todos los programas generados, sean virus o no, están las opciones de generar código que impida el desensamblado y la encripción. El código anti-desensamblado se basa en deshabilitar el uso de un debuger para seguir paso a paso el virus y en incorporar 'basura' en el código para confundir un desensamblado automático hecho con Sourcer. Ninguno de los dos trucos son realmente útiles, ya que ningun investigador anti-virus sigue el código paso a paso para desensamblarlo, y las técnicas para evitar el uso del Sourcer no dan mucho resultado y son fáciles de evitar. La encripción puede llegar a ser más molesta, pero tambien utiliza un esquema muy sencillo y fácil de resolver. Por último, se puede agregar una nota interna a la definición del virus.


Efectos

El menú de efectos es el que controla lo que va a hacer el virus como 'ataque'. Se pueden elegir una gran cantidad de rutinas, por ejemplo, mostrar un mensaje, hacer un ruido, colgar la máquina, destruir uno o más discos, etcétera. Una vez elegido el efecto, aparece un menú que permite elegir cuando se va a disparar el efecto. Se pueden configurar hasta cinco rutinas de activación, como ser verificar si es una hora determinada, si es un día determinado, al azar, si se infectaron todos los archivos disponibles, el tipo de CPU, etcétera. Esas condiciones pueden activar el virus si están todas presentes o si por lo menos una se cumple. Tambien se puede elegir si se activa antes o después de la infección de un archivo. Algo interesante es que se pueden agregar tanto condiciones como efectos, simplemente hay que escribir la rutina en assembler correspondiente y luego agregarla desde este menú. Se pueden seleccionar hasta diez efectos distintos, que se van a activar en la secuencia en la que aparecen en el menú. Con esto se puede llegar a programar una cantidad de efectos muy variada, pero que no hacen a la función específica del virus que es la reproductora, sino a su ataque. Si bien el ataque es la parte que causa los problemas más visibles, la reproducción es la que hace que un virus tenga éxito o no.


Creación del virus

La parte final del programa es la encargada de crear el virus en si. Hay dos opciones dentro de ésta. Se puede crear el archivo en assembler, o un .COM directamente, listo para funcionar. En realidad, no produce archivos .COM directamente, sólo ensambla el .ASM generado usando el assembler que se defina en la configuración. El peligro del programa es precisamente generar un archivo .ASM y luego modificarlo a mano para que los antivirus no lo detecten como un virus creado por el VCL. Los virus en si, como ya vimos, no son peligrosos, son virus no residentes comunes, sin complicaciones. El problema que presenta el VCL es la posibilidad que le da a cualquiera de crear su propio virus sin tener idea de programación. Esto puede generar una superproducción de virus, algo que es mucho más preocupante que los virus generados con el VCL por si mismos.

Aquí tenemos la rutina generada por el VCL para encriptar y desencriptar un virus. Es muy sencilla, utiliza un XOR para hacer el trabajo, por lo tanto se puede usar para encriptar o desencriptar. Cualquier persona con conocimentos de assembler puede desencriptar un virus que use este esquema.

encrypt_decrypt proc near 
lea si,[bp + start_of_code] ; SI points to code to decrypt
mov cx,(end_of_code - start_of_code) / 2 ; CX holds length
xor_loop:
db 081h,034h,00h,00h ; XOR a word by the key
inc si ; Do the next word
inc si ;
loop xor_loop ; Loop until we're through
ret ; Return to caller
encrypt_decrypt endp

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT