Se me cayo un exploit

SEGURIDAD INFORMÁTICA

HACKING . PROGRAMACIÓN . ELECTRÓNICA . GNU/LINUX

Se me cayó un exploit en tu server.... por @UnaPibaGeek

[email protected]:~# ./Ingeniería-Inversa

Ingeniería inversa de TODO! Necesito saber cómo están hechas las cosas :)

Reversing a binarios de AutoIt

autoit_portada_malware.JPG

Estaba mirando el partido de Boca Juniors - River Plate, el superclásico del fútbol en mi país, me encanta el fútbol (soy de Boca) pero la verdad es que los superclásicos ya son una mezcla de fútbol con boxeo en la cancha, cansa ver que siempre terminan a los golpes. Así que me vine para acá a leer un poco y escribir una nueva nota que ya tenía en mente de hace unos días :)

En una de las demos que hago en mi charla de Threat not found!, muestro un keylogger indetectable programado en AutoIt. Cuando le pregunto a la gente del auditorio si conocen este lenguaje, el 95% de las personas allí presentes me dice que no. Bueno, la realidad es que aunque el lenguaje lleva muchos años, es poco muy conocido, pero no para los desarrolladores de malware ;)

Todos los que estamos metidos en el fascinante mundo del malware, sabemos que la mayoría de ellos están dirigidos a atacar sistemas Windows y son en su mayoría programados en Visual Basic o .NET. ¿Por qué los desarrolladores de malware eligen estos lenguajes? La respuesta es muy simple: permiten controlar los eventos de Windows con gran facilidad, en pocas líneas de código. O sea que tomar el control de Windows y brindarle información sobre el sistema al atacante, será más fácil que hacer lo mismo utilizando otro lenguaje como C/C++.

Ahora bien, con el pasar de los años las librerías/APIs de Visual Basic comúnmente necesarias y utilizadas por los malware, comenzaron a ser muy detectadas por los antivirus. Al día de hoy ocultar esas llamadas externas hechas por VB y engañar a los AV es más costoso que hace unos años atrás (igual se sigue pudiendo hacer xD) pero al margen, los desarrolladores de malware empezaron a buscar otros horizontes, es ahí donde aparece AutoIt.



Como bien define Wikipedia: "AutoIt es un lenguaje freeware multipropósito y de automatización para Microsoft Windows". Se lo conoce también como "Visual Basic Killer", de hecho, su sintaxis es idéntica a Basic y también permite controlar los eventos de Windows. Así que aquí tenemos el primer punto por el cual el desarrollo de malware en AutoIt ha comenzado a ser tendencia desde hace un largo tiempo: programar malware para Windows en AutoIt es igual de fácil que hacerlo en Visual Basic... y hasta me atrevería a decir, que algunas cosas se hacen aún en menos líneas de código.

Pero las ventajas de AutoIt para el desarrollo de malware no terminan ahí, un ejecutable hecho en este lenguaje es compatible con todas las versiones de Windows y arquitecturas. Es decir, que el programa se ejecutará perfectamente tanto en Windows 98 como en Windows 10 y esto es un enorme atractivo para los desarrollares de malware. Pero, analicemos un poco esta cuestión, ¿Cómo hace AutoIt para ser compatible con todas las versiones de Windows? Si tomamos un binario hecho en este lenguaje y nos decidimos a reversear un poco :p lo primero que puede llamarnos la atención antes de comenzar es el peso del ejecutable. Hay una diferencia importante entre el peso de un mismo código compilado en VB y en AutoIt, el de éste último podría pesar hasta 10 veces más.

Haciendo un poco de reversing notaremos que este hecho está completamente vínculado a su compatibilidad con todas las versiones de Windows, y se debe a que los binarios en AutoIt cargan consigo mismo todas las APIs necesarias para su correcta ejecución en todas las plataformas. Comparemos la Import Table de un binario hecho en Visual Basic 6.0 (el cual carga de forma dinámica las APIs que utilizará a través de llamadas externas) y la de un binario hecho en AutoIt que ya incluye todas las APIs y no realizará ninguna llamada externa:

Import Table de binario en VB 6.0:



Import Table de binario en AutoIt:



¿Se aprecia la diferencia no? xD he aquí el motivo de la gran diferencia de peso entre estos binarios y la respuesta a la capacidad de AutoIt de ser compatible con todas las versiones de Windows.

Ahora bien, las ventajas de programar en AutoIt para los desarrolladores de malware no terminan aquí. Para las soluciones antivirus es difícil detectar malware hecho en este lenguaje, a menos que lo hayan analizado previamente en su laboratorio y el ejemplar posea una firma. ¿Por qué? ¿Qué tiene AutoIt que dificulta la detección proactiva de malware? Bueno... si alguno presenció mi charla de Threat not found! allí explico que una de las principales cosas que revisa la heurística del antivirus son las llamadas externas que realiza el ejecutable. De este modo puede determinar qué es lo que el ejecutable pretende hacer en el sistema y con ello, comparar si coincide con alguna regla de la heurística que indica el comportamiento de un potencial malware.

¡¡AutoIt no hace llamadas externas!! xD ya lo explicamos más arriba, no necesita realizar llamadas externas porque ya tiene todo lo que necesita consigo mismo. Entonces, para la heurística del antivirus es más difícil determinar el comportamiento del ejecutable, por ende la detección proactiva (aquella que pretende protegernos de malware nuevo, que no posee firma) queda un poco fuera de juego.

Bueno, esos son los principales motivos por los cuales los desarrolladores de malware llevan bastante tiempo eligiendo AutoIt como lenguaje. Se los quería contar porque me aburrí de ver el Boca - River que encima terminó 0 a 0 -.-

¿Te cansaste de leer? Tomate un café (share):

Fecha: 24/04/2016

¡Suscribite!

Aprendé más en...