# iOS Pentesting Checklist {{#include ../banners/hacktricks-training.md}} ### Preparação - [ ] Leia [**iOS Basics**](ios-pentesting/ios-basics.md) - [ ] Prepare seu ambiente lendo [**iOS Testing Environment**](ios-pentesting/ios-testing-environment.md) - [ ] Leia todas as seções de [**iOS Initial Analysis**](ios-pentesting/index.html#initial-analysis) para aprender ações comuns para pentest de um aplicativo iOS ### Armazenamento de Dados - [ ] [**Plist files**](ios-pentesting/index.html#plist) podem ser usados para armazenar informações sensíveis. - [ ] [**Core Data**](ios-pentesting/index.html#core-data) (banco de dados SQLite) pode armazenar informações sensíveis. - [ ] [**YapDatabases**](ios-pentesting/index.html#yapdatabase) (banco de dados SQLite) pode armazenar informações sensíveis. - [ ] [**Firebase**](ios-pentesting/index.html#firebase-real-time-databases) configuração incorreta. - [ ] [**Realm databases**](ios-pentesting/index.html#realm-databases) podem armazenar informações sensíveis. - [ ] [**Couchbase Lite databases**](ios-pentesting/index.html#couchbase-lite-databases) podem armazenar informações sensíveis. - [ ] [**Binary cookies**](ios-pentesting/index.html#cookies) podem armazenar informações sensíveis. - [ ] [**Cache data**](ios-pentesting/index.html#cache) pode armazenar informações sensíveis. - [ ] [**Automatic snapshots**](ios-pentesting/index.html#snapshots) podem salvar informações visuais sensíveis. - [ ] [**Keychain**](ios-pentesting/index.html#keychain) é geralmente usado para armazenar informações sensíveis que podem ser deixadas ao revender o telefone. - [ ] Em resumo, apenas **verifique se há informações sensíveis salvas pelo aplicativo no sistema de arquivos.** ### Teclados - [ ] O aplicativo [**permite o uso de teclados personalizados**](ios-pentesting/index.html#custom-keyboards-keyboard-cache)? - [ ] Verifique se informações sensíveis estão salvas nos [**arquivos de cache de teclados**](ios-pentesting/index.html#custom-keyboards-keyboard-cache). ### **Logs** - [ ] Verifique se [**informações sensíveis estão sendo registradas**](ios-pentesting/index.html#logs). ### Backups - [ ] [**Backups**](ios-pentesting/index.html#backups) podem ser usados para **acessar as informações sensíveis** salvas no sistema de arquivos (verifique o ponto inicial desta lista de verificação). - [ ] Além disso, [**backups**](ios-pentesting/index.html#backups) podem ser usados para **modificar algumas configurações do aplicativo**, depois **restaurar** o backup no telefone, e como a **configuração modificada** é **carregada**, algumas (segurança) **funcionalidades** podem ser **contornadas**. ### **Memória de Aplicações** - [ ] Verifique se há informações sensíveis dentro da [**memória do aplicativo**](ios-pentesting/index.html#testing-memory-for-sensitive-data). ### **Criptografia Quebrada** - [ ] Verifique se você pode encontrar [**senhas usadas para criptografia**](ios-pentesting/index.html#broken-cryptography). - [ ] Verifique o uso de [**algoritmos obsoletos/fracos**](ios-pentesting/index.html#broken-cryptography) para enviar/armazenar dados sensíveis. - [ ] [**Hook e monitore funções de criptografia**](ios-pentesting/index.html#broken-cryptography). ### **Autenticação Local** - [ ] Se uma [**autenticação local**](ios-pentesting/index.html#local-authentication) for usada no aplicativo, você deve verificar como a autenticação está funcionando. - [ ] Se estiver usando o [**Local Authentication Framework**](ios-pentesting/index.html#local-authentication-framework), pode ser facilmente contornada. - [ ] Se estiver usando uma [**função que pode ser contornada dinamicamente**](ios-pentesting/index.html#local-authentication-using-keychain), você pode criar um script frida personalizado. ### Exposição de Funcionalidade Sensível Através de IPC - [**Custom URI Handlers / Deeplinks / Custom Schemes**](ios-pentesting/index.html#custom-uri-handlers-deeplinks-custom-schemes) - [ ] Verifique se o aplicativo está **registrando algum protocolo/esquema**. - [ ] Verifique se o aplicativo está **registrando para usar** algum protocolo/esquema. - [ ] Verifique se o aplicativo **espera receber algum tipo de informação sensível** do esquema personalizado que pode ser **interceptada** por outro aplicativo registrando o mesmo esquema. - [ ] Verifique se o aplicativo **não está verificando e sanitizando** a entrada do usuário via esquema personalizado e se alguma **vulnerabilidade pode ser explorada**. - [ ] Verifique se o aplicativo **exponha alguma ação sensível** que pode ser chamada de qualquer lugar via esquema personalizado. - [**Universal Links**](ios-pentesting/index.html#universal-links) - [ ] Verifique se o aplicativo está **registrando algum protocolo/esquema universal**. - [ ] Verifique o arquivo `apple-app-site-association`. - [ ] Verifique se o aplicativo **não está verificando e sanitizando** a entrada do usuário via esquema personalizado e se alguma **vulnerabilidade pode ser explorada**. - [ ] Verifique se o aplicativo **exponha alguma ação sensível** que pode ser chamada de qualquer lugar via esquema personalizado. - [**UIActivity Sharing**](ios-pentesting/ios-uiactivity-sharing.md) - [ ] Verifique se o aplicativo pode receber UIActivities e se é possível explorar alguma vulnerabilidade com uma atividade especialmente criada. - [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md) - [ ] Verifique se o aplicativo **está copiando algo para a área de transferência geral**. - [ ] Verifique se o aplicativo **está usando os dados da área de transferência geral para algo**. - [ ] Monitore a área de transferência para ver se algum **dado sensível é copiado**. - [**App Extensions**](ios-pentesting/ios-app-extensions.md) - [ ] O aplicativo **está usando alguma extensão**? - [**WebViews**](ios-pentesting/ios-webviews.md) - [ ] Verifique que tipo de webviews estão sendo usados. - [ ] Verifique o status de **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`**. - [ ] Verifique se o webview pode **acessar arquivos locais** com o protocolo **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`). - [ ] Verifique se o Javascript pode acessar **métodos** **nativos** (`JSContext`, `postMessage`). ### Comunicação de Rede - [ ] Realize um [**MitM na comunicação**](ios-pentesting/index.html#network-communication) e procure por vulnerabilidades na web. - [ ] Verifique se o [**hostname do certificado**](ios-pentesting/index.html#hostname-check) está sendo verificado. - [ ] Verifique/Contorne [**Certificate Pinning**](ios-pentesting/index.html#certificate-pinning). ### **Diversos** - [ ] Verifique se há mecanismos de [**atualização/patching automático**](ios-pentesting/index.html#hot-patching-enforced-updateing). - [ ] Verifique se há [**bibliotecas de terceiros maliciosas**](ios-pentesting/index.html#third-parties). {{#include ../banners/hacktricks-training.md}}