MASTG-TECH-0061: Despejo de Dados da KeyChain
O despejo de dados do KeyChain pode ser realizado com múltiplas ferramentas, mas nem todas funcionarão em qualquer versão do iOS. Como é mais comum, experimente as diferentes ferramentas ou consulte sua documentação para informações sobre as versões mais recentes compatíveis.
Objection (Com Jailbreak / Sem Jailbreak)¶
Os dados do KeyChain podem ser facilmente visualizados usando o Objection. Primeiro, conecte o objection ao aplicativo iGoat-Swift conforme descrito em "Ferramentas Recomendadas - Objection". Em seguida, use o comando ios keychain dump para obter uma visão geral do keychain:
$ objection --gadget="iGoat-Swift" explore
... [usb] # ios keychain dump
...
Nota: Você pode ser solicitado a autenticar usando o código de acesso do dispositivo ou TouchID
Salve a saída adicionando `--json keychain.json` a este comando
Despejando o keychain do iOS...
Criado Acessível ACL Tipo Conta Serviço Dados
------------------------- ------------------------------ ----- -------- ------------------- -------------------------- ----------------------------------------------------------------------
2019-06-06 10:53:09 +0000 WhenUnlocked None Password keychainValue com.highaltitudehacks.dvia mypassword123
2019-06-06 10:53:30 +0000 WhenUnlockedThisDeviceOnly None Password SCAPILazyVector com.toyopagroup.picaboo (falha ao decodificar)
2019-06-06 10:53:30 +0000 AfterFirstUnlockThisDeviceOnly None Password fideliusDeviceGraph com.toyopagroup.picaboo (falha ao decodificar)
2019-06-06 10:53:30 +0000 AfterFirstUnlockThisDeviceOnly None Password SCDeviceTokenKey2 com.toyopagroup.picaboo 00001:FKsDMgVISiavdm70v9Fhv5z+pZfBTTN7xkwSwNvVr2IhVBqLsC7QBhsEjKMxrEjh
2019-06-06 10:53:30 +0000 AfterFirstUnlockThisDeviceOnly None Password SCDeviceTokenValue2 com.toyopagroup.picaboo CJ8Y8K2oE3rhOFUhnxJxDS1Zp8Z25XzgY2EtFyMbW3U=
OWASP.iGoat-Swift on (iPhone: 12.0) [usb] # quit
Observe que, atualmente, as versões mais recentes do frida-server e do objection não decodificam corretamente todos os dados do keychain. Diferentes combinações podem ser testadas para aumentar a compatibilidade. Por exemplo, a saída anterior foi criada com frida-tools==1.3.0, frida==12.4.8 e objection==1.5.0.
Por fim, como o despejador do keychain é executado a partir do contexto do aplicativo, ele imprimirá apenas os itens do keychain que podem ser acessados pelo aplicativo e não todo o keychain do dispositivo iOS.
Grapefruit (Com Jailbreak / Sem Jailbreak)¶
Com Grapefruit é possível acessar os dados do keychain do aplicativo selecionado. Dentro da seção Armazenamento, clique em Keychain e você poderá ver uma listagem das informações do Keychain armazenadas.

Keychain-dumper (Com Jailbreak)¶
Você pode usar Keychain-Dumper para despejar o conteúdo do KeyChain do dispositivo com jailbreak. Uma vez que estiver executando em seu dispositivo:
iPhone:~ root# /tmp/keychain_dumper
(...)
Senha Genérica
----------------
Serviço: myApp
Conta: key3
Grupo de Entitlement: RUD9L355Y.sg.vantagepoint.example
Rótulo: (null)
Campo Genérico: (null)
Dados do Keychain: SmJSWxEs
Senha Genérica
----------------
Serviço: myApp
Conta: key7
Grupo de Entitlement: RUD9L355Y.sg.vantagepoint.example
Rótulo: (null)
Campo Genérico: (null)
Dados do Keychain: WOg1DfuH
Em versões mais recentes do iOS (iOS 11 e superiores), etapas adicionais são necessárias. Consulte o README.md para mais detalhes. Observe que este binário está assinado com um certificado autoassinado que possui um entitlement "curinga". O entitlement concede acesso a todos os itens no Keychain. Se você é paranóico ou possui dados privados muito sensíveis em seu dispositivo de teste, pode querer compilar a ferramenta a partir do código-fonte e assinar manualmente os entitlements apropriados em sua compilação; as instruções para fazer isso estão disponíveis no repositório do GitHub.