Operações Básicas de Teste no iOS
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Resumo da Identificação e Acesso de Dispositivos iOS
Identificando o UDID de um Dispositivo iOS
Para identificar um dispositivo iOS de forma única, é usada uma sequência de 40 dígitos conhecida como UDID. No macOS Catalina ou versões mais recentes, isso pode ser encontrado no Finder app, já que o iTunes não está mais presente. O dispositivo, uma vez conectado via USB e selecionado no Finder, revela seu UDID entre outras informações ao clicar nos detalhes sob seu nome.
Para versões do macOS anteriores ao Catalina, o iTunes facilita a descoberta do UDID. Instruções detalhadas podem ser encontradas here.
Ferramentas de linha de comando oferecem métodos alternativos para recuperar o UDID:
- Usando a ferramenta I/O Registry Explorer
ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Usando
ideviceinstallerpara macOS (e Linux):
$ brew install ideviceinstaller
$ idevice_id -l
- Utilizando
system_profiler:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Empregando
instrumentspara listar dispositivos:
$ instruments -s devices
Acessando o Shell do Dispositivo
Acesso SSH é ativado instalando o pacote OpenSSH após o jailbreak, permitindo conexões via ssh root@<device_ip_address>. É crucial alterar as senhas padrão (alpine) dos usuários root e mobile para proteger o dispositivo.
SSH over USB torna-se necessário na ausência de Wi-Fi, usando iproxy para mapear portas do dispositivo para conexões SSH. Essa configuração permite acesso SSH através do USB executando:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
Aplicativos de shell no dispositivo, como NewTerm 2, facilitam a interação direta com o dispositivo, especialmente úteis para solução de problemas. Reverse SSH shells também podem ser estabelecidos para acesso remoto a partir do computador host.
Redefinindo Senhas Esquecidas
Para redefinir uma senha esquecida para o padrão (alpine), é necessário editar o arquivo /private/etc/master.passwd. Isso envolve substituir o hash existente pelo hash de alpine nas entradas dos usuários root e mobile.
Técnicas de Transferência de Dados
Transferindo Arquivos de Dados do App
Arquivamento e Recuperação via SSH e SCP: É simples arquivar o diretório Data do aplicativo usando tar e depois transferi-lo usando scp. O comando abaixo arquiva o diretório Data em um arquivo .tgz, que é então puxado do dispositivo:
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
Ferramentas de Interface Gráfica do Usuário
Using iFunbox and iExplorer: Essas ferramentas GUI são úteis para gerenciar arquivos em dispositivos iOS. No entanto, a partir do iOS 8.4, Apple restringiu o acesso dessas ferramentas ao sandbox da aplicação, a menos que o dispositivo esteja jailbroken.
Usando Objection para Gerenciamento de Arquivos
Interactive Shell with Objection: Ao iniciar o Objection você tem acesso ao Bundle directory de um app. A partir daqui, você pode navegar até o Documents directory do app e gerenciar arquivos, incluindo baixá-los e enviá-los para e a partir do iOS device.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Obtendo e Extraindo Apps
Adquirindo o arquivo IPA
Link de Distribuição Over-The-Air (OTA): Aplicativos distribuídos para testes via OTA podem ser baixados usando o ITMS services asset downloader tool, que é instalado via npm e usado para salvar o arquivo IPA localmente.
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
Extraindo o binário do app
- De um IPA: Descompacte o IPA para acessar o binário do app descriptografado.
- De um dispositivo Jailbroken: Instale o app e extraia o binário descriptografado da memória.
Processo de Descriptografia
Visão geral da descriptografia manual: Os binários de apps iOS são criptografados pela Apple usando FairPlay. Para realizar reverse-engineering, é necessário extrair (dump) o binário descriptografado da memória. O processo de descriptografia envolve verificar a flag PIE, ajustar flags de memória, identificar a seção criptografada e então fazer o dump e substituir essa seção pela sua forma descriptografada.
Verificando e Modificando a flag PIE:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Identificando a seção criptografada e dump da memória:
Identifique os endereços de início e fim da seção criptografada usando otool e faça o dump da memória do dispositivo jailbroken usando gdb.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Substituindo a Seção Criptografada:
Substitua a seção criptografada no binário original do app pelo dump descriptografado.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Finalizando a Descriptografia: Modifique os metadados do binário para indicar a ausência de criptografia usando ferramentas como MachOView, definindo o cryptid como 0.
Descriptografia (Automaticamente)
frida-ios-dump
A frida-ios-dump é usada para descriptografar e extrair automaticamente aplicativos de dispositivos iOS. Inicialmente, é necessário configurar dump.py para conectar ao dispositivo iOS, o que pode ser feito através de localhost na porta 2222 via iproxy ou diretamente pelo endereço IP e porta do dispositivo.
Os aplicativos instalados no dispositivo podem ser listados com o comando:
$ python dump.py -l
Para fazer o dump de um app específico, como o Telegram, o seguinte comando é usado:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Este comando inicia o app dump, resultando na criação de um arquivo Telegram.ipa no diretório atual. Este processo é adequado para dispositivos jailbroken, pois apps unsigned ou fake-signed podem ser reinstalados usando ferramentas como ios-deploy.
frida-ipa-extract
Extrator de IPA baseado em Frida para dispositivos jailbroken; usa sessões Frida via USB e SSH/SFTP opcionais para pulls mais rápidos.
- Requisitos: Python 3.9+,
frida,paramiko, dispositivo jailbroken com frida-server (OpenSSH para o modo SSH). - Configuração:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Uso:
python extract.py -U -f com.example.app -o MyApp.ipa
python extract.py -U -f com.example.app -o MyApp.ipa --sandbox --no-resume
python extract.py -H 192.168.100.32 -P 2222 -u root -p password -f com.example.app
- Opções:
-f <bundle>spawn/anexa (or--pidfor PID);-odefine o nome de saída.-Uusa USB;-H/-P/-u/-pabre um túnel SSH parafrida-server27042 e puxa via SFTP (pode combinar com-U).--sandboxdespeja a sandbox;--no-resumemantém o app suspenso para evitar travamentos e reinicializações por um processo do sistema se a sessão cair. - Solução de problemas:
Frida attach timed out→ use-for--no-resume;script has been destroyed→--no-resumeou transferência SSH;No running apps found→ inicie ou spawn o app.
flexdecrypt
A ferramenta flexdecrypt, junto com seu wrapper flexdump, permite a extração de arquivos IPA de aplicações instaladas. Os comandos de instalação para flexdecrypt no dispositivo incluem baixar e instalar o pacote .deb. flexdump pode ser usado para listar e fazer dump dos apps, como mostrado nos comandos abaixo:
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
flexdump list
flexdump dump Twitter.app
bagbak
bagbak, outra ferramenta baseada em Frida, requer um dispositivo jailbroken para descriptografar o app:
bagbak --raw Chrome
r2flutch
r2flutch, utilizando tanto radare quanto frida, serve para decriptação e dumping de apps. Mais informações podem ser encontradas na sua GitHub page.
Instalando Apps
Sideloading refere-se à instalação de aplicativos fora da App Store oficial. Esse processo é gerenciado pelo installd daemon e exige que os apps sejam assinados com um certificado emitido pela Apple. Dispositivos jailbroken podem contornar isso através do AppSync, permitindo a instalação de pacotes IPA com assinatura falsa.
Ferramentas de Sideloading
-
Cydia Impactor: Uma ferramenta para assinar e instalar arquivos IPA no iOS e APK no Android. Guias e solução de problemas podem ser encontrados em yalujailbreak.net.
-
libimobiledevice: Uma biblioteca para Linux e macOS para comunicar-se com dispositivos iOS. Comandos de instalação e exemplos de uso para ideviceinstaller são fornecidos para instalar apps via USB.
-
ipainstaller: Esta ferramenta de linha de comando permite a instalação direta de apps em dispositivos iOS.
-
ios-deploy: Para usuários macOS, o ios-deploy instala apps iOS pela linha de comando. Descompactar o IPA e usar a flag
-mpara lançamento direto do app fazem parte do processo. -
Xcode: Utilize o Xcode para instalar apps navegando em Window/Devices and Simulators e adicionando o app em Installed Apps.
Permitir Instalação de Aplicativos em Dispositivos Não-iPad
Para instalar aplicativos específicos de iPad em iPhone ou iPod touch, o valor UIDeviceFamily no arquivo Info.plist precisa ser alterado para 1. Essa modificação, entretanto, requer re-signing do arquivo IPA devido às verificações de validação de assinatura.
Nota: Esse método pode falhar se o aplicativo exigir capacidades exclusivas de modelos mais recentes de iPad enquanto for usado em um iPhone ou iPod touch mais antigo.
References
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/
- frida-ipa-extract
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


