# iOS Pentesting Checklist {{#include ../banners/hacktricks-training.md}} ### Preparación - [ ] Lee [**iOS Basics**](ios-pentesting/ios-basics.md) - [ ] Prepara tu entorno leyendo [**iOS Testing Environment**](ios-pentesting/ios-testing-environment.md) - [ ] Lee todas las secciones de [**iOS Initial Analysis**](ios-pentesting/index.html#initial-analysis) para aprender acciones comunes para pentesting de una aplicación iOS ### Almacenamiento de Datos - [ ] [**Plist files**](ios-pentesting/index.html#plist) pueden ser utilizados para almacenar información sensible. - [ ] [**Core Data**](ios-pentesting/index.html#core-data) (base de datos SQLite) puede almacenar información sensible. - [ ] [**YapDatabases**](ios-pentesting/index.html#yapdatabase) (base de datos SQLite) puede almacenar información sensible. - [ ] [**Firebase**](ios-pentesting/index.html#firebase-real-time-databases) mala configuración. - [ ] [**Realm databases**](ios-pentesting/index.html#realm-databases) pueden almacenar información sensible. - [ ] [**Couchbase Lite databases**](ios-pentesting/index.html#couchbase-lite-databases) pueden almacenar información sensible. - [ ] [**Binary cookies**](ios-pentesting/index.html#cookies) pueden almacenar información sensible. - [ ] [**Cache data**](ios-pentesting/index.html#cache) puede almacenar información sensible. - [ ] [**Automatic snapshots**](ios-pentesting/index.html#snapshots) pueden guardar información visual sensible. - [ ] [**Keychain**](ios-pentesting/index.html#keychain) se utiliza generalmente para almacenar información sensible que puede quedar al revender el teléfono. - [ ] En resumen, solo **verifica si hay información sensible guardada por la aplicación en el sistema de archivos.** ### Teclados - [ ] ¿La aplicación [**permite usar teclados personalizados**](ios-pentesting/index.html#custom-keyboards-keyboard-cache)? - [ ] Verifica si la información sensible se guarda en los [**archivos de caché de teclados**](ios-pentesting/index.html#custom-keyboards-keyboard-cache). ### **Registros** - [ ] Verifica si [**se está registrando información sensible**](ios-pentesting/index.html#logs). ### Copias de Seguridad - [ ] [**Backups**](ios-pentesting/index.html#backups) pueden ser utilizados para **acceder a la información sensible** guardada en el sistema de archivos (verifica el punto inicial de esta lista de verificación). - [ ] Además, [**backups**](ios-pentesting/index.html#backups) pueden ser utilizados para **modificar algunas configuraciones de la aplicación**, luego **restaurar** la copia de seguridad en el teléfono, y como la **configuración modificada** es **cargada**, alguna (seguridad) **funcionalidad** puede ser **eludida**. ### **Memoria de Aplicaciones** - [ ] Verifica si hay información sensible dentro de la [**memoria de la aplicación**](ios-pentesting/index.html#testing-memory-for-sensitive-data). ### **Criptografía Rota** - [ ] Verifica si puedes encontrar [**contraseñas utilizadas para criptografía**](ios-pentesting/index.html#broken-cryptography). - [ ] Verifica el uso de [**algoritmos obsoletos/débiles**](ios-pentesting/index.html#broken-cryptography) para enviar/almacenar datos sensibles. - [ ] [**Hook y monitorea funciones de criptografía**](ios-pentesting/index.html#broken-cryptography). ### **Autenticación Local** - [ ] Si se utiliza una [**autenticación local**](ios-pentesting/index.html#local-authentication) en la aplicación, debes verificar cómo está funcionando la autenticación. - [ ] Si está utilizando el [**Local Authentication Framework**](ios-pentesting/index.html#local-authentication-framework), podría ser fácilmente eludido. - [ ] Si está utilizando una [**función que puede ser eludida dinámicamente**](ios-pentesting/index.html#local-authentication-using-keychain), podrías crear un script personalizado de frida. ### Exposición de Funcionalidad Sensible a Través de IPC - [**Custom URI Handlers / Deeplinks / Custom Schemes**](ios-pentesting/index.html#custom-uri-handlers-deeplinks-custom-schemes) - [ ] Verifica si la aplicación está **registrando algún protocolo/esquema**. - [ ] Verifica si la aplicación está **registrando para usar** algún protocolo/esquema. - [ ] Verifica si la aplicación **espera recibir algún tipo de información sensible** del esquema personalizado que puede ser **interceptada** por otra aplicación que registre el mismo esquema. - [ ] Verifica si la aplicación **no está verificando y sanitizando** la entrada de los usuarios a través del esquema personalizado y alguna **vulnerabilidad puede ser explotada**. - [ ] Verifica si la aplicación **expone alguna acción sensible** que puede ser llamada desde cualquier lugar a través del esquema personalizado. - [**Universal Links**](ios-pentesting/index.html#universal-links) - [ ] Verifica si la aplicación está **registrando algún protocolo/esquema universal**. - [ ] Verifica el archivo `apple-app-site-association`. - [ ] Verifica si la aplicación **no está verificando y sanitizando** la entrada de los usuarios a través del esquema personalizado y alguna **vulnerabilidad puede ser explotada**. - [ ] Verifica si la aplicación **expone alguna acción sensible** que puede ser llamada desde cualquier lugar a través del esquema personalizado. - [**UIActivity Sharing**](ios-pentesting/ios-uiactivity-sharing.md) - [ ] Verifica si la aplicación puede recibir UIActivities y si es posible explotar alguna vulnerabilidad con una actividad especialmente diseñada. - [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md) - [ ] Verifica si la aplicación **está copiando algo al portapapeles general**. - [ ] Verifica si la aplicación **está utilizando los datos del portapapeles general para algo**. - [ ] Monitorea el portapapeles para ver si se **copia algún dato sensible**. - [**App Extensions**](ios-pentesting/ios-app-extensions.md) - [ ] ¿La aplicación **está utilizando alguna extensión**? - [**WebViews**](ios-pentesting/ios-webviews.md) - [ ] Verifica qué tipo de webviews se están utilizando. - [ ] Verifica el estado de **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`**. - [ ] Verifica si el webview puede **acceder a archivos locales** con el protocolo **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`). - [ ] Verifica si Javascript puede acceder a **métodos** **nativos** (`JSContext`, `postMessage`). ### Comunicación de Red - [ ] Realiza un [**MitM a la comunicación**](ios-pentesting/index.html#network-communication) y busca vulnerabilidades web. - [ ] Verifica si se verifica el [**nombre de host del certificado**](ios-pentesting/index.html#hostname-check). - [ ] Verifica/Elude [**Certificate Pinning**](ios-pentesting/index.html#certificate-pinning). ### **Varios** - [ ] Verifica si hay mecanismos de [**parcheo/actualización automática**](ios-pentesting/index.html#hot-patching-enforced-updateing). - [ ] Verifica si hay [**bibliotecas de terceros maliciosas**](ios-pentesting/index.html#third-parties). {{#include ../banners/hacktricks-training.md}}