Desmitificando la creación de malware
Hay muchas técnicas en el desarrollo de malware y muchas de ellas se pueden conseguir buscando por Internet. El objetivo del presente es desmistificar la creacion de los códigos maliciosos y de sus programadores.
Autor: Cristian Borghello, Technical & Educational Manager de ESET para Latinoamérica
Cuando se habla de la creación de malware o de virus informáticos (virii, como es llamado en el ambiente) se tiende a pensar en los niveles técnicos elevados que debe alcanzar el autor de dicho código. El objetivo de este artículo es presentar los matices correctos e incorrectos de este razonamiento sin considerar los argumentos éticos y legales que estas conductas pueden acarrear.
Mucho se ha escrito y se seguirá escribiendo sobre los motivos que llevan a una persona a crear un programa cuyo objetivo es dañar al sistema informático de otra persona. La realidad es que hace años que existe esa situación y se seguirá perpetuando en el tiempo. Quizá cambien los sistemas que son objetivos de estos ataques o se haga de los mismos un negocio más o menos rentable, pero nada parece indicar que disminuirá el desarrollo de estos programas.
No es importante para el objetivo del presente estudiar estas motivaciones psico-sociales, jurídicas o legales del asunto. Exponer en blanco sobre negro las capacidades técnicas de un creador de malware hace necesaria dicha exclusión de sentimientos y patrones psicológicos.
Un virus informático (o más ampliamente un malware) es un programa o más específicamente un conjunto de líneas en uno (o más) lenguajes de programación (o scripting) como puede ser Pascal, C, Perl, Visual Basic, Assembler, Javascript, o cualquier otro de los cientos disponibles. El lenguaje elegido sólo estará limitado por los conocimientos que el creador tenga del mismo.
Una vez elegido el lenguaje de programación, el creador hará uso de su imaginación, conocimientos, intenciones, etc. para comenzar el desarrollo del programa fuente. Aquí también es importante hacer la diferencia entre creador y diseminador del programa, ya que no necesariamente deben ser la misma persona e incluso, hay grupos de desarrollo de virii que nunca hacen públicas sus creaciones, porque las mismas tienen fines educativos o de investigación en ese campo de “trabajo”.
El código del programa será tan extenso como sea necesario para llevar a cabo las acciones que el creador considere y el mismo podrá ser una obra de arte de la programación o un programa con múltiples fallos y bugs. Luego, el programador necesitará probar su creación antes de lanzarla a la calle (dado el caso que desee diseminarla).
Este proceso es similar al desarrollo de un software comercial cualquiera, cambiando sólo las motivaciones del mismo: mientras que un programa comercial tiene como objetivo ayudar al usuario a desarrollar una tarea, el programa dañino tiene como intención entorpecer este accionar o facilitar una tarea delictiva al creador del mismo.
Lo que comúnmente considera el creador a la hora de comenzar a escribir su código es:
• Objetivo del programa: un troyano residente en memoria, un gusano que se enviará por correo o que explotará una vulnerabilidad, un programa que grabará datos confidenciales (keylogger) o que ocultará procesos (rootkit), la suma de todos los anteriores, etc.
• Técnicas utilizadas: ocultación de procesos, armoring, cifrado, polimorfismo, métodos de reproducción, utilización de vulnerabilidades de la aplicación atacada, etc.
• Conocimientos técnicos: llamadas a funciones documentadas y no documentadas, utilización de APIs, sobreescritura de procesos, acceso a diferentes secciones del sistema operativo, etc.
Como puede verse, estas consideraciones hacen uso de un amplio abanico de posibilidades que no cualquier usuario maneja o conoce, amén de que no debe conocerlas para desarrollar sus actividades diarias frente a su computadora.
Sin embargo, los puntos anteriores pueden ser de conocimiento común en desarrolladores con un perfil medio-alto con habilidades específicas en el desarrollo de software que involucre código relacionado con el sistema operativo, de comunicaciones, de bajo nivel o similar. Con esto se puede entender, por ejemplo, que un programador que desarrolla software de gestión no necesariamente debe tener las habilidades mencionadas.
Hasta aquí todo parecería indicar que el programador de códigos dañinos debe pertenecer a una “raza” especial de programadores. Sin embargo, esto no es así y la demostración radica en un punto que se omitió de ex-profeso en la lista anterior: la innovación.
Como es sabido, es desmesurada la cantidad de malware actual al igual que la cantidad de desarrolladores de estos códigos. Obviamente, no todos los programas de este tipo son originales ni se escriben desde la primera hasta la última línea y, al contrario, la mayoría del código existente es tomado (copiado) de otros que se encuentran disponibles en Internet, como se aprecia a continuación.

Imagen 1: Códigos dañinos disponibles para descarga
El código “original” e innovador que se escribe cuando se trata de malware es muy reducido en comparación con el que es duplicado/tomado/modificado de una creación a otra. Esto da lugar a dos nuevas amenazas:
• Alteración masiva de códigos existentes generando una amplia difusión de familias: se crea una nueva amenaza y cientos de variantes del mismo son generadas automática o manualmente.
• Facilidad de generación de nuevas amenazas tomando como base funciones existentes y públicas: se toman las funciones necesarias de muchos programas y se genera otro nuevo.
Los conocimientos técnicos necesarios para crear amenazas originales tales como pueden ser Avispa, DirII, CIH, Slammer, el generador VBSWG con el que se creó AnnaKournikova, CodeRed, Melissa, Blaster, Nimda, etc. pueden ser elevados, pero lo que adquiere mayor importancia es el desarrollo de la idea original, algo que en la actualidad suele estar ausente de las nuevas creaciones.
Así, aparecen miles de códigos dañinos que se asemejan a otros o que aprovechan funciones ya desarrolladas y sólo cambian la metodología con que las mismas son integradas en el nuevo programa y la forma en que esta amenaza interactúa con su víctima aplicando técnicas de Ingeniería Social.
Para este último aspecto no es necesario tener altos conocimientos técnicos y de desarrollador para integrar aspectos previamente explotados, pero sí es necesario tener en claro los objetivos del nuevo malware, que en la actualidad no es otro que la recopilación de información útil del usuario para realizar tareas delictivas con ellos.
Como se puede ver en el mundo de los códigos maliciosos, también aplica el conocido dicho “cantidad no es igual a calidad”.
Más información:
Cronología de virus informáticos