Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]
-
Upload
websec-mexico-sc -
Category
Technology
-
view
2.522 -
download
2
description
Transcript of Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]
![Page 1: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/1.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/2.jpg)
● 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 3: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/3.jpg)
● BCBUS● Mac2wepkey HHG5XX● IP2Hosts● LectorBunsen
Mis aplicaciones Android
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/4.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/5.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/6.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/7.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/8.jpg)
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 9: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/9.jpg)
Introducción a la arquitectura Android
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/10.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/11.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/12.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/13.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/14.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/15.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/16.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/17.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/18.jpg)
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 19: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/19.jpg)
Aplicaciones Androidhttp://guadalajaracon.org
GuadalajaraCON
Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]
![Page 20: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/20.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/21.jpg)
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 22: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/22.jpg)
AndroidManifest.xmlhttp://guadalajaracon.org
GuadalajaraCON
Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]
![Page 23: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/23.jpg)
Trojan/Android.SMSZombie.*http://guadalajaracon.org
GuadalajaraCON
Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]
![Page 24: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/24.jpg)
Trojan/Android.SMSZombie.*http://guadalajaracon.org
GuadalajaraCON
Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]
![Page 25: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/25.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/26.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/27.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/28.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/29.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/30.jpg)
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 31: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/31.jpg)
Vulnerabilidades en aplicaciones Android
http://guadalajaracon.orgGuadalajaraCON
Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]
![Page 32: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/32.jpg)
OWASP Mobile Top 10 riskshttp://guadalajaracon.org
GuadalajaraCON
Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]
![Page 33: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/33.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/34.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/35.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/36.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/37.jpg)
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 38: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/38.jpg)
ScriptDroidhttp://guadalajaracon.org
GuadalajaraCON
Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]
![Page 39: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/39.jpg)
Agnitiohttp://guadalajaracon.org
GuadalajaraCON
Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]
![Page 40: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/40.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/41.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/42.jpg)
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 43: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/43.jpg)
Analizando APKs
$unzip app.apk
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/44.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/45.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/46.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/47.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/48.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/49.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/50.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/51.jpg)
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 52: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/52.jpg)
Inter-comunicación segura
Práctica: Listar broadcast en el sistema
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/53.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/54.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/55.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/56.jpg)
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 57: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/57.jpg)
Práctica: Identificando comunicaciones inseguras
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/58.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/59.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/60.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/61.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/62.jpg)
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 63: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/63.jpg)
Proveedores de contenido
CONTENT PROVIDER
SQLITEFILES INTERNET
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/64.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/65.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/66.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/67.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/68.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/69.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/70.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/71.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/72.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/73.jpg)
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]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/74.jpg)
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]
![Page 75: Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]](https://reader033.fdocuments.net/reader033/viewer/2022051817/54812bbcb379596f2b8b5c38/html5/thumbnails/75.jpg)
#halt
Paulino Calderón PaleWWW: http://calderonpale.comEmail: [email protected]: @calderpwn
http://guadalajaracon.orgGuadalajaraCON
Búsqueda de vulnerabilidades en aplicaciones AndroidPaulino Calderon [email protected]