El “downloader” más pequeño del mundo

Workspace

Gil Dabah ha propuesto un desafío que consiste en crear el “downloader” (descargador automático) más pequeño posible para Windows.

Por ahora, ha conseguido un ejecutable de 304 bytes capaz de descargar un archivo desde Internet y ejecutarlo de forma transparente, lo que supone un importante avance en esta técnica.

Gil Dabah más conocido como Arkon, es un apasionado de la programación y colaborador de ZERT. Este fue el grupo que programó el parche no oficial para la vulnerabilidad VML de Internet Explorer. Arkon se ha propuesto crear el ejecutable más pequeño capaz de descargar a su vez otro archivo de Internet y ejecutarlo.

Con esta simple premisa Arkon (con ayuda de otros expertos que han aportado ideas) ha llegado (en una tercera versión) a crear un ejecutable perfectamente funcional en 304 bytes, cuando la primera versión pesaba los ya escasos 411 bytes. A través de sofisticadas e ingeniosas técnicas ha conseguido reducir a la mínima expresión un programa que descarga desde su página otro programa que a su vez muestra un simple mensaje por pantalla.

Code crunching es el nombre dado a este método, destinado a optimizar cada byte usado en un ejecutable. Las técnicas aplicadas son realmente creativas, y se valen de todo tipo de artimañas para arañar bytes y reducir al máximo el programa.

Aparte del interés para programadores, la funcionalidad de este experimento lo vuelve especialmente interesante. Este programa es absolutamente inocuo de por sí, pero su finalidad lo convierte en potencialmente peligroso. Los “downloaders” son herramientas muy usadas por el malware en general, para intentar pasar inadvertidos ante las medidas de protección. Su principal función consiste en conectar con un servidor de Internet y descargar nuevos componentes y troyanos. Dividen el proceso de infección en dos pasos, primero se fuerza la ejecución del “downloader” y es este el que descarga el malware en sí, a través de distintos métodos de ofuscación. El archivo descargado contiene el “payload” o carga vírica y con este método, los atacantes sólo tienen que cambiar o reemplazar el ejecutable que es descargado para seguir aprovechando la infección cuando el “payload” sea demasiado “detectado” o cualquier otro motivo. Lo interesante es que con el diminuto tamaño conseguido por Arkon, se consigue una rapidez y unas características especiales que podrían incluso evitar que su actividad sea detectada en redes. Pero sin duda, lo más relevante (y el objetivo principal) es que a la hora de programar, la imaginación puede superar cualquier límite impuesto.

Como curiosidad, y conociendo que cualquier programa que intente descargar algo desde Internet puede resultar potencialmente peligroso, la muestra tiny3.exe ha sido enviada a VirusTotal.com con los siguientes resultados.

Authentium 4.93.8 10.23.2006 could be a corrupted executable file

CAT-QuickHeal 8.00 10.20.2006 (Suspicious) – DNAScan

Fortinet 2.82.0.0 10.23.2006 suspicious

NOD32v2 1.1825 10.22.2006 probably unknown NewHeur_PE virus

Panda 9.0.0.4 10.22.2006 Suspicious file

Insistimos en que el experimento en sí no es peligroso, pero es normal que algunos antivirus lo detecten. Si el archivo descargado desde la página de Arkon (de nuevo un inofensivo archivo llamado f.exe) y ejecutado sin avisar fuese cambiado por otro, sí que podría tomarse como vehículo de infección. Además de que tiny3.exe intenta descargar y ejecutar algo de forma transparente, lo que ya de por sí es sospechoso si no conociésemos su procedencia.

El reto sigue abierto para quien pueda desafiar los límites y rebajar el ejecutable por debajo de los 300 bytes. Incluso se ha creado una lista para discutir sobre el tema: http://whitestar.linuxbox.org/mailman/listinfo/code-crunchers