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]


Top Related