Destripando y protegiendo aplicaciones android

2,571 views
2,472 views

Published on

Material que utilice en la charla de GTUG-Barcelona. Podéis buscar y ver la charla completa aquí: http://barcelona.gtugs.org/colaboradores-materiales

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,571
On SlideShare
0
From Embeds
0
Number of Embeds
31
Actions
Shares
0
Downloads
66
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Destripando y protegiendo aplicaciones android

  1. 1. by Sergio Arcos SebastiánDestripando y protegiendo aplicaciones AndroidDestripando y protegiendo aplicaciones Android ~ 1
  2. 2. Índice● Introducción● Marco de seguridad en el diseño de Android● App1 – Difamación● App2 – Invasión● App3 – Recopilación● App4 – Suplantación● Consejos y conclusionesDestripando y protegiendo aplicaciones Android ~ 2
  3. 3. Disclaimer 1) No aprendáis de mis aplicaciones... ... vosotros programáis mejor :) 2) No sé si durará 1 hora o 3 horas... ... ¡ups! 3) No sé si será Master.class... ... pero esperemos que sí sea divertida.Destripando y protegiendo aplicaciones Android ~ 3
  4. 4. ¿Quién soy?● Poca memoria● Autodidácta● Consultor de seguridad informática en www.blueliv.com● Miembro del equipo técnico de www.pirata.catDestripando y protegiendo aplicaciones Android ~ 4
  5. 5. Mi primera APP● Lector RSS, Google Calendar, Sistema de participación, ...● Permite autenticarse y votar● Actualmente v2.3● Falta mejorar tanto su usabilidad como su seguridad (pname:cat.pirata.activities)Destripando y protegiendo aplicaciones Android ~ 5
  6. 6. ¿Porqué esta presentación? “Se aprende enseñando”Destripando y protegiendo aplicaciones Android ~ 6
  7. 7. ¿Qué es la seguridad? "Algo es seguro hasta que deja de serlo" (Definición cutre pero real)Destripando y protegiendo aplicaciones Android ~ 7
  8. 8. Son suculentos. ¿Por qué?● Bastante potencia de CPU● Muchas cuentas de muchas plataformas juntas● Conexión permanente 3G● Funciones de llamada y SMS● Poco tiempo en el mercado● Baja frecuencia de actualización ... pero ninguno de estos es el mayor problema...Destripando y protegiendo aplicaciones Android ~ 8
  9. 9. Esta autoadministrado :(Destripando y protegiendo aplicaciones Android ~ 9
  10. 10. ¿Qué podemos controlar?● Legitimidad del software (fiabilidad)● Información y transparencia (confianza)● Comunicaciones seguras (protección)● Datos protegidos (privacidad)● Actualizaciones constantes (soporte)● Buenas prácticas de uso (consciencia)Destripando y protegiendo aplicaciones Android ~ 10
  11. 11. Objetivo mitigar posibles futuros daños elevando el numero de capas de protección implementadas en el sistema/aplicaciones ¿Cómo? Capa oculta (Interacción Humano-Computador Segura, ¡te invocó!)Destripando y protegiendo aplicaciones Android ~ 11
  12. 12. Nota informativa Como mis conocimientos de la `Interacción Humano-Computador Segura´ son bastante introductorios, usaremos otro método:●● A palos. (lease: a base de precedentes)● ● "La letra con sangre entra", GoyaDestripando y protegiendo aplicaciones Android ~ 12
  13. 13. Índice● Introducción● Marco de seguridad en el diseño de Android● App1 – Difamación● App2 – Invasión● App3 – Recopilación● App4 – Suplantación● Consejos y conclusionesDestripando y protegiendo aplicaciones Android ~ 13
  14. 14. Hardware ~ ARMvX● Instrucciones RISC 32 bits, Bi-Endian● Uso de Registros● ARM-Thumb● Syscalls = x86● Modulos para Metasploit http://dev.metasploit.com/redmine/attachments/459/exec.rbDestripando y protegiendo aplicaciones Android ~ 14
  15. 15. Hardware ~ Memoria Interna: Externa:● ROM & RAM ● SDCard – NAND● FileSystem: YAFFS ● FileSystem: FAT32 (por defecto [mksdcard])● Varias particiones ● "Única" partición● # df -h ● # fdisk -l● /dev/block/dm-X /dev/block/mmcblk0 -> /mnt/asec/App/ ● Parecido a /tmp (-t) (sticky bit)Destripando y protegiendo aplicaciones Android ~ 15
  16. 16. Hardware ~ Memoria – App 1● Espacio compartido● Leer/ejecutar no requiere permisos● Escribir requiere android.permission.WRITE_ EXTERNAL_STORAGE● Poco espacio en memoria interna● Común y natural!!Destripando y protegiendo aplicaciones Android ~ 16
  17. 17. Wooops!.. [Never happened]Destripando y protegiendo aplicaciones Android ~ 17
  18. 18. Hardware ~ Memoria – App 2Destripando y protegiendo aplicaciones Android ~ 18
  19. 19. Hardware ~ Comunicación● Mini-USB● Wireless● Bluetooth● SDCard● Tarjeta SIM● Pantalla● Otros (infrarojos, ...)Destripando y protegiendo aplicaciones Android ~ 19
  20. 20. Android ~ Estadísticas 1● Mayo 2009 – 30,000 por día● Mayo 2010 – 100,000 por día● Agosto 2010 – 200,000 por día● Diciembre 2010 – 300,000 por día● Mayo 2011 – 400,000 por día● Junio 2011 – 500,000 por día● 4.500.000.000 aplicaciones descargadasDestripando y protegiendo aplicaciones Android ~ 20
  21. 21. Android ~ Estadísticas 2Destripando y protegiendo aplicaciones Android ~ 21
  22. 22. Android ~ basado en Linux 1Destripando y protegiendo aplicaciones Android ~ 22
  23. 23. Android ~ basado en Linux 2Destripando y protegiendo aplicaciones Android ~ 23
  24. 24. Android ~ Google● ro.secure = {0,1}● El Market es $deity● Base de datos con las firmas● Reporte de infracciones● Permite instalar apps a través de su web● Mejora las funciones (wipe, encriptar, ...)● Posibles condiciones a los proveedores.Destripando y protegiendo aplicaciones Android ~ 24
  25. 25. Android ~ Particiones● /boot -> bootloader + kernel● /system -> sistema operativo + apps (de sistema)● /recovery -> boot alternativo● /data -> datos del usuario + apps● /cache -> datos reaprovechables● /misc -> configuraciones (hardware)● /sdcard -> Environment.getExternalStorageDirectory();● /sd-ext -> APP2SD+ / data2ext ¿y /var/log? ¿y encriptar?Destripando y protegiendo aplicaciones Android ~ 25
  26. 26. Android ~ VirtualMachine● Todo corre en diferentes Sandbox (falsooo!)● Sistema basado en PRIVILEGIOS A) Ejecutamos código nativo (JNI) – Se hizo una charla GTUG de esto :) (buscad NDK) B) Ejecutamos código DalvikEXecutable (DEX) – Similar a Java; optimizado y reducido para perifericos● Protecciones de datos entre diferentes instancias (ej: navegador->Webview)● Zygote: sistema de padres-hijosDestripando y protegiendo aplicaciones Android ~ 26
  27. 27. Android ~ Usuarios ¿mono-usuario por ser mono-propietario?Destripando y protegiendo aplicaciones Android ~ 27
  28. 28. Android ~ APK 1● Usando adb > adb install /path/pkg.apk● En la shell $ am start -a android.intent.action.VIEW -d file:///path/pkg.apk -t text -n com.android.packageinstaller/.PackageInstallerActivity● Con el navegador iendo a file:///path/pkg.apk● Con la cuenta de Google desde Google MarketDestripando y protegiendo aplicaciones Android ~ 28
  29. 29. Android ~ APK 2● Mover a /system/app● Solapar una app ya existente /data/app ● El sistema comprueba firmas en 2 ocasiones: – Instalando una aplicación – Reiniciando el sistema● # pm install -t /path/pkg.apk● Usando un paquete `update.zip´ (firmado) a través del modo de arranque /recoveryDestripando y protegiendo aplicaciones Android ~ 29
  30. 30. Android ~ APK 3● Necesitan estar firmadas (Modo debug o no)● APK = ZIP + jarsigner + zalign● Objetivo: Control absoluto de la appDestripando y protegiendo aplicaciones Android ~ 30
  31. 31. Android ~ Permisos 1● Regular, peligroso, sistema y firmados (116)● Consultar Settings.Secure (import android.provider.Settings;)● Combinaciones más que peligrosas. Ej: PHONE_STATE + RECORD_AUDIO + INTERNET● Filosofia: "O todo o nada"● 06-29 21:33:38.540: WARN/InputDispatcher(162): Permission denied: injecting event from pid 13267 uid 10122 to window with input channel 40a21648 com.android.packageinstaller/com.android.packageinstaller.PackageInstallerActivity (server) owned by uid 10046 (Error obtenido AÚN habiendo asignado el permiso INJECT_EVENT. ¡Mola!)● Existe el permiso "BRICK" (9 apps en el market). ¡No mola!Destripando y protegiendo aplicaciones Android ~ 31
  32. 32. Android ~ Permisos 2Destripando y protegiendo aplicaciones Android ~ 32
  33. 33. Android ~ CuentasDestripando y protegiendo aplicaciones Android ~ 33
  34. 34. Manos a la obra!!Destripando y protegiendo aplicaciones Android ~ 34
  35. 35. Índice● Introducción● Marco de seguridad en el diseño de Android● App1 – Difamación● App2 – Invasión● App3 – Recopilación● App4 – Suplantación● Consejos y conclusionesDestripando y protegiendo aplicaciones Android ~ 35
  36. 36. Objetivos● Aplicación común (Webview) sin ofuscar● Análisis del APK● Apktool, dex2jar, dexdump● Código dinámico● Análisis del DroidDreadDestripando y protegiendo aplicaciones Android ~ 36
  37. 37. Índice● Introducción● Marco de seguridad en el diseño de Android● App1 – Difamación● App2 – Invasión● App3 – Recopilación● App4 – Suplantación● Consejos y conclusionesDestripando y protegiendo aplicaciones Android ~ 37
  38. 38. Objetivos● Aplicación común (Webview) ofuscada con Proguard● Uso de AndroGuard● Intrusión web● Retrace de Proguard● Keystore y las claves segurasDestripando y protegiendo aplicaciones Android ~ 38
  39. 39. Índice● Introducción● Marco de seguridad en el diseño de Android● App1 – Difamación● App2 – Invasión● App3 – Recopilación● App4 – Suplantación● Consejos y conclusionesDestripando y protegiendo aplicaciones Android ~ 39
  40. 40. Objetivos● Aplicación nativa con autenticación SSL mediante webservice● Ataque del Hotspot● Introducción al sniffing vía wireless● AndroidAuditTools● WhisperSys toolsDestripando y protegiendo aplicaciones Android ~ 40
  41. 41. Índice● Introducción● Marco de seguridad en el diseño de Android● App1 – Difamación● App2 – Invasión● App3 – Recopilación● App4 – Suplantación● Consejos y conclusionesDestripando y protegiendo aplicaciones Android ~ 41
  42. 42. Objetivos● Autenticación por lista blanca de móviles● Técnicas anti-debug● Introducción al emulador como herramienta de reversing● DroidBox & TaintDroidDestripando y protegiendo aplicaciones Android ~ 42
  43. 43. Índice● Introducción● Marco de seguridad en el diseño de Android● App1 – Difamación● App2 – Invasión● App3 – Recopilación● App4 – Suplantación● Consejos y conclusionesDestripando y protegiendo aplicaciones Android ~ 43
  44. 44. Derivados...Destripando y protegiendo aplicaciones Android ~ 44
  45. 45. Consejos● Guarda muy bien los ficheros: Sois el ● Keystore de firmar objetivo Mapping.txt número 1 ●● Recuerda: ● Mínimos permisos de las SSL verificado mafias de ● ● Datos en la Sdcard ● Tenla actualizada malwareDestripando y protegiendo aplicaciones Android ~ 45
  46. 46. ConclusionesDestripando y protegiendo aplicaciones Android ~ 46
  47. 47. Retos interesantesDestripando y protegiendo aplicaciones Android ~ 47
  48. 48. Preguntas, dudas,comentarios < /dev/random Sergio Arcos SebastiánDestripando y protegiendo aplicaciones Android ~ 48

×