Vamos a ver algunos ejemplos de controles que se llevan a cabo en un
Pentesting de Aplicaciones en Android. Lo más importante en un proceso de auditoría será el hacer uso de una metodología, de tal forma que podamos llevar a cabo una serie de pasos de manera ordenada.
Os propongo que hagamos uso de la metodología OWASP, concretamente en su apartado de
OWASP Mobile Security Project (https://www.owasp.org/index.php/OWASP_Mobile_Security_Project) podemos encontrarnos con muchos recursos:
herramientas, guía de desarrollo seguro, plantilla de controles, guía de testing de Apps... Centrándonos en esta última podemos dividir nuestra auditoría en tres partes:
recopilar información, análisis estático y análisis dinámico.
Para llevar a cabo las diferentes fases podemos encontrarnos muchas aplicaciones que automatizan nuestro trabajo, incluso que hacen la misma tarea de diferentes formas. Lo importante es tener un laboratorio con todas las herramientas funcionando, en este caso nosotros vamos a utilizar la distribución
Androl4b (https://github.com/sh4hin/Androl4b) como vimos el pasado Martes 23 de Febrero en la MasterClass con los alumnos de los cursos de Hacking Ético. Antes de nada tenemos que tener en cuenta que tipos de Apps podemos encontrarnos:
- Nativas: la App funciona de manera independiente sin depender de servidor externo, tenemos los datos en el terminal.
- Basadas en servicios Web: la App es un mero cliente que conecta a un servicio Web y solicita datos que después nos muestra.
- Híbridas: una combinación de las dos anteriores.
Hablábamos de metodología y de pasar una serie de controles a nuestras aplicaciones móviles, por tanto vamos a llevar un control que se da también en las auditorías Web, que no es otro que el de
análisis de las comunicaciones. Para llevar a cabo nuestra auditoría vamos a hacer uso de una aplicación de tipo híbrido que podemos encontrar dentro de la distribución Androl4b (InsecureBankv2 (https://github.com/dineshshetty/Android-InsecureBankv2)), la cual nos va a servir como entrenamiento para nuestros pentest.
Análisis de las ComunicacionesFase 1: Arrancando nuestro AVD en Androl4bAntes de nada haceros un apunte, puede que a la hora de descargar la distribución tengáis fallos de conexión, ya que le suele pasar a mucha gente, os recomiendo que uséis algún gestor de descarga para no tener problemas. Una vez descargada, abrimos nuestra máquina virtual de Androl4b (credenciales
andro:
androlab) y tenemos que arrancar el
Android Device Manager como vemos en la imagen, seleccionamos el dispositivo virtual (
AVD Android Virtual Device) que ya trae creado (
lab con Android 4.1.2) y
Start.
(http://hacking-etico.com/wp-content/uploads/2016/02/avd.jpg) (http://hacking-etico.com/wp-content/uploads/2016/02/avd.jpg)
Caso de querer hacer pasar las conexiones de nuestro dispositivo virtual a través de un proxy como Burp Suite, el cual ya incorpora dicha distribución, simplemente tenemos que
lanzar el AVD desde la línea de comandos con el parámetro
-http-proxy.
(http://hacking-etico.com/wp-content/uploads/2016/02/emulator-1.jpg) (http://hacking-etico.com/wp-content/uploads/2016/02/emulator-1.jpg)
También podemos configurar el proxy dentro del AVD siguiente la siguiente secuencia
Setting –
More... –
Mobile Networks –
Access Point Names –
T-Mobile US (Seleccionar el APN que aparezca) – aquí configuramos el
Proxy y
Port, en nuestro caso la IP 192.168.41.135 y el puerto 8080.
Fase 2: Nuestro App Vulnerable con conexión al BancoComo hemos comentado antes vamos a usar
InsecureBankv2, la cual es una aplicación híbrida que consta de un
cliente instalado en el terminal (en nuestro caso virtual) y un
servidor que vamos a arrancar desde el terminal del sistema Androl4b.
El Server: para el cual nos vamos a la ruta donde está situado y ejecutamos con python la parte servidora. Vemos como se arrancará nuestro servidor del Banco virtual escuchando peticiones en el puerto 8888.
(http://hacking-etico.com/wp-content/uploads/2016/02/server.jpg) (http://hacking-etico.com/wp-content/uploads/2016/02/server.jpg)
La App: desde el AVD ejecutamos la App (Insecure Bank v2) y nos vamos a menú preferencias para configurar la IP del Server y el puerto.
(http://hacking-etico.com/wp-content/uploads/2016/02/preferencestodo.jpg) (http://hacking-etico.com/wp-content/uploads/2016/02/preferencestodo.jpg)
Fase 3: Análisis del Tráfico con Burp SuiteYa tenemos todo preparado para analizar el tráfico de nuestra aplicación, pues tenemos todas las peticiones filtradas a través del proxy, de tal forma que vamos a poder ver todo el tráfico. Nos disponemos a poner nuestro usuario y contraseña y cual es nuestra sorpresa cuando
vemos que el logueo en nuestra App del banco se lleva a cabo en texto plano, sin usar ningún cifrado, lo cual la hace vulnerable a ataques de MiTM.
(http://hacking-etico.com/wp-content/uploads/2016/02/burp.jpg) (http://hacking-etico.com/wp-content/uploads/2016/02/burp.jpg)
Muchas veces los programadores añaden en el código información que les permite depurar el programa mientras está en fase de desarrollo, pero olvidan eliminar dicha información la cual puede ser útil para un atacante, llegándose a producir
fugas de la misma.
Fugas de InformaciónFase 1: El fichero AndroidManifest.xmlUno de los ficheros más importantes a la hora de llevar a cabo la auditoría de una App es su fichero de manifiesto (
AndroidManifest.xml), donde encontramos todas y cada unas de las funcionalidades de la App, así como los permisos y demás características. En este caso nos vamos a centrar en la característica
debuggable de la App, esto puede provocar una
fuga de información en su log la cual puede llegar a comprometer al sistema.
Obteniedo la APK: Lo primero será obtener la APK de la aplicación. Si no la encontramos en Internet no hay problema, para encontrarla simplemente
buscamos el paquete dentro del AVD mediante ADB (Android Debug Bridge (http://developer.android.com/intl/es/tools/help/adb.html)), una herramienta de línea de comandos que me permite comunicarme con el AVD en forma de terminal. Con esta herramienta también
descargaremos la APK como vemos en la siguiente imagen.
(http://hacking-etico.com/wp-content/uploads/2016/02/pm.jpg) (http://hacking-etico.com/wp-content/uploads/2016/02/pm.jpg)
Reversing a la APK: Lo siguiente será hacer un reversing a la APK con la herramienta APKTool (http://ibotpeaches.github.io/Apktool/), mediante la cual
obtenemos los ficheros y el código fuente de la aplicación, entre ellos el
AndroidManifest.xml.
(http://hacking-etico.com/wp-content/uploads/2016/02/reversing.jpg) (http://hacking-etico.com/wp-content/uploads/2016/02/reversing.jpg)
Dentro de los fichero obtenidos abrimos el fichero
AndroidManifest.xml y
nos fijamos en la propiedad debuggable de la aplicación. Si está a verdadero estamos frente a un fallo de los programadores el cual va a provocar fugas de información.
(http://hacking-etico.com/wp-content/uploads/2016/02/debug.jpg) (http://hacking-etico.com/wp-content/uploads/2016/02/debug.jpg)
Fase 2: Analizando el log con PidCatComo hemos visto tenemos la aplicación en modo depuración, lo cual nos va a dar mucha información a través del log del sistema. Para ello con simplemente usar
adb logcat podríamos ver mucha información. En este caso nosotros vamos a
ver el log mediante un script en python (pidcat.py (https://github.com/JakeWharton/pidcat)) que nos va a enriquecer el log con colores para que sea más fácil la búsqueda de información. En la siguiente imagen vemos como e
n el log quedaron registradas tanto las credenciales de un usuario (jack:Jack@123$) como
una transacción bancaria por valor de 1000$.
(http://hacking-etico.com/wp-content/uploads/2016/02/login.jpg) (http://hacking-etico.com/wp-content/uploads/2016/02/login.jpg)
Fuente: hacking-etico.com
Hemos visto hasta aquí un par de fallos de seguridad que puede tener cualquier aplicación móvil, pero existen muchos otros fallos como podemos ver en el
OWASP Top 10 Mobile Risks. Espero que os haya resultado interesante y más adelante iremos viendo otros fallos de seguridad interesantes en Apps de Android.
Muy muy bueno.
Un saludo!
Ha sido mas que interesante, un gran aporte. Me venia bien algo asi ya que justo en aplicaciones android ando un poco verde :-S graciaas