Ir al contenido principal

Hydra android malware (Part 2)

CTF WriteUp sencillos con Radare2

Para comenzar el blog y así repasar yo de paso, ahora que llevo un tiempo sin hacer ningún tipo de reto en reversing voy a comenzar con algunos CTF que ya se han cerrado y que intentaré resolverlos haciendo uso de Radare2 para los retos que estén sobre la plataforma Linux y IDA para los resto sobre la plataforma Windows.

Iré comenzando de dificultad baja y poco a poco subiremos la dificultad conforme vaya sintiéndome mas cómodo yo con las herramientas utilizadas.

El  primer reto es un de Sharif_University_CTF_2016 y es llamado dMd  cuyo binario os podéis descargar de el Github que os dejo a continuación https://github.com/N4NU/Reversing-Challenges-List/tree/master/Baby/Sharif_University_CTF_2016_dMd.

Los voy a encarar de la forma mas sencilla posible para poder seguir un patrón:

1) Mirar el tipo de binario que es:



Tras ver el tipo de binario que es, seguidamente lo que hacemos es intentar sacar información del binario como algunas "Strings interesantes" y la sección en la que se encuentran (a veces nos puede ser util):





Vemos que las cadenas del binario, no nos dan mucha información, así que vamos a desensamblar el binario y echarle un "vistazo" rápido a la función principal (main) para ver si vemos algo que nos dé algo de luz.

Lo hacemos arrancando ya Radare2 con el binario a analizar, y seguidamente analizando el binario con el comando aaa y mostrando el desensamblado de la función sym.main  con el comando pdf @ sym.main. Si quisiéramos ver algunas lineas de desensamblado únicamente porque la función fuera muy grande podemos usar el comando pd 20 @sym.main  para ver las primeras 20 lineas.



2)Una vez tenemos el código desensamblado, a mi me gustar usar la parte visual que nos ofrece Radare2 (parecido a IDA) salvando muchísimo las diferencias y ver que cosas están pasando dentro de la función... para ello usamos el comando "VV" dentro de la consola de Radare2. Primero lo que hago es buscar la dirección donde empieza la función main con el comando "s @ sym.main"  y luego me muevo a esa posición con el comando "s main"  y ya nos vamos a la parte visual.

Vemos dentro de la parte desensamblada una llamada a call sym.md5_std::string y posteriormente empiezan comparaciones como mostramos en la siguiente imagen.





Comienzan comparando si el valor es un "780......"  obteniendo al final de todas las comparaciones una cadena con una estructura muy similar a MD5: 780438d5b6e29db0898bc4f0225935c0 .

Si alguna de las comparaciones no es válida, el programa muestra el mensaje de key no correcta. Por lo tanto aplicando ya un poco de lógica podemos comprobar extraer cual sería la key correcta, NO?.

Suponiendo que es una string lo que tenemos que introducir y que tras pasar por la función call sym.md5_std::string  de lugar a "780438d5b6e29db0898bc4f0225935c0" ...   haciendo uso de MD5 online decrypt: https://www.md5online.org/md5-decrypt.html


                                 



Por lo tanto nuestra solución de este reto sería "b781cbb29054db12f88f08c6e161c199"





Un saludo

Krilin4











Comentarios

Entradas populares de este blog

Hydra android malware (Part 2)

Buenas de nuevo, En esta segunda parte del tutorial de Hydra , vamos a coger una muestra mas reciente, y vamos a ahondar en las características técnicas de la muestra. Información de la muestra y Herramientas:  -) Muestra : 2fc050a06dab9dbc019dfdd768580ebe66f178a210fda23a02ce005742c5e262 -) JADX : Para poder leer el codigo Java/kotlin decompilado de la aplicación. -) Apktool : Para hacer el dissasembler de la APK, y poder parcherla y reconstruirla.  -) Genymotion : Para emular la aplicación -) Burp Suite: para capturar las comunicaciones -) Frida : Para TODO :) Análisis Estático Antes de comenzar con el archivo AndroidManifest.xml, como explicamos en la entrada anterior, vamos a introducir un poco de teoría de como es cargada y ejecutada una aplicación sobre el sistema operativo Android. Echamos un vistazo al androidManifest.xml : Al igual que en la entrada anterior, hay referencias a actividades  que no se encuentran presentes en el código de la aplicación al abrirlo con la herramien

Radare2- Set de comandos básicos

Buenas a todos y Feliz navidad lo primero. Entre mantecado y mantecado, y motivado por el curso de Ricardo Narvaja (CrackLatinos), me he decidido a publicar una entrada que es mas para mí que para el resto. Pero supongo que puede ser útil para otras personas, de ahí que lo ponga lo mas bonito posible en la web. Vamos a ver un "cheatsheet" con comandos útiles de Radare2 y su funcionalidad, todo esto puede extraerse del --help de las herramientas, pero para los que como yo le gusta ir al grano y ahorrar el mayor tiempo posible, tienen esta entrada. RABIN2: rabin2 -I file_.exe --> Nos proporciona información básica del binario, como arquitectura, y las protecciones del binario como (nx,dep,aslr...) rabin2 -i file_.exe --> Nos muestra los imports del binario. rabin2 -e file_.exe --> Dirección del Entry point. (Dirección virtual y raw offset en el executable) rabin2 -zz file_.exe --> Muestra las strings rabin2 -g file_.exe --> Este comando nos muestr

Hydra Android Malware (Part 1)

 Buenos Días, Hoy escribiré una entrada de análisis de malware en Android después de un tiempo sin escribir por aquí. La idea era coger de nuevo soltura con las herramientas open-source que hay para el análisis de aplicaciones android. Estuve leyendo información sobre alguna familias y me tope con Hydra (siguen apareciendo casos activos en Android (Twitter)) y me puse con ella. Arranqué con la lectura de este blog : Es el "padre nuestro" de la primera parte de nuestro tutorial, lo único que voy a hacer yo aquí en la primera parte es "puntualizar" algunos problemas que me he encontrado durante el análisis al seguir su tutorial. Información de la muestra y Herramientas:  -) Muestra : 46aeb04f2f03ebe7c716fc6e58a5dea763cd9b00eb7a466d10a0744f50a7368f -) JADX : Para poder leer el codigo Java/kotlin decompilado de la aplicación. -) Apktool : Para hacer el dissasembler de la APK, y poder parcherla y reconstruirla.  -) Ghidra : Decompilado de librerias Nativas. -) GEF : Debu