13 KiB
Operações Básicas de Teste no 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 Verifique os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os 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, é usado uma sequência de 40 dígitos conhecida como UDID. No macOS Catalina ou mais recente, isso pode ser encontrado no aplicativo Finder, pois 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, quando os detalhes sob seu nome são clicados.
Para versões do macOS anteriores ao Catalina, o iTunes facilita a descoberta do UDID. Instruções detalhadas podem ser encontradas aqui.
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
ideviceinstaller
no 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:"
- Utilizando
instruments
para listar dispositivos:
$ instruments -s devices
Acessando o Shell do Dispositivo
O acesso SSH é habilitado instalando o pacote OpenSSH pós-jailbreak, permitindo conexões via ssh root@<device_ip_address>
. É crucial alterar as senhas padrão (alpine
) para os usuários root
e mobile
para garantir a segurança do dispositivo.
O SSH via USB se torna necessário na ausência de Wi-Fi, utilizando iproxy
para mapear as portas do dispositivo para conexões SSH. Essa configuração permite o acesso SSH através de USB executando:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
Aplicativos de shell no dispositivo, como o NewTerm 2, facilitam a interação direta com o dispositivo, especialmente útil para solução de problemas. As conchas SSH reversas também podem ser estabelecidas para acesso remoto a partir do computador host.
Redefinindo Senhas Esquecidas
Para redefinir uma senha esquecida de volta para o padrão (alpine
), é necessário editar o arquivo /private/etc/master.passwd
. Isso envolve substituir o hash existente pelo hash para alpine
ao lado das entradas de usuário root
e mobile
.
Técnicas de Transferência de Dados
Transferindo Arquivos de Dados do Aplicativo
Arquivamento e Recuperação via SSH e SCP: É simples arquivar o diretório de Dados do aplicativo usando tar
e depois transferi-lo usando scp
. O comando abaixo arquiva o diretório de Dados em um arquivo .tgz, que é então transferido 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
Usando iFunbox e iExplorer: Essas ferramentas de GUI são úteis para gerenciar arquivos em dispositivos iOS. No entanto, a partir do iOS 8.4, a Apple restringiu o acesso dessas ferramentas ao sandbox do aplicativo, a menos que o dispositivo esteja jailbroken.
Usando Objection para Gerenciamento de Arquivos
Shell Interativo com Objection: Iniciar o objection fornece acesso ao diretório Bundle de um aplicativo. A partir daqui, você pode navegar até o diretório Documents do aplicativo e gerenciar arquivos, incluindo o download e upload deles de e para o dispositivo iOS.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Obtaining and Extracting Apps
Obtaining the IPA File
Link de Distribuição Over-The-Air (OTA): Apps distribuídos para teste via OTA podem ser baixados usando a ferramenta de download de ativos de serviços ITMS, que é instalada via npm e usada 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 Aplicativo
- De um IPA: Descompacte o IPA para acessar o binário do aplicativo descriptografado.
- De um Dispositivo com Jailbreak: Instale o aplicativo e extraia o binário descriptografado da memória.
Processo de Descriptografia
Visão Geral da Descriptografia Manual: Os binários de aplicativos iOS são criptografados pela Apple usando o FairPlay. Para fazer engenharia reversa, é necessário extrair o binário descriptografado da memória. O processo de descriptografia envolve verificar a flag PIE, ajustar as flags de memória, identificar a seção criptografada e, em seguida, extrair e substituir essa seção por 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
Identificação da Seção Criptografada e Despejo de Memória:
Determine o início e o fim dos endereços da seção criptografada usando otool
e faça o despejo da memória do dispositivo com jailbreak usando gdb.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Sobrescrevendo a Seção Criptografada:
Substitua a seção criptografada no binário do aplicativo original pelo despejo 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 ferramenta frida-ios-dump é utilizada para descriptografar e extrair aplicativos automaticamente de dispositivos iOS. Inicialmente, é necessário configurar o dump.py
para se conectar ao dispositivo iOS, o que pode ser feito através do localhost na porta 2222 via iproxy ou diretamente através do endereço IP e porta do dispositivo.
As aplicações instaladas no dispositivo podem ser listadas com o comando:
$ python dump.py -l
Para fazer dump de um aplicativo específico, como o Telegram, o seguinte comando é utilizado:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Este comando inicia o despejo do aplicativo, resultando na criação de um arquivo Telegram.ipa
no diretório atual. Este processo é adequado para dispositivos com jailbreak, pois aplicativos não assinados ou falsamente assinados podem ser reinstalados usando ferramentas como ios-deploy.
flexdecrypt
A ferramenta flexdecrypt, juntamente com seu wrapper flexdump, permite a extração de arquivos IPA de aplicativos instalados. Os comandos de instalação para o flexdecrypt no dispositivo incluem o download e a instalação do pacote .deb
. O flexdump pode ser usado para listar e despejar aplicativos, conforme 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 com jailbreak para descriptografia de aplicativos:
bagbak --raw Chrome
r2flutch
r2flutch, utilizando tanto o radare quanto o frida, serve para descriptografar e extrair aplicativos. Mais informações podem ser encontradas em sua página do GitHub.
Instalando Aplicativos
Sideloading refere-se à instalação de aplicativos fora da App Store oficial. Esse processo é gerenciado pelo daemon installd e requer que os aplicativos sejam assinados com um certificado emitido pela Apple. Dispositivos com jailbreak podem contornar isso através do AppSync, permitindo a instalação de pacotes IPA falsamente assinados.
Ferramentas de Sideloading
-
Cydia Impactor: Uma ferramenta para assinar e instalar arquivos IPA no iOS e arquivos APK no Android. Guias e solução de problemas podem ser encontrados em yalujailbreak.net.
-
libimobiledevice: Uma biblioteca para Linux e macOS para se comunicar com dispositivos iOS. Comandos de instalação e exemplos de uso para ideviceinstaller são fornecidos para instalar aplicativos via USB.
-
ipainstaller: Esta ferramenta de linha de comando permite a instalação direta de aplicativos em dispositivos iOS.
-
ios-deploy: Para usuários do macOS, o ios-deploy instala aplicativos iOS a partir da linha de comando. Descompactar o IPA e usar a flag
-m
para o lançamento direto do aplicativo fazem parte do processo. -
Xcode: Utilize o Xcode para instalar aplicativos navegando até Window/Devices and Simulators e adicionando o aplicativo em Installed Apps.
Permitir a Instalação de Aplicativos em Dispositivos Não-iPad
Para instalar aplicativos específicos para iPad em dispositivos iPhone ou iPod touch, o valor UIDeviceFamily no arquivo Info.plist precisa ser alterado para 1. Essa modificação, no entanto, requer a reassinatura do arquivo IPA devido às verificações de validação de assinatura.
Nota: Este método pode falhar se o aplicativo exigir capacidades exclusivas de modelos de iPad mais recentes ao usar um iPhone ou iPod touch mais antigo.
Referências
- 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/
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os repositórios do HackTricks e HackTricks Cloud github.