O que Análise de Segurança de iOS com Objection faz?
Quando Usar
Use esta skill quando:
- Realizando avaliações de segurança em tempo de execução de aplicativos iOS durante testes de penetração autorizados
- Inspecionando keychain, sistema de arquivos e memória do iOS em busca de exposição de dados sensíveis
- Desviando de controles de segurança do lado do cliente (SSL pinning, detecção de jailbreak) durante testes de segurança
- Avaliando o comportamento do aplicativo iOS em tempo de execução sem acesso ao código-fonte
Não use esta skill em dispositivos de produção sem autorização explícita – Objection modifica o comportamento em tempo de execução do aplicativo e pode acionar monitoramento de segurança.
Pré-requisitos
- Python 3.10+ com pip
- Objection instalado:
pip install objection - Frida instalado:
pip install frida-tools - Dispositivo iOS alvo (com jailbreak e servidor Frida, ou sem jailbreak com IPA repackaged)
- Para sem jailbreak:
objection patchipapara injetar o Frida gadget no IPA - macOS recomendado para testes iOS (Xcode, ideviceinstaller)
- Conexão USB com o dispositivo alvo ou servidor Frida em rede
Fluxo de Trabalho
Passo 1: Preparar o Ambiente de Teste
Para dispositivos com jailbreak:
# Instalar o servidor Frida no dispositivo via Cydia/Sileo
# SSH para o dispositivo e iniciar o servidor Frida
ssh root@<device_ip> "/usr/sbin/frida-server -D"
# Verificar conectividade com Frida
frida-ps -U # Listar processos no dispositivo conectado via USB
Para dispositivos sem jailbreak (teste autorizado):
# Aplicar patch no IPA com Frida gadget
objection patchipa --source target.ipa --codesign-signature "Apple Development: [email protected]"
# Instalar o IPA com patch
ideviceinstaller -i target-patched.ipa
Passo 2: Anexar Objection ao Aplicativo Alvo
# Anexar a um aplicativo em execução pelo bundle ID
objection --gadget "com.target.app" explore
# Ou iniciar o aplicativo do zero
objection --gadget "com.target.app" explore --startup-command "ios hooking list classes"
Uma vez anexado, o Objection fornece um REPL interativo para exploração em tempo de execução.
Passo 3: Avaliar Segurança do Armazenamento de Dados (MASVS-STORAGE)
# Despejar itens do iOS Keychain acessíveis ao aplicativo
ios keychain dump
# Listar arquivos no sandbox do aplicativo
ios plist cat Info.plist
env # Mostrar caminhos do ambiente do aplicativo
# Inspecionar NSUserDefaults em busca de dados sensíveis
ios nsuserdefaults get
# Listar bancos de dados SQLite
sqlite connect app_data.db
sqlite execute query "SELECT * FROM credentials"
# Verificar dados sensíveis na área de transferência
ios pasteboard monitor
Passo 4: Avaliar Segurança de Rede (MASVS-NETWORK)
# Desabilitar fixação de certificados SSL/TLS
ios sslpinning disable
# Verificar se o bypass foi bem-sucedido observando o tráfego no Burp Suite
# Monitorar chamadas de métodos de classes relacionadas à rede
ios hooking watch class NSURLSession
ios hooking watch class NSURLConnection
Passo 5: Inspecionar Autenticação e Autorização (MASVS-AUTH)
# Listar todas as classes Objective-C
ios hooking list classes
# Pesquisar classes relacionadas a autenticação
ios hooking search classes Auth
ios hooking search classes Login
ios hooking search classes Token
# Hook em métodos de autenticação para observar parâmetros
ios hooking watch method "+[AuthManager validateToken:]" --dump-args --dump-return
# Monitorar chamadas de autenticação biométrica
ios hooking watch class LAContext
Passo 6: Avaliar Proteções Binárias (MASVS-RESILIENCE)
# Verificar implementação de detecção de jailbreak
ios jailbreak disable
# Simular bypass de detecção de jailbreak
ios jailbreak simulate
# Listar frameworks e bibliotecas carregados
memory list modules
# Pesquisar strings sensíveis na memória
memory search "password" --string
memory search "api_key" --string
memory search "Bearer" --string
# Despejar regiões específicas de memória
memory dump all dump_output/
Passo 7: Revisar Interação com a Plataforma (MASVS-PLATFORM)
# Listar esquemas de URL registrados pelo aplicativo
ios info binary
ios bundles list_frameworks
# Hook em manipuladores de esquemas de URL
ios hooking watch method "-[AppDelegate application:openURL:options:]" --dump-args
# Monitorar acesso à área de transferência
ios pasteboard monitor
# Verificar restrições de teclado personalizado
ios hooking search classes UITextField
Conceitos-chave
| Termo | Definição |
|---|---|
| Objection | Kit de ferramentas de exploração móvel em tempo de execução construído sobre o Frida que fornece scripts pré-construídos para tarefas comuns de teste de segurança |
| Frida Gadget | Biblioteca compartilhada injetada no processo do aplicativo para permitir instrumentação com Frida sem jailbreak |
| Keychain | Sistema de armazenamento seguro de credenciais do iOS; Objection pode despejar itens acessíveis ao grupo de acesso ao keychain do aplicativo alvo |
| Bypass de SSL Pinning | Modificação em tempo de execução da lógica de validação de certificados para permitir a interceptação de tráfego HTTPS por proxy |
| Hooking de Métodos | Interceptação de chamadas de métodos Objective-C/Swift em tempo de execução para observar argumentos, valores de retorno e modificar comportamento |
Ferramentas e Sistemas
- Objection: Kit de ferramentas de exploração de segurança móvel de alto nível baseado em Frida com comandos pré-construídos
- Frida: Framework de instrumentação dinâmica que permite injeção de JavaScript em processos nativos de aplicativos
- Frida-tools: Utilitários de linha de comando para Frida, incluindo frida-ps, frida-trace e frida-discover
- ideviceinstaller: Ferramenta multiplataforma para instalar/gerenciar aplicativos iOS via USB
- Burp Suite: Proxy HTTP para interceptar tráfego após o bypass de SSL pinning
Armadilhas Comuns
- O aplicativo trava ao anexar: Alguns aplicativos implementam detecção de Frida. Use
--startup-commandpara hook em verificações anti-Frida no início do ciclo de vida do aplicativo. - Escopo de acesso ao Keychain: O Objection só pode despejar itens do keychain dentro do grupo de acesso do aplicativo. Itens do keychain do sistema exigem ferramentas separadas de nível de jailbreak.
- Mangling de nomes Swift: Nomes de métodos Swift são modificados em tempo de execução. Use
ios hooking list classescom grep para encontrar nomes demangled. - Alterações não persistentes: Todas as modificações do Objection são apenas em tempo de execução e são redefinidas ao reiniciar o aplicativo. Documente as descobertas imediatamente.