jueves, mayo 24, 2007

Morphing de Superman

Cuando vas a al límite es cuando se pueden producir errores, el exceso de trabajo hace que no puedas dedicar todo el tiempo del mundo en el repaso de los detallitos. Esto en las compañías antivirus/antimalware es un serio problema.

Cuando se recibe una muestra hay que analizarla y escoger una firma. La firma debe ser lo suficientemente bien elegida para que identifique de forma unívoca al malware y que además no sea fácilmente saltable. Por eso se pueden mirar desde varias partes del archivo, el análisis empaquetado o desempaquetado en máquinas virtuales, etc… Existen técnicas muy avanzadas en la detección de amenazas. El problema se produce cuando tienes más de 10.000 muestras de malware por día.

Si eliges una mala firma puede pasarte como le sucedió a McAfee que con una mala firma tuvo 7 páginas de falsos positivos e incluso firmo como virus el Excel. Éste no fue el primero ni el último caso y le ha pasado ya entre otros a Symantec, OneCare, Trend Micro, etc…

En virustotal reciben entre 15.000 y 20.000 muestras diarias lo que deja claro el volumen de estrés laboral que deben llevar las compañías para firmar las muestras.Las técnicas de evasión de las firmas de los antivirus suelen ser variadas. Desde el uso de ofuscadores de código como el Yoda Protector o las técnicas de morphing como el morphine, pasando por la siempre funcional de modificar el código en ensamblador o el código fuente, cambiando de orden instrucciones, metiendo instrucciones inútiles, etc.. hasta saltarse la firma.

Pero cuando la compañía de antivirus tiene mucho estrés y no puede analizar la muestra en profundidad busca una solución rápida y que garantice ningun (o prácticamente ningún si contamos con las colisiones)falso positivo. Y lo más rápido es firmarlo usando el hash del archivo. Claro, esto implica que con cambiar cualquier bit del fichero cambiamos el hash y ya no lo reconocería. Hagamos una prueba con el Patch (cliente de netbus 1.70). Este es un troyano de cuando estrenaban el coche fantástico. Lo subimos a VirusTotal y vemos quien lo detecta:

Resultados VirusTotal de Patch.exe

En los resultados se ve el hash del archivo y vemos que todos, menos 1, lo detectan como Virus. El que no lo detecte Sunbelt a lo mejor es porque tiene una política de borrado de firmas antiguas, pero vamos, que con lo divertido que es el Netbus debería tenerlo firmadito. Si miramos el código en hexádecimal vemos que tiene un mensaje de error en ASCII:

Vista Hexádecimal de Patch.exe

Vale, pues le cambiamos el mensaje y le ponemos este otro y lo guardamos como patch2.exe y lo subimos a Virustotal y vemos que se un par de motores que “lo conocían” ya no le conocen:

Vista Hexádecimal de Patch2.exe

Resultados VirusTotal de Patch2.exe

Esta técnica Sergio "pajarraco" de los Santos la bautizó como:

“Morphing de Superman, que cambia el caracolillo por unas gafas y un sombrero y ya no le conoce nadie“














Superman & Clark Kent

En el caso del patch solo había 2 motores que lo tenían firmados por hash, pero… ¿y las firmas de malware más moderno? Si lo hacemos con un exploit del año 2004, vemos que lo detectan todos menos 8. Los que no los detectan lo harán simplemente porque en su política no estará detectar hacking tools:

Resultados VirusTotal de epxloit lsass

Si le hacemos un “Morphing de Superman” vemos que ahora son 17 los motores que no lo detectan, es decir, 9 motores utilizaban hash para firmar esta herramienta.

Resultados VirusTotal de exploit lsass_superman

Por último, he pensado hacerlo con el hackerdefender, un rootkit de los más famosos, la versión 1.0. Primero lo detectan todos:

Resultados VirusTotal de hackerdefender100.exe

Con el “Morphing de Superman” hay tres que ya no lo detectan.

Resultados VirusTotal de hackerdefender100_superman.exe

Esto sólo es una curiosidad dentro de las técnicas de evasión de antivirus que utilizan los productores de malware hoy en día, por lo que queda de manifiesto que contar con el antivirus sigue siendo algo necesario, pero no suficiente.

Saludos malignos.

12 comentarios:

  1. Muy buenos los videos, en vuestra linea.

    Que vaya bien el evento de hoy, yo no puedo ir estoy a 10000km. aaarg!.

    Saludos.
    Miguel H.

    ResponderEliminar
  2. Qué fácil es meter un troyano con una de estas tácnicas!!Una curiosidad...¿el firewall de Vista o XP SP2 detecta la intrusión?, por curiosidad ;).

    Un saludo!!

    ResponderEliminar
  3. Enhorabuena por esta entrada, me encanta cuando me cuentan de manera tan simple la "chicha" de los temas. Muchas gracias.

    ResponderEliminar
  4. Jejeje hacer un "virus" indetectable (que se lo pregunten a los chicos de indetectables.net ) es realmente facil, el tema de las firmas buaaa es la historia interminable.

    COn los sistemas de heuristica e IDS pasa lo mismo. Usas 4 APIS y ZAS!!! tu programita es maligno xD
    Durante el verano 2006 mientras desarrolle un sistema para saltarme el IDS de Panda 2006/2007 me tope muchas cosas interesantes :P
    Tendria que escribir algo sobre esto.

    Saludos!!!

    @alex es distinta una intrusion que una conexion entrante xD todo depende.

    ResponderEliminar
  5. Ya, pero con Vista estamos a salvo de todo este malware, ¿no?.

    Dios mio, ¡no me digas que Vista sigue siendo vulnerable a un malware escrito hace 10 años o más!

    Por mi parte daba por supuesto que Vista ya no es vulnerable a estas cosas. ¿Estoy equivocado?

    ResponderEliminar
  6. @Anónimo, no de hecho yo ya estoy programando juguetitos especialmente pensados para vista, pena que tenga una mierda de tiempo libre xD.

    Vista esta mejor pero vamos...

    ResponderEliminar
  7. Deberían analizar el fichero partiendolo en trozos y hasheando cada uno individualmente. Si un 80% 90% de los hashes del fichero coninciden con un original podríamos tener un alto porcentaje de falsos positivos y mas seguridad contra los morphs estos.
    Como siempre, el coste va a depender de en cuantos paquetes dividamos el fichero, a mas paquetes mas seguridad pero mas tiempo de análisis.
    Creo que con una buena batería de pruebas enseguida sacarían un script para analizar eficientemente estas cosas.
    Eso si, meter en la bbdd todos los virus que ya existen igual es mas costoso, pero vamos ,que se puede hacer en horas de sueño.

    ResponderEliminar
  8. ese era yo, haré un analisis de que ha pasado... pero luego :P

    ResponderEliminar
  9. Muy Buena prueba

    ResponderEliminar
  10. La cosa no es tan asi como piensan, en tu primer ejemplo de cambiarle la cabezara MS-DOS,si lo haces, ya ese fichero deja de ser un PE valido por lo tanto queda corrupto y no se ejecutara, en este caso deja de tener sentido identificarlo.

    Tienen que estar claro las firmas se escogen en la seccion de codigo, nunca se escogen en la estructura de los ficheros, lo que si es valido es comprimirlo, ofuscarlo, codificarlo, si los antivirus no lo detectan es porque no implementan estas operaciones, siempren prueben con KAV son los mejores en este sentido.

    ResponderEliminar
  11. Hola Xavier,

    claro que puedes tocar el fichero... pero con cuidado. En el ejemplo que nosotros hacemos, solo tocamos valores ASCII y eso no impide su ejecución. Funciona perfectamente y siguen siendo funcionales los ficheros. En el estudio de las Ratas lo hicimos igual. Cuidado con las ratas

    ResponderEliminar