Bypass SSL Pinning

14:11 Adriano Rocha 0 Comentarios






Tendo em vista a LGPD e a grande utilização de apps, a preocupação com os dados trafegando numa rede só aumentam. A situação fica ainda mais preocupante porque os dados podem ser interceptados por um atacante utilizando a técnica do MITM (Man in the Middle), tema já abordado no Labs.

Normalmente, uma aplicação confia em certificados do tipo custom que permite a interceptação do tráfego de informações. Porém, quando o SSL Pinning é implementado, a aplicação não confia mais em certificados customizados ou auto-assinados, e também não permite que ferramentas de proxy interceptem o trafego. Ao configurar o pinning, é permitido que a aplicação apenas confie nos certificados ou chaves-publicas pré-definidos ou validados.

Formas de Bypass


Utilizando ferramentas automatizadas, é possível “bypassar” o SSL Pinning, especialmente se ele não estiver configurado ou implementado corretamente. Por outro lado, caso o código do app esteja ofuscado e o pinning esteja bem escondido, fica mais difícil que uma ferramenta ou framework o encontre. Além do mais, muitas tools requerem que o device esteja como root.

Pela engenharia reversa (como modificar os arquivos .smali), ao analisar como a aplicação funciona e foi desenvolvida, pode-se usar uma ferramenta como Apktool para “descompilar” o app e analisar os diretórios, como .li, .smali, .assets etc. Se o atacante encontrar o Pinning, pode utilizá-lo para alterar a validação ou mesmo a checagem de certificados confiáveis. Feito isso, o atacante recompila o código e assina a aplicação com sua própria chave privada.

Também é possível utilizar uma técnica chamada de hooking, que é usada para modificar ou adulterar a aplicação durante sua execução. Um framework bastante conhecido que executa essa tarefa é o Frida, que permite interceptar dados recebidos e enviados pelo app e ainda injetar o seu próprio código durante o processo. O comando utilizado na ferramenta para Android seria algo do tipo:

Frida –U –f com.siteblindado.app –l c:\frida\seuscript.js --no-paus

Caso o script esteja certo e obtenha sucesso, um atacante poderá interceptar o trafego de dados.


Como se prevenir?

É possível mitigar o bypass do pinning SSL utilizando conexão SSL com autenticação mútua (two-way authentication) entre cliente e servidor, entretanto, esta forma tende a ser complexa.
Um método mais simples é configurar o Pinning tanto do certificado quanto da chave pública, fazendo com que, quando a aplicação se comunicar com o servidor, a mesma analise se aquele determinado código corresponde ao que está presente no certificado, evitando, assim, que sejam utilizados certificados auto assinados. É o método mais usual, que, agregado a um código ofuscado, dificulta o Bypass.    


Referências:


0 comentários: