búsqueda de vulnerabilidades en aplicaciones de android [guadalajaracon 2013]

75
Pwneando aplicaciones Android ("Búsqueda de vulnerabilidades en aplicaciones Android") Paulino Calderón Pale (@calderpwn) [email protected] http://guadalajaracon.org GuadalajaraCON Búsqueda de vulnerabilidades en aplicaciones Android Paulino Calderon [email protected]

Upload: websec-mexico-sc

Post on 29-Nov-2014

2.521 views

Category:

Technology


2 download

DESCRIPTION

http://www.guadalajaracon.org/talleres/busqueda-de-vulnerabilidades-en-aplicaciones-moviles-android/ Con el incremento desmesurado de dispositivos móviles también crece nuestra preocupación por la seguridad de los usuarios que confiadamente usan aplicaciones de terceros sin ninguna precaución. En este taller los asistentes aprenderán a usar las herramientas necesarias para identificar las vulnerabilidades más comunes en aplicaciones Android. El taller abarcará desde la ingeniería inversa de las aplicaciones hasta el análisis de tráfico para la evaluación de servicios web involucrados.

TRANSCRIPT

Page 1: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Pwneando aplicaciones Android

("Búsqueda de vulnerabilidades en aplicaciones Android")

Paulino Calderón Pale (@calderpwn)[email protected]

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 2: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

● Websec México http://www.websec.mx

● Me gusta codear, pwnear y contribuir al software libre.

● Mi página personal eshttp://calderonpale.com

Acerca de mí

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 4: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Contenido del taller

1. Introducción a la arquitectura Android2. Formato APK3. Vulnerabilidades en aplicaciones Android4. Análisis de aplicaciones

a. Análisis estáticob. Análisis dinámico

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 5: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Prácticas del taller

● Extraer información importante de apks● Decompilar una aplicación● Análisis de código fuente● Detectar vulnerabilidades en almacenamiento inseguro● Hijacking de intents● Encontrar proveedores de contenido sin permisos de

lectura o escritura● Interceptar el tráfico de la aplicación● Interceptar tráfico SSL● Detectar vulnerabilidades en un proveedor de contenido● Explotar vulnerabilidades de inyección SQL

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 6: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Requisitos

● Cable de datos● Conexión a internet● VirtualBox

De preferencia tener rooteado el dispositivo para poder usar apps como apkextractor y droidproxy.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 7: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Herramientas

● adb:http://developer.android.com/sdk/index.html

● apktool: http://code.google.com/p/android-apktool/

● agnitio:http://sourceforge.net/projects/agnitiotool/

● mercury:https://github.com/mwrlabs/mercury

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 8: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Herramientas

● jad:http://www.varaneckas.com/jad/

● dex2jar:https://code.google.com/p/dex2jar/

● burp suite:http://portswigger.net/burp/download.html

● apkextractor:https://play.google.com/store/apps/details?

id=net.sylark.apkextractor

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 10: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Un vistazo al mercado AndroidSistema operativo distribuido en dispositivos:● Samsung● Huawei● Sony, HTC, LG, Lenovo, etc...

72.4% del mercado mundial en el tercer cuatrimestre del 2012 según Gartner.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 11: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Situación actual e impacto

● Usuarios confían plenamente en la seguridad de las aplicaciones móviles para llevar a cabo operaciones bancarias o conectarse a cuentas que contienen información personal.

● Desarrolladores todavía siguen haciendo aplicaciones con muy mala seguridad.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 12: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Muchas compañías mexicanas con aplicaciones Android

● Telcel● Bancomer● Banco Azteca● Soriana● Aeromexico● ¿Cuales conocen ustedes?

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 13: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Arquitectura Android

● Kernel Linux● Librería nativas● Dalvik● SDK● Aplicaciones

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 14: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Arquitectura Android

http://developer.android.com/guide/basics/what-is-android.html

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 15: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Modelo de seguridad

● UIDs y GIDs únicos para cada aplicación instalada en el sistema. Para intercomunicación se usan componentes.

● Permisos determinan las capacidades de intercomunicación de los componentes

● Aplicaciones son "self-signed".

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 16: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Modelo de seguridad

● Cada aplicación lista los permisos que requiere antes de ser instalada.

● Aplicaciones deben establecer que permisos van a necesitar.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 17: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

DALVIK

● Escrito especificamente para Android.● Optimizado para dispositivos con limitantes de

espacio y CPU.● Bytecode .dex ( Dalvik Executable ).● Un .class comprimido es normalmente más

grande que bytecode .dex DEScomprimido.

Más información sobre hacer ingeniería inversa a dalvik bytecode: http://www.slideshare.net/jserv/practice-of-android-reverse-engineering

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 18: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Modelo de aplicaciones Android

Formato de un contenedor APK ● Variante del formato JAR

Dentro del archivo APK encontramos:● META-INF● res● AndroidManifest.xml (Encodeado)● classes.dex● resources.arsc

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 20: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

AndroidManifest.xml

● Nombre del paquete Java● Versión del APK● Permisos y reglas de acceso● Actividades, servicios, proveedores de

contenido y receptores de anuncios● Listado de librerías

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 21: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

AndroidManifest.xml

Cosas que debemos analizar en el archivo AndroidManifest.xml:1. Declaraciones de intenciones (Intents),

servicios, actividades y proveedores de contenido

2. Permisos de componentes3. Flag de depuración4. Versión SDK

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 25: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

classes.dex

Código dalvik de la aplicación:● Se puede decompilar y parchar

Para obtener este archivo simplemente necesitamos extraerlo del apk.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 26: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Componentes1. Actividades ( "Activity" )Pantallas de la aplicación con interfaz gráfica.

2. Servicios ( "Services" )Corre en el fondo para operaciones largas o que no deben obstruir.

3. Receptor de mensajes ( "Broadcast receivers" )Responden a alertas o mensajes del sistema.

4. Proveedor de contenido ( "Content providers" )Maneja y comparte datos de una aplicación con otros componentes

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 27: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Intents

● Mensajero que llama a un componente como una actividad, servicio o receptor de mensajes y opcionalmente entrega información.

● Conectan a diferentes componentes cuando una aplicación es ejecutada.

● Son explícitos cuando especifican que actividad debe responder.

● Son implícitos cuando simplemente son declarados y el sistema decide que actividad usar.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 28: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Componentes

¿Por qué nos importan?Vectores de ataques a aplicaciones Android:

○ Intent hijacking○ Intent spoofing○ Sticky Broadcast tampering○ Broadcast hijacking

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 29: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Comunicación entre componentes

Los componentes dependen de la complejidad de la aplicación. Algunos eventos interesantes:● android.provider.Telephony.SMS_RECEIVED● android.intent.action._BOOT_COMPLETED● android.provider.Telephony.SMS_RECEIVED

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 30: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Más Intents

android.intent.action.ACTION_POWER_CONNECTEDandroid.intent.action.ACTION_POWER_DISCONNECTEDandroid.intent.action.ACTION_SHUTDOWNandroid.intent.action.BATTERY_CHANGEDandroid.intent.action.BATTERY_LOWandroid.intent.action.BATTERY_OKAYandroid.intent.action.BOOT_COMPLETEDandroid.intent.action.CONFIGURATION_CHANGEDandroid.intent.action.DEVICE_STORAGE_LOWandroid.intent.action.DEVICE_STORAGE_OK

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 33: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

2. Vulnerabilidades en aplicaciones Android● Hijacking y Spoofind de Intents● Sticky Broadcast tampering● Almacenamiento inseguro● Tráfico inseguro● SQL Injection● Privilegios excesivos

Además BoFs pueden encontrarse en librerías nativas.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 34: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Evaluación de vulnerabilidades

● Recolección de información: Definimos alcance y secciones a evaluar.● Análisis estático: Analizamos el código fuente/decompilado/ desensamblado.● Análisis dinámico: Ejecutamos la aplicación y observamos.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 35: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Análisis estático

Podemos hacer análisis estático a partir de:● Código fuente● Archivo APK

Algunas aplicaciones usan ProGuard:https://developer.android.com/tools/help/proguard.html

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 36: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Análisis de código fuente

● Siempre es buen punto de inicio listar todas las llamadas a funciones que podrían ser usadas inseguramente como:○ putString○ setJavaScriptEnabled(true)○ getExternalStorageDirectory()○ getBundleExtra()

Afortunadamente podemos ayudarnos de herramientas ( grep FTW ).

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 37: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

ScriptDroid

Script muy sencillo para detectar funciones peligrosas relacionadas con:● sharedPreferences● TapJacking ● Almacenamiento● Inyecciones● Algoritmos débiles● Tráfico inseguro● Flag de depuración● Y más...DESCARGA: http://t.co/d3uA1jd7

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 40: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Agnitio

Herramienta de análisis de código fuente que puede decompilar APKs y buscar llamadas a funciones peligrosas.

Descarga: http://sourceforge.net/projects/agnitiotool/

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 41: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Prácticas

Ejecuten la máquina virtual Windows y realiza las siguientes acciones:● Ejecuta ScriptDroid● Analiza una aplicación dentro de agnitio● Encuentra una vulnerabilidad de

almacenamiento inseguro en la aplicación InsecureBanking.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 42: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

PrácticasEn el escritorio de la máquina virtual esta:● Zipfile con ScriptDroid

ScriptDroid.zip● Instalador de Agnitio (x86)

/Agnitio x86/Install.exe● Muestra de output de ScriptDroid ejecutado contra InsecureBanking

/OUTPUT/● Código fuente de la app InsecureBanking

InsecureBank.zip● APKs para que jueguen:

/apks/

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 44: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Analizando APKs

Necesitamos decompilar la aplicación en caso de no tener el código fuente con:● apktool● dex2jar● jd-gui

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 45: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Extrayendo APKs de dispositivos

Varias formas de extraer el contenedor APK:● Usando apps como como apkextractor

(https://play.google.com/store/apps/details?id=net.sylark.apkextractor)

● Adb:$ adb pull data/app/mx.websec.mac2wepkey.hhg5xx-2.apk

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 46: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Decompilando APKs

Prácticas: ● Extraer recursos y AndroidManifest con

apktool.● Convierte bytecode dalvik a .class con d2j-

dex2jar.sh● Analiza bytecode de Java con jd-gui

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 47: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Decompilando APKs

Prácticas: ● Extraer recursos y AndroidManifest con

apktool.apktool d app.apk● Convierte bytecode dalvik a .class con d2j-

dex2jar.shd2j-dex2jar.sh classes.dex● Analiza bytecode de Java con jd-guijd-gui dex2jar.class

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 48: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Inter-comunicación segura

La seguridad de la intercomunicación entre componentes puede verse afectada debido a la falta de permisos y declaraciones públicas de los componentes.

Noten el valor "exported", si el valor es verdadero esto permite a cualquier componente comunicarse.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 49: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Componentes seguros

<activity android:name=".TestActivity"android:exported="false"></activity>

<activity android:name=".TestActivity2"android:exported="true">android:permission="my.permission"><intent-filter><action android:name="my.action.TEST"/></intent-filter></activity>

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 50: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Intents explícitos

Especifícan que paquete se encargará de ellos:

Intent i = new Intent();i.setClassName("some.package.name","some.package.name.TestActivity");

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 51: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Hijacking Activities

Se pueden hijackear actividades que tengan permisos públicos:Intent read1=new Intent();read1.setAction(android.content.Intent.ACTION_VIEW);read1.setData(ContactsContract.Contacts.CONTENT_URI);startActivity(read1);

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 53: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Identificando vulnerabilidades estáticamente

ComDroid ( http://comdroid.org ): Herramienta online para el análisis estático de inter comunicaciones.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 54: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Análisis dinámico

Navegar la aplicación manualmente para generar logs y tráfico.

Logcat da muchísima información:$adb logcato$adb logcat -s "tag"

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 55: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Análisis de tráfico

Aplicaciones complejas normalmente interactúan con servicios web remotos.

Aplicaciones como:Taxi seguro: Yaxi, ClicabTelefonia: Mi TelcelBanco: Bancomer

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 56: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Análisis de tráfico

Podemos analizar el tráfico de red:● Desde un proxy● Desde el Android ( tcpdump )

Filtros útiles de wireshark:● http or dns● http.request

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 58: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Análisis de tráfico SSL

Práctica: Interceptar comunicación cifrada SSL de la aplicación instagram.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 59: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Certificate Pinning

● Programadores hardcodean el certificado ● Ya no se necesita un CA● Muy pocas apps implementan esto.

Sin embargo... existe research donde se demuestra que también puede ser bypasseado:https://github.com/iSECPartners/android-ssl-bypass

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 60: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Almacenamiento inseguro

Problemas: 1. Todos los archivos del SD card pueden ser

leídos por cualquier aplicación.2. Programadores erróneamente guardan

información sensible.3. sharedPrefs es un simple archivo XML que

puede ser extraído

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 61: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Almacenamiento inseguro

/data/data/nombre.de.paquete/:● cache

● databases● lib● shared_prefs

Práctica: Descargar una base de datos de sharedPrefs

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 62: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Proveedores de contenido

Interfaces que manejan el acceso a cierta información que programadores desean compartir entre diferentes componentes.

Formato:content://<paquete>.<accion>

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 64: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Proveedores de contenido<provider android:name="com.websec.providers.Pwnage" android:authorities="com.websec.providers.Pwnage" />

Práctica: Lista todos los content providers de una aplicación.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 65: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Proveedores de contenido: Problemas

● Permisos incorrectos● Vulnerables a SQL injection● A veces erróneamente revelan información

sensible.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 66: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Proveedores de contenido

Práctica: Leer un content provider con información sensible.Práctica #2: Listar los content providers del sistema.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 67: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Content providers: SQL InjectionmCursor = getContentResolver().query( URI, // The content URI of the words table mProjection, // The columns to return

for each row mSelectionClause // Selection criteria mSelectionArgs, // Selection criteria mSortOrder); // The sort order for the

returned rows

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 68: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Content providers

Práctica: Explotando vulnerabilidades de tipo SQLi con Mercury

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 69: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Aplicaciones depurables

Desarrolladores olvidan desactivar el flag "debuggable" en sus aplicaciones.

Aplicaciones con el mínimo de permisos pueden ejecutar código usando el socket @jwpd

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 70: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Aplicaciones depurables

Práctica: Detectar aplicaciones que sean depurables en sus dispositivos.

Solucion 1:$aapt d xmltree app.apk AndroidManifest.xml | grep debuggableOtras soluciones:Mercury, apktool, manual, etc

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 71: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

La práctica hace al maestro...

● Revisa tus dispositivos.● Explota vulnerabilidades conocidas. Existen

librerías de versiones de las aplicaciones más populares.

● Apps mexicanas: Telcel, Bancomer, Banco Azteca, Soriana, Aeromexico.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 72: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Apps de práctica

InsecureBank: http://www.paladion.net/downloadapp.htmlGoatDROID:https://github.com/jackMannino/OWASP-GoatDroid-ProjectExploitME:http://securitycompass.github.com/AndroidLabs/Hacme Bank:http://www.mcafee.com/us/downloads/free-tools/hacme-bank-android.aspx

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 73: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Recursos

F-droid: http://f-droid.org/repository/browse/Comdroid : http://www.comdroid.org/Agnitio: http://sourceforge.net/projects/agnitiotoolhttp://developer.android.com/training/articles/security-tips.htmlDex2jar, Jd-gui, apktool, androguard, or IDA.https://github.com/iSECPartners/android-ssl-bypass

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]

Page 74: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]

Referencias

● http://www.cs.berkeley.edu/~afelt/intentsecurity-mobisys.pdf

● http://www.paladion.net/downloadapp.html● SANS Institute: Malicious Android

Applications: Risks and Exploitation● Seven ways to hang yourself with Android Y.

ONeil and E. Chin.

http://guadalajaracon.orgGuadalajaraCON

Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]