A fixação de certificado é uma camada extra de segurança para obter proteção contra intermediários. Ele garante que apenas Autoridades de Certificação (CA) certificadas possam assinar certificados para o seu domínio, e não qualquer CA no armazenamento do seu navegador.
Os desenvolvedores de aplicativos implementam a fixação de certificados para evitar engenharia reversa, permitindo que os desenvolvedores especifiquem em qual certificado o aplicativo pode confiar. Em vez de confiar no armazenamento de certificados.
Analisando o código-fonte para fixação SSL
Procurando por strings como “checkClientTrusted” ou “checkServerTrusted“, mostraria um pedaço de código com fixação.
Se o código não estiver ofuscado, modificaremos o código para se livrar da fixação, recompilaremos e assinaremos com o APKTOOL.
Além disso, você pode fazer uma análise estática com uma estrutura de segurança como MOBSF, se encontrar “Arquivos de certificado/chave codificados dentro do aplicativo” ou “Keystore codificado encontrado”então ele tem fixação SSL.
Leia também Lista de verificação completa de testes de penetração do Android
Ignorar fixação SSL
Para desabilitar a promessa, queremos descompilar o arquivo do aplicativo e encontrar o método vinculado para fixar o controle e remover a verificação. O objetivo final é fazer com que o cliente aceite seu próprio certificado SSL como válido.
Estamos usando um aplicativo Android em nosso cenário, se você tiver o dispositivo enraizado, poderá usar os módulos do Xposed Framework disponíveis para desativar a fixação SSL. É um método muito simples e direto.
Mas a melhor maneira é realizar uma revisão manual desmontando o apk. Você precisará localizar onde, dentro do pequeno código-fonte, as verificações de fixação do certificado são feitas.
$ apktool -d teste.apk
Pesquisando no código pequeno por palavras-chave como “X509TrustManager”, “cert”, “pinning”, para descobrir onde o login de fixação do certificado está palavras-chave como “X509TrustManager”, “cert”, “pinning”, etc, para descobrir onde está o certificado a fixação do login é executada.
Depois de terminar de modificar o código, é necessário compilar e renunciar ao aplicativo com um certificado de desenvolvedor. O certificado de assinatura de código aqui fornece integridade e garante que o aplicativo não seja adulterado.
$ apktool b teste/ -o exemplo.modificado.apk
Depois disso, o aplicativo precisa apenas ser reinstalado no dispositivo e testado. Uma vez instalado, o aplicativo ainda funciona, como suposto, no entanto, está atualmente sujeito a um ataque man-in-the-middle como resultado do certificado fixado ter sido ignorado.
Ignorar a fixação de certificados de qualquer uma dessas formas permite que você conduza efetivamente um ataque man-in-the-middle nos aplicativos que são protegidos com HTTPS e SSL, tendo a capacidade de interceptar tokens de sessão e até mesmo ver nomes de usuários e senhas em texto simples em uma ferramenta como uma suíte para arrotar ou violinista.
Mitigação – Ignorar SSL
O certificado tende a expirar de acordo com o fórum CAB. Os certificados CA não serão emitidos por um período máximo de 3 anos. Portanto, você deve planejar uma atualização do aplicativo com um certificado atualizado.
Devemos implementar métodos de ofuscação para evitar que nosso código-fonte seja descompilado. Você pode enviar um aplicativo para empresas de pentesting para análise de código-fonte.