MASTG-TECH-0052: Acessando o Shell do Dispositivo
Uma das atividades mais comuns ao testar um aplicativo é acessar o shell do dispositivo. Nesta seção, veremos como acessar o shell do iOS remotamente a partir do seu computador host (com ou sem cabo USB) e localmente a partir do próprio dispositivo.
Shell Remoto¶
Em contraste com o Android, onde você pode acessar facilmente o shell do dispositivo usando a ferramenta adb, no iOS você só tem a opção de acessar o shell remoto via SSH. Isso também significa que seu dispositivo iOS deve estar com jailbreak para que você possa conectar-se ao seu shell a partir do seu computador host. Para esta seção, assumimos que você fez o jailbreak corretamente do seu dispositivo e tem Sileo ou o Zebra instalado. No restante do guia, faremos referência ao Sileo, mas os mesmos pacotes devem estar disponíveis no Zebra.

Para habilitar o acesso SSH ao seu dispositivo iOS, você pode instalar o pacote OpenSSH. Após a instalação, certifique-se de conectar ambos os dispositivos à mesma rede Wi-Fi e anote o endereço IP do dispositivo, que você pode encontrar no menu Configurações → Wi-Fi, tocando uma vez no ícone de informações da rede à qual você está conectado.
Agora você pode acessar o shell remoto do dispositivo executando ssh root@<endereço_ip_do_dispositivo>, que fará o login como usuário root:
$ ssh root@192.168.197.234
root@192.168.197.234's password:
iPhone:~ root#
Pressione Control + D ou digite exit para sair.
Ao acessar seu dispositivo iOS via SSH, considere o seguinte:
- Os usuários padrão são
rootemobile. - A senha padrão para ambos é
alpine.
Lembre-se de alterar a senha padrão para os usuários
rootemobile, pois qualquer pessoa na mesma rede pode descobrir o endereço IP do seu dispositivo e conectar-se usando a senha padrão conhecida, o que lhes dará acesso root ao seu dispositivo.
Se você esquecer sua senha e quiser redefini-la para o padrão alpine:
- Edite o arquivo
/private/etc/master.passwordno seu dispositivo iOS com jailbreak (usando um shell no dispositivo, como mostrado abaixo) - Encontre as linhas:
root:xxxxxxxxx:0:0::0:0:System Administrator:/var/root:/bin/sh
mobile:xxxxxxxxx:501:501::0:0:Mobile User:/var/mobile:/bin/sh
- Altere
xxxxxxxxxpara/smx7MYTQIi2M(que é a senha hashadaalpine) - Salve e saia
Conectar-se a um Dispositivo via SSH por USB¶
Durante um teste real de caixa preta, uma conexão Wi-Fi confiável pode não estar disponível. Nessa situação, você pode usar Usbmuxd para conectar-se ao servidor SSH do dispositivo via USB.
Conecte o macOS a um dispositivo iOS instalando e iniciando iproxy:
$ iproxy 2222 22
waiting for connection
O comando acima mapeia a porta 22 no dispositivo iOS para a porta 2222 no localhost. Você também pode fazer o iproxy executar automaticamente em segundo plano se não quiser executar o binário toda vez que desejar usar SSH via USB.
Com o seguinte comando em uma nova janela do terminal, você pode conectar-se ao dispositivo:
$ ssh -p 2222 mobile@localhost
mobile@localhost's password:
iPhone:~ mobile%
Aplicativo de Shell no Dispositivo¶
Embora geralmente o uso de um shell no dispositivo (emulador de terminal) possa ser muito tedioso em comparação com um shell remoto, ele pode ser útil para depuração em caso de, por exemplo, problemas de rede ou para verificar alguma configuração. Por exemplo, você pode instalar o NewTerm 2 via Sileo para esse fim (ele é compatível com iOS 10.0 a 16.2 no momento desta escrita).
Além disso, existem alguns jailbreaks que explicitamente desativam o SSH de entrada por motivos de segurança. Nesses casos, é muito conveniente ter um aplicativo de shell no dispositivo, que você pode usar para primeiro sair do dispositivo via SSH com um reverse shell e, em seguida, conectar-se a partir do seu computador host.
A abertura de um reverse shell via SSH pode ser feita executando o comando ssh -R <porta_remota>:localhost:22 <usuário>@<ip_do_computador_host>.
No aplicativo de shell no dispositivo, execute o seguinte comando e, quando solicitado, insira a senha do usuário mstg do computador host:
ssh -R 2222:localhost:22 mstg@192.168.197.235
No seu computador host, execute o seguinte comando e, quando solicitado, insira a senha do usuário root do dispositivo iOS:
ssh -p 2222 root@localhost