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

Drozer: Testeando la seguridad de aplicaciones Android

drozer.png

"¿Drozer?" "¿he?!" "¿¿Cómo se escribe??" fueron las respuestas que obtuve cuando entre colegas mencioné a este framework, desarrollado por MWR InfoSecurity, que a mi gusto es MUY bueno y sirve para testear la seguridad de aplicaciones Android.

La seguridad en dispositivos y aplicaciones Android o "Android Hacking" es algo que me gusta mucho, incluso desarrollar aplicaciones para este sistema me resulta entretenido (aunque Java esté lejos de ser mi lenguaje preferido :p). Mi idea es escribir algunas notas sobre los test que podemos realizar para medir la seguridad de una app Android. Me parece esencial empezar explicando cómo utilizar Drozer, ya que es un framework que nos ayudará mucho a la hora de testear vulnerabilidades de fuga de información, inyección SQL en aplicaciones y content providers, y un largo etcétera que me tocará explicar en cada nota :O. Sin más preámbulo, vamos a lo entretenido.

Paso 1: armar el laboratorio. Necesitamos: Drozer, obviamente Java y el Android SDK.
Nota existencial: Si utilizan un Linux que no es Debian/Ubuntu, como es mi caso que uso OpenSUSE, tendrán que descargar la opción .egg de Drozer, lean las instrucciones de instalación en el readme para no tener pérdida de tiempo con problemas de dependencias ;)
Bien, por último, para realizar los test necesitamos un dispositivo Android (no es necesario que esté rooteado), podemos usar nuestro propio teléfono Android o alguno emulado, yo uso el emulador: Genymotion.

Es necesario que instalemos un agente de Drozer (un APK) en el dispositivo Android donde vayamos a testear las aplicaciones, dicho APK se lo pueden descargar desde la misma página del framework, precisamente aquí. La instalación del mismo pueden hacerla desde el adb (que obtuvieron al descargar el Android SDK):



Una vez que tenemos el agente de Drozer ejecutándose en el dispositivo de prueba, debemos conectar nuestro equipo con el mismo. Para eso ejecutamos: adb forward tcp:31415 tcp:31415 y en el Android abrimos la aplicacicón de Drozer y presionamos el boton "off" para que se ponga en On (Si, al revés xD).



Seguido a esto ejecutamos el comando drozer console connect:



y obtenemos nuestra ansiada terminal dz>:



Drozer está compuesto por módulos que sirven para obtener información y testear diferentes cosas. Podemos ejecutar el comando list para ver una lista de los módulos disponibles. Nos estaría faltando algo para testear... mmm bueno, podemos usar Sieve, la aplicación de prueba que nos regala Drozer para jugar, la descargamos desde aquí. Es un "Password Manager" utilicen adb para instalarla en el dispositivo de prueba y creen algunas cuentas :).



Cada vez que quieran ver la contraseña de alguna cuenta tendrían que entrar a la aplicación y poner el PIN que les solicitó cuando la instalaron. Es como un KeePass. Sin ese PIN no podrán ver el listado de sus cuentas/contraseñas.... supuestamente...

Vamos a utilizar el modulo app.package.list de Drozer, con el parámetro -f sieve para encontrar el nombre del paquete de la aplicación Sieve:



Con este dato, podemos usar el modulo app.package.info para obtener información de com.mwr.example.sieve:



Si bien estos datos están buenos, para obtener posibles vectores de ataque en la aplicación necesitamos saber algunas cosas más, por ejemplo qué activity(s) tiene y si además trae algún content provider, servicio, broadcast receiver, etc. (doy por hecho que si les gusta Android, entienden de qué hablo). Para obtener tal información haremos uso del modulo app.package.attacksurface:



Bien, podemos notar que hay 3 activities, para conocer sus nombres usaremos el modulo app.activity.info con el parámetro -a com.mwr.example.sieve:



Mmm... com.mwr.example.sieve.PWList aparenta ser el activity (o ventana) que contiene la lista de cuentas guardadas en la aplicación. No deberíamos poder ejecutarla sin antes ingresar el PIN secreto, de lo contrario estaríamos ante una fuga de información. Podemos sacarnos la duda utilizando el modulo app.activity.start ejecutándolo de la siguiente manera: run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList.
El resultado en nuestro dispositivo de prueba:



Fuga de información ;) accedimos a la ventana de contraseñas sin ingresar previamente la clave maestra :).

Bien, como dije al principio de la nota, Drozer es un framework potente y nos permite realizar muchos test diferentes para medir la seguridad de la aplicación. Por otro lado tiene otras funcionalidades, como para ejecutarse remotamente o generar exploits con payloads bastante interesantes, para explotar vulnerabilidades ya conocidas de Android. Espero que esta nota les haya servido de introducción a la herramienta, la utilizaremos en la próxima cuando veamos inyección SQL en content providers de Apps Android ;)

Les dejo un video hecho por mi con todos los pasos de esta nota: http://youtu.be/Ed7-4xTQE6s.

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

Fecha: 02/08/2015

¡Suscribite!

Aprendé más en...