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]:~$ ./Android-Hacking

Divertido, interesante y a la moda, nada más que agregar :D

Reversing de aplicaciones para Android

reversing_android.jpg

Cuando hace 40 grados de calor uno puede meterse a su piscina... o bien, ir al mar, río, lago, laguna, charco de agua, pero cuando no se tiene NADA de eso cerca, entonces... no queda otra que encerrarse en la habitación con el aire acondicionado y ver qué se puede romper con tal de despilfarrar un poco la bronca DE QUE ESTÁN TODOS EN LA PLAYA MENOS YO. :P

Bueno, ya saben que el reversing me apasiona y más aún si lo uno con una plataforma en la cual me divierto mucho y hay tanto por descubrir como es Android. Las últimas semanas estuve haciendo un research relacionado con esto y encontré algunas herramientas muy útiles que todavía son poco conocidas y por ese motivo es que se las vengo a compartir.

Si a algún lector le gusta el reversing de aplicaciones para Android, posiblemente en lo primero que piense al hablar de esto sea en la suite dex2jar. Sabemos que las aplicaciones para Android se empacan en un archivo en formato zip con extensión .apk. Si lo extraemos, encontraremos la carpeta de recursos de la aplicación, el AndroidManifest.xml y el archivo classes.dex que es el ejecutable para Dalvik/Art y contiene el código java de la aplicación. Por si alguno se perdió cuando dije "Dalvik/Art" le informo -resumiendo- que son las máquinas virtuales de java que Android adaptó para su sistema. En las versiones 4.x.x e inferiores encontraremos Dalvik, y a partir de la versión 5.0 se utiliza Art.

Bien, existen numerosos tutoriales en internet de cómo ver el código de las aplicaciones Android usando las herramientas de la suite dex2jar. Por ejemplo, con el script d2j-dex2jar de dicha suite podemos convertir el archivo classes.dex a classes.jar y abrirlo con JD-GUI (u otro) para visualizar el código de las clases java. También existen infinidad de tutoriales para editar el archivo AndroidManifest.xml con la herramienta apktool. Dicho archivo contiene, entre otras cosas, la lista de permisos que solicitará la aplicación al usuario al momento de instalarse.
Metiéndonos aún más en el reversing, podemos encontrar tutoriales para convertir el archivo classes.jar a código jasmin o smali y poder editar el contenido de las clases. Logramos esto utilizando el script d2j-jar2jasmin o d2j-jar2smali de dex2jar. Resulta muy útil e interesante poder hacer esto, fácilmente lograremos modificar el comportamiento de una aplicación e incluso podemos "embeber" una app dentro de otra... *inserte ideas maliciosas aquí*.

Bueno, como decía, la suite dex2jar junto a apktool son herramientas ya súper conocidas -por eso no entré en detalles- y muy prácticas para el reversing de aplicaciones Android ya que con pocos comandos podemos lograr mucho. Es por eso que seguramente todos pensamos en estas herramientas si tenemos que hacer, por ejemplo, un análisis estático de malware para Android. Pero la realidad es que si el asunto se vuelve cotidiano, pasa a ser algo tedioso tener que andar decompilando los .dex/.jar utilizando los distintos scripts de dex2jar y luego no olvidar utilizar apktool para editar el AndroidManifest.xml ya que la suite anteriormente mencionada no lo decompila (y es necesario). Finalmente volver a compilar todo y reemplazar el nuevo classes.dex y AndroidManifest.xml con algunos comandos de la aplicación zip. Por supuesto no vayamos a olvidar después de todo utilizar el script d2j-apk-sign para el certificado de la aplicación sino Android no la instalará y todo habrá sido en vano :P.

Lo sé, tampoco es para tanto, pero en el camino de estar haciendo esto una y otra vez descubrí que hay herramientas todavía poco conocidas que implementaron todas estas tools en un mismo entorno de trabajo, facilitando aún más las cosas... he aquí el motivo de este post, y paso a presentárselas:

APKStudio

Incorpora dex2jar y apktool, entre otras herramientas necesarias para poder hacer todos los pasos anteriores con tan solo algunos clicks en una intuitiva interfaz gráfica hecha con Qt. Se puede descargar de aquí y para compilarla recomiendo seguir el paso a paso de esta guía: https://github.com/vaibhavpandeyvpz/apkstudio/wiki/Building.
Al momento de compilar es importante asegurarse que Qt está usando por default la versión 5, sino nos encontraremos con un error de QRegularExpression (ver video al final para más info).

Una vez compilada correctamente, podemos abrir un archivo .apk y sin más empezar a editar el código de sus clases java (en smali), las directivas del AndroidManifest.xml y sus recursos.



Finalizadas las modificaciones, tenemos en el menú de la herramienta, todas las opciones necesarias para recompilar la aplicación, firmarla e incluso instalarla a través de adb en el dispositivo que tengamos conectado o emulado. ¡Bien cómodo! ;)


ByteCode Viewer

Al igual que APKStudio, esta herramienta también incorpora dex2jar y apktool, de hecho nos permite hacer prácticamente lo mismo. Podemos editar el código de las clases java (en java o smali), el AndroidManifest.xml y los recursos con la misma facilidad. Quizás la mayor diferencia entre Bytecode Viewer y APKStudio sea que la primera posee más opciones al momento de editar el código de la aplicación, mientras que esta última tiene más opciones para los pasos posteriores a la edición de código.

ByteCode Viewer puede descargarse aquí y no es necesario compilarla ya que está hecha en java.



Les dejo a continuación un breve video en mi canal donde hablo sobre algunos problemas que se les podrían presentar al trabajar con estas herramientas y sus ventajas/desventajas: https://youtu.be/2au-wObdPJM.

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

Fecha: 07/02/2016

¡Suscribite!

Aprendé más en...