Analisisdinamicodeaplicacioneseniosywatchos 190403193057
Analisisdinamicodeaplicacioneseniosywatchos 190403193057
Analisisdinamicodeaplicacioneseniosywatchos 190403193057
APLICACIONES EN
iOS Y watchOS
RootedCON:~$ whoami
Arán Lora @4r4nL
Miembro de
Objetivos
Payload
App.app
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
Opcional
ANATOMÍA
iTunesArtWork iTunesMetadata.plist App.ipa
Payload
Icono de la app Metadatos de la
paraBinario
la App Store
Recursos
app paraWatch
la App App.app
e iTunes Store e embedded
iTunes
Info.plist _CodeSignature Requerido
.mobileprovision
Opcional
ANATOMÍA
iTunesArtWork iTunesMetadata.plist App.ipa
Payload
Aplicación App.app
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
Opcional
ANATOMÍA
iTunesArtWork iTunesMetadata.plist App.ipa
Payload
Binario Binario
Recursos de la app
Watch
App.app
Configuración de la app
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
Opcional
* Info.plist Keys and Values:
https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html
ANATOMÍA
Diferentes
iTunesArtWork
tipos de ficheros:
iTunesMetadata.plist App.ipa
App.app
-… -…
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
Opcional
ANATOMÍA
iTunesArtWork iTunesMetadata.plist App.ipa
ID desarrollador
UUID Dispositivos
Payload
ID App
Binario Recursos Entitlements
Watch
App.app
embedded
Firma de todos los ficheros
Info.plist _CodeSignature
.mobileprovision
Requerido
Opcional
ANATOMÍA
iTunesArtWork iTunesMetadata.plist App.ipa
App.app
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
Opcional
ANATOMÍA
Watch
iTunesArtWork iTunesMetadata.plist App.ipa
Binario
Recursos Info.plist PlugIns
WatchKit
App WatchKit App.app
embedded
Payload
Base.lproj _CodeSignature
.mobileprovision
Binario Recursos
App.app
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
Opcional
ANATOMÍA
Watch
iTunesArtWork iTunesMetadata.plist App.ipa
Binario
Recursos Info.plist PlugIns
WatchKit
App WatchKit App.app
embedded
Payload
Base.lproj _CodeSignature
.mobileprovision
Binario Recursos
App.app
Info.plist Igual_CodeSignature
que antes embedded Requerido
.mobileprovision
El binario solo carga la UI Opcional
ANATOMÍA
Watch
iTunesArtWork iTunesMetadata.plist App.ipa
Binario
Recursos Info.plist PlugIns
WatchKit
App WatchKit App.app
embedded
Payload
Base.lproj _CodeSignature
.mobileprovision
Binario Recursos
App.app
embedded
Info.plistUI de la app (storyboardc)
_CodeSignature
.mobileprovision
Requerido
Opcional
ANATOMÍA
Watch
iTunesArtWork iTunesMetadata.plist App.ipa
Base.lproj
Binario Recursos
Interface.storyboardc Info.plist PlugIns
Interface.plist
App WatchKit App.app
Interface-notification.plist embedded
Payload
_CodeSignature
.mobileprovision
Binario Recursos
App.app
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
Opcional
ANATOMÍA
Watch
iTunesArtWork iTunesMetadata.plist App.ipa
Base.lproj
Binario Recursos
Interface.storyboardc Info.plist PlugIns
Interface.plist
App WatchKit App.app
Interface-notification.plist embedded
Payload
_CodeSignature
.mobileprovision
Binario Recursos
App.app
Fichero compilado
Info.plist de la UI
_CodeSignature
embedded
.mobileprovision
Requerido
Opcional
ANATOMÍA
Watch
iTunesArtWork iTunesMetadata.plist App.ipa
Base.lproj
Binario Recursos
Interface.storyboardc Info.plist PlugIns
Interface.plist
App WatchKit App.app
Interface-notification.plist embedded
Payload
_CodeSignature
.mobileprovision
Binario Recursos
App.app
embedded
Payload
Base.lproj _CodeSignature
.mobileprovision
Binario Recursos
App.app
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
Opcional
ANATOMÍA
Watch
iTunesArtWork iTunesMetadata.plist App.ipa
Binario Recursos Info.plist PlugIns
App WatchKit App.app
embedded
Payload
Base.lproj _CodeSignature
.mobileprovision
Binario Recursos
App.app
embedded Requerido
Info.plist
Contiene WatchKit Extension.mobileprovision
_CodeSignature
Opcional
ANATOMÍA
Watch
iTunesArtWork iTunesMetadata.plist App.ipa
Binario Recursos Info.plist
App WatchKit App.app
Binario
PlugIns Payload
WatchKit Recursos Info.plist
Extension embedded
Base.lproj _CodeSignature
.mobileprovision
Binario Recursos
embedded
_CodeSignature App WatchKit
.mobileprovision App.app
Extension.appex
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
Opcional
ANATOMÍA
Watch
iTunesArtWork iTunesMetadata.plist App.ipa
Binario Recursos Info.plist
App WatchKit App.app
Binario
PlugIns Payload
WatchKit Recursos Info.plist
Extension embedded
Base.lproj _CodeSignature
.mobileprovision
Binario Recursos
embedded
_CodeSignature App WatchKit
.mobileprovision App.app
Extension.appex
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
PlugIns Payload
WatchKit Recursos Info.plist
Extension embedded
Base.lproj _CodeSignature
.mobileprovision
Binario Recursos
embedded
_CodeSignature App WatchKit
.mobileprovision App.app
Extension.appex
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
WatchKit App
Payload
WatchKit
Extension
Binario Recursos Watch
embedded Requerido
Info.plist _CodeSignature
.mobileprovision
App.app
Opcional
al final es….
como una
matrioska
SANDBOX
APP SANDBOX
App.app
Data
Keychains
APP SANDBOX
APP SANDBOX
SANDBOX
APP SANDBOX
APP SANDBOX
APP SANDBOX
SANDBOX
WatchKit App iOS APP
App.app
WatchKit
Extension Data
Keychains
watchOS iOS
Jailbreak
¿COMO ENTRAR?
− Jailbreak en watchOS 4.1
− Posibilidad de downgrade con iBUS Tool
Watch
¿COMO ENTRAR?
Watch
https://www.mfcbox.com
¿COMO ENTRAR?
− Jailbreak en watchOS 4.1
− Posibilidad de downgrade con iBUS Tool
− No hay Cydia, ni Frida, ni cycript,….
¡NI NÁ!
Watch − Comunidad muy limitada
¿COMO ENTRAR?
…entonces ¿Jailbreak para qué?
Watch
¿COMO ENTRAR?
¿Y con watchOS?
También se puede
Watch
¿COMO ENTRAR?
¿Y con watchOS?
También se puede
Watch pero, por ahora, Frida no
¿COMO ENTRAR?
Hooks a la vieja usanza
inyectando nuestra
custom dylib
Watch
2.
Cooking recipe
ya era hora….
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
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
Generar certificado
1
2
4
Generar certificado
1
3 4
2
Generar certificado
1
3
2
Generar proyecto
1
3
Generar proyecto
1
2
3
Generar proyecto
4
2
1 3
Generar proyecto
1
2
3
Generar proyecto
1 4
3
Generar proyecto
4
1
3
Obtener emp
1
4
2
3
Obtener emp
1 2 3
Dylibs
watchOS
iOS
Dylibs
Frida passionfruit
https://github.com/chaitin/passionfruit
https://frida.re/
objection
https://github.com/sensepost/objection
Flex brida
https://github.com/Flipboard/FLEX https://github.com/federicodotta/Brida
* https://github.com/dweinstein/awesome-frida
iOS HttpServerDebug
https://github.com/rob2468/HttpServerDebug
FLEX
Editor de UI
Visor Red
Objetos
Ficheros
HttpServerDebug
Visor de elementos UI
3 - Sazonar al gusto
3 - Sazonar al gusto
2. Firmar:
codesign -f -s Hash_identidad FridaGadget.dylib
iOS watchOS
Inyectar
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
iOS watchOS
Inyectar
Peculiaridades de Frida en modo Gadget (dylib):
- Inyectar:
insert_dylib "@executable_path/Frameworks/FridaGadget.dylib"
Payload/MyApp.app/MyApp –inplace