miércoles, 20 de enero de 2016

Descifrando (y manipulando) las bases de datos de MalwareBytes Anti-Malware

¡Saludos!


Edit: se han eliminado las referencias donde aparecía la cadena por esto =>  https://code.google.com/p/google-security-research/issues/detail?id=714

  El verano pasado, analizando un día el tráfico que generaba un dispositivo con Android, me percaté una de serie de peticiones que estaba realizando la aplicación de Malwarebytes AntiMalware. Estas peticiones se estaban realizando a través de HTTP, por lo que era fácil echando un ojo a simple vista ver de qué se trataba:


  Parecía que las bases de datos de firmas, dominios maliciosos, etc. las estaba actualizando a través de HTTP. El programa realiza diferentes peticiones a los servidores donde se alojan las bases de datos, y el servidor le responde con diferentes archivos que contienen la versión más reciente, así como el MD5 y el tamaño. Viendo cómo es el mecanismo que sigue para descargar nuevas bases de datos, parecía bastante simple el hacer DNS spoofing y usurpar la identidad del servidor para servirle bases de datos manipuladas por nosotros (quizás para añadir o eliminar algún firma, por ejemplo).

  El problema viene cuando al analizar las bases de datos nos encontramos que se trata de un fichero cifrado, y que por tanto no vamos a poder manipular sin corromperlo. Así que nos toca tirar del combo dex2jar + jd-gui para leer el código y localizar las rutinas encargadas del cifrado. Por suerte el código no se encuentra ofuscado y su lectura se hace bastante sencilla. Analizándolo un poco vemos que lo que hace es descifrar la DB utilizando un algoritmo RC4 y después lo descomprime con GZIP:




   Bien, ya sólo nos quedaría localizar la clave con la que descifra/cifra la base de datos:


(Editado)

   Yep, el MD5 de la cadena hardcodeada "EDITADO". Teniendo ya la clave, es trivial proceder a descifrar las bases de datos. @LuisGF hizo este pequeño script para descifrar las DBs (hacer la inversa es sencillo :P). Teniendo ya una herramienta para cifrar/descifrar las bases de datos, y conocimiento de cual es el "protocolo" que sigue para descargarse las nuevas DBs, el resto es coser y cantar.

 Por otro lado, observé que el método que sigue en la aplicación de escritorio para Windows sigue el mismo procedimiento, asi que también me puse a reversear para ver si estaba usando la misma clave:

(EDITADO)

Yep, misma clave hardcodeada. Supongo que será común en el resto de productos, no lo he comprobado.

Podeis aprovechar esta información para extraer las firmas que ya vienen, o para tunear con las vuestras propias :P



Byt3z!







5 0verl0ad Labs: Descifrando (y manipulando) las bases de datos de MalwareBytes Anti-Malware ¡Saludos! Edit: se han eliminado las referencias donde aparecía la cadena por esto =>  https:/...
< >