AV análisis, detección/evasión by Turka

Iniciado por Turka, Enero 17, 2015, 03:39:57 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Enero 17, 2015, 03:39:57 AM Ultima modificación: Enero 17, 2015, 06:47:06 PM por Turka
Hola :)

Wo, hace mucho no escribo algo para un foro, pero bueno, acá vamos.....

Dentro de las ramas de seguridad informatica en las que estoy, el analisis de malware es como mi hobbie, en realidad, mi hobbie es bypassear antivirus xD no porque use malware, no estoy a favor del uso de los mismos, pero me divierte hacer una especie de "reversing" a las soluciones antimalware y lograr evadir sus protecciones. Así lo he logrado con diferentes malware, payloads de metasploit, etc.

Respecto a esto quiero compartirles algunas cosas que son parte de mis investigaciones, el motivo esta vez es que veo mucha gente que postea crypters que los programa o modifica, arduo trabajo que recuerdo haber hecho en mis inicios xD, pero hoy en día hay cosas que cambiaron y debemos saber....

Antes los antivirus contaban con una sola proteccion, basada en firmas, conocida como reactiva. Que en muy resumidas cuentas (ya que no tengo ganas de escribir tanta teoria): una muestra de cada malware llega a los laboratorios de los antivirus, los analistas buscan una pequeña parte de ese malware que sea sencible dentro de su codigo, es decir, que si se llegara a modificar el malware deje de funcionar (al menos deberia ser asi aunque a veces no pasa :p) y entonces marcan esa parte como firma para ese malware. A partir de ahí, cuando la base de datos de firmas de los usuarios se actualiza, el AV comienza a detectar ese codigo malicioso.

Entonces, existen numerosos métodos para acorralar esa firma, modificarla, evitar que el .exe se rompa, etc etc. Uno de los métodos mas sencillos de todos (si no es el mas sencillo xD) es cifrar el malware utilizando un crypter. ¿Que pasa cuando se cifra? todo el código cambia incluyendo la firma, entonces el antivirus deja de detectar ese malware.

Estas técnicas siguen funcionando para evadir la proteccion reactiva, ya que la misma no cambió su funcionamiento, peeero, las compañías de AV no son TAN estúpidas xD por lo tanto implementaron otra protección para complementar a la reactiva, que se llama: Proactiva.

Esta "nueva" protección hace que indetectar un malware ya no sea tan facil como simplemente utilizar un crypter fud. ¿Porqué? veamos cómo funciona...

Se basa en heuristica, tiene algoritmos heuristicos que son en resumidas cuentas aquellos comportamientos que convierten a un ejecutable en potencial sospechoso de malware. Así es, la proactiva no tiene firmas, sino que analiza el comportamiento del .exe.

Existen tres tipos de heuristicas: genérica, pasiva y activa. La primera busca similitudes entre un malware que ya ha pasado por el laboratorio de la compañía y el ejecutable a analizar, si hay demasiadas coincidencias saltará el alerta. La pasiva explora el código del .exe tratando de determinar que acciones realizará y con ello darse cuenta si se trata de un malware o no. La activa, es el sandbox, una caja de arena que viene a ser un entorno virtualizado donde se ejecuta el malware y el AV puede realmente saber todo lo que el mismo va a hacer.

Obviamente esa última heuristica es la mas difícil de evadir, y la tienen implementada todos los AV mas populares.

Entonces, a lo que vamos con todo esto, es que hoy en día por mas que cifremos un malware y logremos evadir la proteccion reactiva, el mismo ejecutará igualmente las acciones tipicas de un malware y será detectado por la segunda protección del AV: la proactiva.

Para respaldar un poco tanta teoría, me arme un mini laboratorio y utilize el último crypter fud posteado en el foro.

En el mismo post podemos ver el resultado del scan online y efectivamente es un crypter que evade la reactiva de los antivirus. Los escaners online muestran el resultado de la protección reactiva y es lógico que sea así ya que para mostrar el resultado de la proteccion en tiempo real se deberia contar con una maquina para cada AV con todas sus funciones activas y ejecutar ahi mismo el malware, pero eso no pasa xD.

Bien, en mi lab instale AVG Free con la configuracion por default (que cualquier usuario dejaría xD) donde vemos activa la protección en tiempo real (proactiva). Aquí dejo una captura:



Tome mi carpeta de malware  y cree servers funcionales con la configuracion MINIMA (para reducir comportamientos sospechosos) utilizando los siguientes troyanos: DarkComet, SpyNet 2.6 y uno mas que no me acuerdo xDD

Por supuesto el server asi nomas es archi mega ultra detectado hasta por aquellos AVs que no los conoce ni DIOS. Pero bueno, lo fuddie con el crypter y le hice un escaneo manual al .exe que es el mismo que hacen los AV onlines, el resultado fue este:



:) pero, al ejecutar el malware con el antivirus instalado y con sus funcionalidades a pleno, el resultado cambia:



Con otro troyano:



y bueno finalmente no se logro infectar con ninguno de los troyanos. Resultado esperado, al menos para mi, esto lo he probado junto a otros analistas hace como 2 años, solo que recien ahora me digne a escribir algo al respecto ya que no veo alguien que lo haya hecho, y de paso hice unos labs mas actuales.

¿Que podemos concluir? Al menos a mi me gustaría concluir que hay que innovar en nuevos códigos, en nuevas técnicas de evasión teniendo en cuenta como funciona esta nueva protección. Los crypter es algo que se utiliza hace mucho y los AV ya los tienen muy cocinados, de hecho, el que el exe este todo cifrado hace que el AV ya lo mire con sospechas  ::)

Me gustaría que compartan su opinión sobre esto, si creen que me equivoco diganme en qué y porqué. Compartan su pelea contra la proactiva, sus técnicas :) yo tengo las mías, que de momento me las guardo para un futuro post.

Un abrazo :)
Turka

Me gusta bastante este tipo de artículos, resulta que no se trata de un tutorial ni de una herramienta, sino de una investigación que da muchas luces para quienes están interesados en el tema. Yo también suelo hacer este tipo de pesquisas pero nunca termino publicándolas por el hecho de que a simple vista no se aplican a nada.

Si bien es algo que ya conocía, coincido con el hecho de que hay que empezar a innovar en la forma de indetectar malware. Así como Themida tuvo sus tiempos mozos y luego murió, lo mismo sucederá con los crypters y hay que adelantarse a ese suceso.

¡Saludos!

El sistema de firmas sigue funcionando a la perfeccion y puede detectar malware empaquetado por crypters generericos, es decir, esas porquerias en vb6 que regalan en cualquier foro.
Como funciona si el codigo fue totalmente empaquetado?
Veamos primero como funciona un crypter generico de esos que hacen en vb6:
Crean un proceso legitimo suspendido y cambian la imagen de ese proceso por la imagen del archivo que fue "encriptado" y luego ejecutan el proceso.
Esto funcionaba a la perfeccion el año 2008, lo que pasa es que ahora, cualquier antivirus mas o menos bueno hookea las APIs WriteProcessMemory en ring0 y por mas bajo nivel que se llame a esta api en ring3, el antivirus va a obtener el codigo completo del ejecutable "encriptado" y lo analiza como si nunca ubiera sido empaquetado. Otro metodo es el analisis de la memoria buscando modulos, entonces lo que fue empaquetado se encuentra facilmente en memoria.
Cualquier antivirus decente puede hacer esto.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Me gusta bastante este tipo de artículos, resulta que no se trata de un tutorial ni de una herramienta, sino de una investigación que da muchas luces para quienes están interesados en el tema. Yo también suelo hacer este tipo de pesquisas pero nunca termino publicándolas por el hecho de que a simple vista no se aplican a nada.

Si bien es algo que ya conocía, coincido con el hecho de que hay que empezar a innovar en la forma de indetectar malware. Así como Themida tuvo sus tiempos mozos y luego murió, lo mismo sucederá con los crypters y hay que adelantarse a ese suceso.

¡Saludos!

Gracias Azav! no dudes en publicar tus investigaciones si aportan a mejorar algún aspecto. :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
El sistema de firmas sigue funcionando a la perfeccion y puede detectar malware empaquetado por crypters generericos, es decir, esas porquerias en vb6 que regalan en cualquier foro.
Como funciona si el codigo fue totalmente empaquetado?
Veamos primero como funciona un crypter generico de esos que hacen en vb6:
Crean un proceso legitimo suspendido y cambian la imagen de ese proceso por la imagen del archivo que fue "encriptado" y luego ejecutan el proceso.
Esto funcionaba a la perfeccion el año 2008, lo que pasa es que ahora, cualquier antivirus mas o menos bueno hookea las APIs WriteProcessMemory en ring0 y por mas bajo nivel que se llame a esta api en ring3, el antivirus va a obtener el codigo completo del ejecutable "encriptado" y lo analiza como si nunca ubiera sido empaquetado. Otro metodo es el analisis de la memoria buscando modulos, entonces lo que fue empaquetado se encuentra facilmente en memoria.
Cualquier antivirus decente puede hacer esto.

Ajam, por eso justamente esta publicación.  ;)