# Ambiente de Teste iOS
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)! Outras maneiras de apoiar o HackTricks: * Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
## Programa de Desenvolvedor Apple Uma **identidade de provisionamento** é uma coleção de chaves públicas e privadas associadas a uma conta de desenvolvedor da Apple. Para **assinar aplicativos**, você precisa pagar **99$/ano** para se registrar no **Programa de Desenvolvedor Apple** e obter sua identidade de provisionamento. Sem isso, você não poderá executar aplicativos a partir do código-fonte em um dispositivo físico. Outra opção para fazer isso é usar um **dispositivo com jailbreak**. A partir do Xcode 7.2, a Apple forneceu uma opção para criar um **perfil de provisionamento de desenvolvimento iOS gratuito** que permite escrever e testar seu aplicativo em um iPhone real. Vá para _Xcode_ --> _Preferências_ --> _Contas_ --> _+_ (Adicionar novo ID de Aplicativo com suas credenciais) --> _Clique no ID Apple criado_ --> _Gerenciar Certificados_ --> _+_ (Desenvolvimento Apple) --> _Concluído_\ \_\_Então, para executar seu aplicativo em seu iPhone, você precisa primeiro **indicar ao iPhone que confie no computador**. Em seguida, você pode tentar **executar o aplicativo no celular a partir do Xcode**, mas um erro aparecerá. Portanto, vá para _Ajustes_ --> _Geral_ --> _Perfis e Gerenciamento de Dispositivos_ --> Selecione o perfil não confiável e clique em "**Confiar**". Observe que **aplicativos assinados pelo mesmo certificado de assinatura podem compartilhar recursos de maneira segura, como itens de chaveiro**. Os perfis de provisionamento são armazenados dentro do telefone em **`/Library/MobileDevice/ProvisioningProfiles`** ## **Simulador** {% hint style="info" %} Observe que um **simulador não é o mesmo que um emulador**. O simulador apenas simula o comportamento do dispositivo e funções, mas não os utiliza de fato. {% endhint %} ### **Simulador** A primeira coisa que você precisa saber é que **realizar um pentest dentro de um simulador será muito mais limitado do que fazê-lo em um dispositivo com jailbreak**. Todas as ferramentas necessárias para construir e dar suporte a um aplicativo iOS são **oficialmente suportadas apenas no Mac OS**.\ A ferramenta padrão da Apple para criar/depurar/instrumentar aplicativos iOS é o **Xcode**. Ele pode ser usado para baixar outros componentes, como **simuladores** e diferentes **versões de SDK** necessárias para construir e **testar** seu aplicativo.\ É altamente recomendável **baixar** o Xcode da **App Store oficial**. Outras versões podem conter malware. Os arquivos do simulador podem ser encontrados em `/Users//Library/Developer/CoreSimulator/Devices` Para abrir o simulador, execute o Xcode, em seguida, clique na aba _Xcode_ --> _Abrir Ferramentas de Desenvolvedor_ --> _Simulador_\ \_\_Na imagem a seguir, clicando em "iPod touch \[...]" você pode selecionar outro dispositivo para testar: ![](<../../.gitbook/assets/image (270).png>) ![](<../../.gitbook/assets/image (520).png>) ### Aplicativos no Simulador Dentro de `/Users//Library/Developer/CoreSimulator/Devices`, você pode encontrar todos os **simuladores instalados**. Se você deseja acessar os arquivos de um aplicativo criado dentro de um dos emuladores, pode ser difícil saber **em qual o aplicativo está instalado**. Uma maneira rápida de **encontrar o UID correto** é executar o aplicativo no simulador e executar: ```bash xcrun simctl list | grep Booted iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted) ``` Uma vez que você saiba o UID, os aplicativos instalados dentro dele podem ser encontrados em `/Users//Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application` No entanto, surpreendentemente você não encontrará o aplicativo aqui. Você precisa acessar `/Users//Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/` E nesta pasta você pode **encontrar o pacote do aplicativo.** ## Emulador Corellium é o único emulador iOS publicamente disponível. É uma solução SaaS empresarial com um modelo de licença por usuário e não oferece nenhum teste gratuito. ## Jailbreak A Apple exige estritamente que o código em execução no iPhone deve ser **assinado por um certificado emitido pela Apple**. **Jailbreaking** é o processo de **contornar ativamente tais restrições** e outros controles de segurança implementados pelo sistema operacional. Portanto, uma vez que o dispositivo é jailbroken, a **verificação de integridade** responsável por verificar os aplicativos instalados é contornada. {% hint style="info" %} Ao contrário do Android, **você não pode alternar para o "Modo Desenvolvedor"** no iOS para executar código não confiável/não assinado no dispositivo. {% endhint %} ### Rooting no Android vs. Jailbreaking no iOS Embora frequentemente comparados, **rooting** no Android e **jailbreaking** no iOS são processos fundamentalmente diferentes. O rooting de dispositivos Android pode envolver **a instalação do binário `su`** ou **a substituição do sistema por uma ROM personalizada com root**, o que não necessariamente requer exploits se o bootloader estiver desbloqueado. **Flashing de ROMs personalizadas** substitui o sistema operacional do dispositivo após desbloquear o bootloader, às vezes exigindo um exploit. Por outro lado, dispositivos iOS não podem fazer flash de ROMs personalizadas devido à restrição do bootloader de apenas inicializar imagens assinadas pela Apple. **Jailbreaking no iOS** visa contornar as proteções de assinatura de código da Apple para executar código não assinado, um processo complicado pelas contínuas melhorias de segurança da Apple. ### Desafios do Jailbreaking Jailbreaking no iOS está se tornando cada vez mais difícil à medida que a Apple corrige rapidamente as vulnerabilidades. **Rebaixar o iOS** é possível apenas por um tempo limitado após um lançamento, tornando o jailbreaking uma questão sensível ao tempo. Dispositivos usados para testes de segurança não devem ser atualizados a menos que o re-jailbreaking seja garantido. As atualizações do iOS são controladas por um **mecanismo de desafio-resposta** (blobs SHSH), permitindo a instalação apenas para respostas assinadas pela Apple. Esse mecanismo, conhecido como "janela de assinatura", limita a capacidade de armazenar e posteriormente usar pacotes de firmware OTA. O site [IPSW Downloads](https://ipsw.me) é um recurso para verificar as janelas de assinatura atuais. ### Variedades de Jailbreak * **Jailbreaks tethered** exigem uma conexão com o computador para cada reinicialização. * **Jailbreaks semi-tethered** permitem a inicialização no modo não jailbroken sem um computador. * **Jailbreaks semi-untethered** exigem re-jailbreaking manual sem a necessidade de um computador. * **Jailbreaks untethered** oferecem uma solução de jailbreak permanente sem a necessidade de reaplicação. ### Ferramentas e Recursos de Jailbreaking As ferramentas de jailbreaking variam de acordo com a versão do iOS e o dispositivo. Recursos como [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com) e [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) fornecem informações atualizadas. Exemplos incluem: * [Checkra1n](https://checkra.in/) para dispositivos com chip A7-A11. * [Palera1n](https://palera.in/) para dispositivos Checkm8 (A8-A11) no iOS 15.0-16.5. * [Unc0ver](https://unc0ver.dev/) para versões do iOS até 14.8. Modificar seu dispositivo apresenta riscos, e o jailbreaking deve ser abordado com cautela. ### Benefícios e Riscos do Jailbreaking O jailbreaking **remove o isolamento imposto pelo sistema operacional**, permitindo que os aplicativos acessem todo o sistema de arquivos. Essa liberdade possibilita a instalação de aplicativos não aprovados e o acesso a mais APIs. No entanto, para usuários comuns, o jailbreaking **não é recomendado** devido aos possíveis riscos de segurança e instabilidade do dispositivo. ### **Após o Jailbreaking** {% content-ref url="basic-ios-testing-operations.md" %} [basic-ios-testing-operations.md](basic-ios-testing-operations.md) {% endcontent-ref %} ### **Detecção de Jailbreak** **Várias aplicações tentarão detectar se o dispositivo móvel está jailbroken e, nesse caso, o aplicativo não será executado** * Após o jailbreak de um iOS **arquivos e pastas geralmente são instalados**, que podem ser pesquisados para determinar se o dispositivo está jailbroken. * Em um dispositivo jailbroken, os aplicativos obtêm **acesso de leitura/escrita a novos arquivos** fora do sandbox * Algumas **chamadas de API** se **comportarão de forma diferente** * A presença do serviço **OpenSSH** * Chamar `/bin/sh` irá **retornar 1** em vez de 0 **Mais informações sobre como detectar jailbreaking** [**aqui**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.** Você pode tentar evitar essas detecções usando `ios jailbreak disable` do **objection** ## **Bypass de Detecção de Jailbreak** * Você pode tentar evitar essas detecções usando `ios jailbreak disable` do **objection** * Você também pode instalar a ferramenta **Liberty Lite** (https://ryleyangus.com/repo/). Uma vez que o repositório é adicionado, o aplicativo deve aparecer na aba ‘Pesquisar’ ## Referências * [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
Aprenda hacking AWS do zero ao hero com htARTE (HackTricks AWS Red Team Expert)! Outras maneiras de apoiar o HackTricks: * Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.