iOS Testing Environment

Support HackTricks

Apple Developer Program

Uma identidade de provisionamento é uma coleção de chaves públicas e privadas associadas a uma conta de desenvolvedor Apple. Para assinar aplicativos, você precisa pagar 99$/ano para se registrar no Apple Developer Program 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 --> Preferences --> Accounts --> + (Adicionar novo Apple ID com suas credenciais) --> Clique no Apple ID criado --> Manage Certificates --> + (Apple Development) --> Done __Então, para executar seu aplicativo no seu iPhone, você precisa primeiro indicar ao iPhone para confiar no computador. Depois, você pode tentar executar o aplicativo no celular a partir do Xcode, mas um erro aparecerá. Então vá para Settings --> General --> Profiles and Device Management --> Selecione o perfil não confiável e clique em "Trust".

Note que aplicativos assinados pelo mesmo certificado de assinatura podem compartilhar recursos de maneira segura, como itens do keychain.

Os perfis de provisionamento são armazenados dentro do telefone em /Library/MobileDevice/ProvisioningProfiles

Simulator

Note que um simulador não é o mesmo que um emulador. O simulador apenas simula o comportamento e as funções do dispositivo, mas não os utiliza realmente.

Simulator

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 suportar um aplicativo iOS são apenas oficialmente suportadas no Mac OS. A ferramenta de fato da Apple para criar/debugar/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 loja de aplicativos oficial. Outras versões podem conter malware.

Os arquivos do simulador podem ser encontrados em /Users/<username>/Library/Developer/CoreSimulator/Devices

Para abrir o simulador, execute o Xcode, depois pressione na aba Xcode --> Open Developer tools --> Simulator __Na imagem a seguir, clicando em "iPod touch [...]" você pode selecionar outro dispositivo para testar:

Applications in the Simulator

Dentro de /Users/<username>/Library/Developer/CoreSimulator/Devices, você pode encontrar todos os simuladores instalados. Se você quiser 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:

xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)

Uma vez que você conhece o UID, os aplicativos instalados dentro dele podem ser encontrados em /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application

No entanto, surpreendentemente, você não encontrará o aplicativo aqui. Você precisa acessar /Users/<username>/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 disponível publicamente. É uma solução SaaS empresarial com um modelo de licença por usuário e não oferece nenhuma licença de teste.

Jailbeaking

A Apple exige estritamente que o código executado 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 impostos pelo sistema operacional. Portanto, uma vez que o dispositivo é jailbroken, a verificação de integridade responsável por verificar a instalação de aplicativos é corrigida, de modo que é contornada.

Ao contrário do Android, você não pode mudar para "Modo Desenvolvedor" no iOS para executar código não assinado/não confiável no dispositivo.

Rooting Android vs. Jailbreaking iOS

Embora frequentemente comparados, rooting no Android e jailbreaking no iOS são processos fundamentalmente diferentes. O rooting de dispositivos Android pode envolver instalar o binário su ou substituir o sistema por um ROM personalizado com root, o que não requer necessariamente 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.

Em contraste, dispositivos iOS não podem flashar ROMs personalizadas devido à restrição do bootloader de apenas inicializar imagens assinadas pela Apple. Jailbreaking 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 iOS está se tornando cada vez mais difícil, pois a Apple corrige vulnerabilidades rapidamente. Fazer downgrade do 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. Este mecanismo, conhecido como "janela de assinatura", limita a capacidade de armazenar e usar posteriormente pacotes de firmware OTA. O site de Downloads IPSW é um recurso para verificar as janelas de assinatura atuais.

Variedades de Jailbreak

  • Jailbreaks tethered requerem uma conexão com o computador para cada reinicialização.

  • Jailbreaks semi-tethered permitem inicializar em modo não jailbroken sem um computador.

  • Jailbreaks semi-untethered requerem re-jailbreaking manual sem precisar 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?, The iPhone Wiki e Reddit Jailbreak fornecem informações atualizadas. Exemplos incluem:

  • Checkra1n para dispositivos com chip A7-A11.

  • Palera1n para dispositivos Checkm8 (A8-A11) no iOS 15.0-16.5.

  • Unc0ver para versões do iOS até 14.8.

Modificar seu dispositivo traz riscos, e o jailbreaking deve ser abordado com cautela.

Benefícios e Riscos do Jailbreaking

O jailbreaking remove o sandboxing imposto pelo OS, 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 regulares, o jailbreaking não é recomendado devido a potenciais riscos de segurança e instabilidade do dispositivo.

Após o Jailbreaking

iOS Basic Testing Operations

Detecção de Jailbreak

Vários aplicativos tentarão detectar se o celular está jailbroken e, nesse caso, o aplicativo não será executado

  • Após o jailbreaking, arquivos e pastas do iOS são geralmente instalados, estes podem ser pesquisados para determinar se o dispositivo está jailbroken.

  • Em um dispositivo jailbroken, os aplicativos obtêm acesso de leitura/gravação a novos arquivos fora do sandbox.

  • Algumas chamadas de API comportar-se-ão de maneira diferente.

  • A presença do serviço OpenSSH.

  • Chamar /bin/sh retornará 1 em vez de 0.

Mais informações sobre como detectar jailbreaking aqui.

Você pode tentar evitar essas detecções usando o comando ios jailbreak disable do objection

Bypass de Detecção de Jailbreak

  • Você pode tentar evitar essas detecções usando o comando 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 ‘Search’

Referências

Support HackTricks

Last updated