hacktricks/mobile-pentesting/ios-pentesting/ios-testing-environment.md

10 KiB
Raw Blame History

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:

Programa de Desenvolvedor da 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 da 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 às suas credenciais) --> Clique no ID Apple criado --> Gerenciar Certificados --> + (Desenvolvimento da 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 Configurações --> 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 suas funções, mas não as 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/<username>/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:

Aplicativos no Simulador

Dentro de /Users/<username>/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 deles 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 publicamente disponível. É uma solução SaaS empresarial com um modelo de licença por usuário e não oferece nenhum teste gratuito.

Jailbreaking

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 impostos 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 inicializar apenas 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 é 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?, 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 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 {% 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 jailbreaking de um iOS, arquivos e pastas geralmente são instalados, os quais 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.

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