Skip to content

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.