Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Arán Lora - Análisis dinámico de aplicaciones en iOS sin Jailbreak [rooted2019]

214 views

Published on

Arán Lora - Análisis dinámico de aplicaciones en iOS sin Jailbreak [rooted2019]

Published in: Technology
  • Be the first to comment

Arán Lora - Análisis dinámico de aplicaciones en iOS sin Jailbreak [rooted2019]

  1. 1. ANÁLISIS DINÁMICO DE APLICACIONES EN iOS Y watchOS
  2. 2. RootedCON:~$ whoami Arán Lora @4r4nL Senior Security Analyst en Miembro de
  3. 3. Objetivos Como poder manipular proceso “on-the-fly” en iOS y watchOS sin JB
  4. 4. 1. La teoría un poco de base nunca viene mal…
  5. 5. IPA FILE FORMAT − Fichero ZIP o LZFSE − Contiene la APP para iOS y watchOS (.app) − Instalable mediante USB y Over-The-Air − App Store -> Cifrados (FairPlay) − Firmado por Apple − Se ejecutan en SandBox
  6. 6. ANATOMÍA App.ipaiTunesArtWork iTunesMetadata.plist Binario Recursos Watch Info.plist _CodeSignature embedded .mobileprovision Payload App.app Opcional Requerido
  7. 7. ANATOMÍA Binario Recursos Watch Info.plist _CodeSignature embedded .mobileprovision Payload App.app Requerido iTunesArtWork iTunesMetadata.plist Opcional App.ipa Icono de la app para la App Store e iTunes Metadatos de la app para la App Store e iTunes
  8. 8. Opcional iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Watch Info.plist _CodeSignature embedded .mobileprovision Requerido Payload App.appAplicación
  9. 9. Opcional iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Recursos Watch _CodeSignature embedded .mobileprovision Payload App.app RequeridoInfo.plist Binario Binario de la app Configuración de la app * Info.plist Keys and Values: https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html
  10. 10. Opcional iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Watch Info.plist _CodeSignature embedded .mobileprovision Payload App.app Recursos Requerido Diferentes tipos de ficheros: - Librerías (Frameworks, dylib) - UI (nib, storyboardc) - plist - … - Imágenes (PNG,JPG,..) - Strings - Assets.car - …
  11. 11. iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Watch Info.plist Payload App.app Opcional _CodeSignature embedded .mobileprovision RequeridoFirma de todos los ficheros ID desarrollador UUID Dispositivos ID App Entitlements
  12. 12. iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Requerido Payload App.app Opcional Watch Carpeta que contiene la app del Watch
  13. 13. iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Payload App.app Opcional Watch App WatchKit App.app Requerido Binario WatchKit Recursos Info.plist _CodeSignature PlugIns Base.lproj embedded .mobileprovision
  14. 14. iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Payload App.app Watch App WatchKit App.app PlugIns Base.lproj Binario WatchKit Recursos Info.plist _CodeSignature embedded .mobileprovision Opcional RequeridoIgual que antes El binario solo carga la UI
  15. 15. iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Payload App.app Opcional Watch App WatchKit App.app PlugIns Binario WatchKit Recursos Info.plist _CodeSignature embedded .mobileprovision Requerido Base.lproj UI de la app (storyboardc)
  16. 16. iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Payload App.app Watch App WatchKit App.app PlugInsBinario Recursos Info.plist _CodeSignature embedded .mobileprovision Requerido Interface.storyboardc Interface.plist Interface-notification.plist Opcional Base.lproj
  17. 17. iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Payload App.app Watch App WatchKit App.app PlugInsBinario Recursos Info.plist _CodeSignature embedded .mobileprovision Base.lproj Interface.plist Interface-notification.plist Requerido Opcional Interface.storyboardc Fichero compilado de la UI
  18. 18. iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Payload App.app Watch App WatchKit App.app PlugInsBinario Recursos Info.plist _CodeSignature embedded .mobileprovision Interface.storyboardc Base.lproj Interface.plist Interface-notification.plist Requerido Opcional Configuración de las vistas Permiten ver las acciones
  19. 19. iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Payload App.app Opcional Watch App WatchKit App.app PlugIns Binario WatchKit Recursos Info.plist _CodeSignature embedded .mobileprovision Requerido Base.lproj
  20. 20. iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Payload App.app Opcional Watch App WatchKit App.app Base.lproj Binario Recursos Info.plist _CodeSignature embedded .mobileprovision PlugIns Requerido Contiene WatchKit Extension
  21. 21. Requerido iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Payload App.app Watch App WatchKit App.app Base.lproj Binario Recursos Info.plist _CodeSignature embedded .mobileprovision PlugIns App WatchKit Extension.appex Binario WatchKit Extension Recursos Info.plist _CodeSignature embedded .mobileprovision Requerido Opcional
  22. 22. Requerido iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Payload App.app Watch App WatchKit App.app Base.lproj Binario Recursos Info.plist _CodeSignature embedded .mobileprovision PlugIns App WatchKit Extension.appex Binario WatchKit Extension Recursos Info.plist _CodeSignature embedded .mobileprovision Opcional Requerido Igual que en los .app
  23. 23. Requerido iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Info.plist _CodeSignature embedded .mobileprovision Payload App.app Watch App WatchKit App.app Base.lproj Binario Recursos Info.plist _CodeSignature embedded .mobileprovision PlugIns App WatchKit Extension.appex Recursos Info.plist _CodeSignature embedded .mobileprovision Opcional Requerido Binario WatchKit Extension Contiene toda la lógica de la app del Watch
  24. 24. Opcional iTunesMetadata.plistiTunesArtWork ANATOMÍA App.ipa Binario Recursos Watch Info.plist _CodeSignature embedded .mobileprovision Requerido Payload App.app WatchKit App WatchKit Extension
  25. 25. al final es…. como una matrioska
  26. 26. SANDBOX APP SANDBOX App.app Data Keychains APP SANDBOX APP SANDBOX
  27. 27. SANDBOX APP SANDBOX App.app Data Keychains APP SANDBOX APP SANDBOX Contenido del IPA Datos de la app Contenedor de claves
  28. 28. SANDBOX iOS APP App.app Data Keychains WatchKit App WatchKit Extension watchOS iOS The Watch App Architecture: https://developer.apple.com/library/archive/documentation/General/Conceptual/WatchKitProgrammingGuide/DesigningaWatchKitApp.html
  29. 29. WATCH Watch - Versión reducida de iOS - Librerías de sistema especificas - Arquitectura arm_v7k y arm64_32_v8
  30. 30. ¿COMO ENTRAR? Jailbreak Inyectar y firmar
  31. 31. ¿COMO ENTRAR? Jailbreak − Mayor versatilidad y facilidad − Muchas herramientas disponibles − No disponible en últimas versiones
  32. 32. ¿COMO ENTRAR? Watch − Jailbreak en watchOS 4.1 − Posibilidad de downgrade con iBUS Tool
  33. 33. ¿COMO ENTRAR? Watch https://www.mfcbox.com
  34. 34. ¿COMO ENTRAR? Watch − Jailbreak en watchOS 4.1 − Posibilidad de downgrade con iBUS Tool − No hay Cydia, ni Frida, ni cycript,…. ¡NI NÁ! − Comunidad muy limitada
  35. 35. ¿COMO ENTRAR? Watch …entonces ¿Jailbreak para qué? por ahora, solo es útil para dumpear, desarrollar e investigar
  36. 36. ¿COMO ENTRAR? Jailbreak Inyectar y firmar
  37. 37. ¿COMO ENTRAR? Inyectar y firmar Frida Frida es un set de herramientas de instrumentación dinámica creada por Ole André (@oleavr). Inyecta en un proceso un motor JavaScript y nos permite interactuar con él, hookear, tracear,… (entre otras cosas)
  38. 38. ¿COMO ENTRAR? Inyectar y firmar − Nos da acceso directo al proceso − Se puede hacer lo mismo que con JB − Válido para cualquier versión de iOS − Proceso inicial más complejo − ¡Requiere del IPA sin cifrar!
  39. 39. ¿COMO ENTRAR? Watch ¿Y con watchOS?
  40. 40. ¿COMO ENTRAR? Watch ¿Y con watchOS? También se puede
  41. 41. ¿COMO ENTRAR? Watch ¿Y con watchOS? También se puede pero, por ahora, Frida no
  42. 42. ¿COMO ENTRAR? Watch Hooks a la vieja usanza inyectando nuestra custom dylib
  43. 43. 2. Cooking recipe ya era hora….
  44. 44. LISTA DE LA COMPRA − IPA sin cifrar − MacOS (VM, Hackintosh) con Xcode − Cuenta de Apple (gratuita) − Dylib (Frida y custom para watchOS) − Insert_dylib − Fastlane sign (próximamente applesign) − ios-deploy − Paciencia
  45. 45. PASOS A SEGUIR 1. Generar certificado de desarrollador 2. Generar proyecto de prueba 3. Obtener los embedded.mobileprovision 4. Obtener y Firmar las librerías 5. Inyectar, Firmar e Instalar
  46. 46. Generar certificado 1 2 3 4
  47. 47. Generar certificado 1 2 3 4
  48. 48. Generar certificado 1 2 3 4
  49. 49. Generar proyecto 1 2 3
  50. 50. Generar proyecto 1 2 3
  51. 51. Generar proyecto 1 2 3 4
  52. 52. Generar proyecto 1 2 3
  53. 53. Generar proyecto 1 2 3 4
  54. 54. Generar proyecto 1 2 3 4
  55. 55. Obtener emp 1 2 3 4
  56. 56. Obtener emp 1 2 3
  57. 57. Dylibs watchOS iOS
  58. 58. Dylibs iOS Frida https://frida.re/ Flex https://github.com/Flipboard/FLEX HttpServerDebug https://github.com/rob2468/HttpServerDebug passionfruit https://github.com/chaitin/passionfruit objection https://github.com/sensepost/objection brida https://github.com/federicodotta/Brida * https://github.com/dweinstein/awesome-frida
  59. 59. FLEX Editor de UI Visor Red Objetos Ficheros
  60. 60. HttpServerDebug Visor de ficherso y sqlite Visor de elementos UI * Sí, interfaz en chino
  61. 61. Dylibs watchOS 1 - Crear Proyecto Watch Framework 2 - John Coates’s autohook https://gist.github.com/JohnCoates/c0d77f130d033b206367db480f7c18ae 3 - Sazonar al gusto 4 - Compilar para watchOS
  62. 62. AUTOHOOK
  63. 63. Dylibs watchOS 1 - Crear Proyecto Watch Framework 2 - John Coates’s autohook https://gist.github.com/JohnCoates/c0d77f130d033b206367db480f7c18ae 3 - Sazonar al gusto 4 - Compilar para watchOS
  64. 64. Dylibs watchOSiOS Si la dylib no está firmada: 1. Ver ID identidad firmante: security find-identity -v -p codesigning 2. Firmar: codesign -f -s Hash_identidad FridaGadget.dylib
  65. 65. Inyectar watchOSiOS 1. Descomprimir IPA 2. Crear (si no existe) la carpeta Frameworks 3. Copiar dylib o framework 4. Inyectar en el binario con insert_dylib 5. Firmar con Fastlane sign 6. Instalar con ios-deploy
  66. 66. Inyectar iOS Peculiaridades de Frida en modo Gadget (dylib): - Inyectar: insert_dylib "@executable_path/Frameworks/FridaGadget.dylib" Payload/MyApp.app/MyApp –inplace - Ejecutar en modo debug: ios-deploy --bundle Payload/*.app -m -L - Justo después ejecutar frida: frida -U “gadget”
  67. 67. DEMO
  68. 68. ¡¡Gracias!! @ajpallares
  69. 69. ¿Preguntas? @4r4nL

×