Bypass Root Detection e SSL Pinning com Frida, MITMProxy e Burp Suite

Em alguns cenários de pentest mobile, encontramos o aplicativo com detecção de root e proteção contra a interceptação da comunicação usando SSL Pinning. Nesses casos, a simples configuração do certificado do Burp Suite no dispositivo e o uso de scripts do Frida não permitem o bypass do "anti-root" e do SSL Pinning. 

No entanto, é possível fazer o bypass dessas proteções fazendo a seguinte configuração: 

  • MITMProxy como o proxy que vai interceptar a comunicação
  • Frida Interception and Unpinning é uma suite de scripts com configuração para interceptar e fazer o bypass do SSL Pining e "Anti-root detection"
  • Upstream Proxy configurado no MITMProxy
  • Burp Suite como o proxy Upstream
Configurando o certificado do MITMProxy

Os binários do MITMProxy para Linux podem ser baixados no site oficial: https://mitmproxy.org/

Inicie o MITMProxy com o comando ./mitmproxy e configure no telefone o endereço e porta dessa ferramenta. Em seguida, acesse http://mitm.it para fazer o download do certificado, e instale no dispositivo móvel. 

O certificado pode ser encontrado em Biometria e segurança > Exibir certificado de segurança > Usuário ou Exibir certificado de segurança > Certificados do usuário



Configurando o Frida Interception and Unpinning

O download desta ferramenta pode ser feito no github oficial: 

Depois do download, acesse o arquivo config.js e configure o certificado do MITMProxy, o endereço e a porta que serão usados para interceptar a comunicação do aplicativo. 



Configurando o Burp Suite

No Burp Suite, use uma porta diferente (Ex.: 8082), e o mesmo endereço pode ser mantido. Essa configuração será usada como proxy em modo Upstream pelo MITMProxy. 



Script Frida - Anti-Root 

O script para fazer o bypass da detecção de root pode ser encontrado no repositório oficial da ferramenta Frida: https://codeshare.frida.re/browse. Neste exemplo, usei o script fridantiroot.js 

Executando o bypass 

Caso o proxy MITMProxy esteja ativo, interrompa sua execução e reinicie com o comando abaixo para direcionar o tráfego do aplicativo para o Burp Suite, usando o MITMProxy como intermediário. 

mitmproxy --mode upstream:http://[IP]:8082 --ssl-insecure


Em seguida, execute o comando abaixo para fazer o bypass da detecção de root e ssl pinning usando o Frida Inteception and Unpinning. 

frida -U \

-l ./config.js \

-l ./native-connect-hook.js \

-l ./native-tls-hook.js \

-l ./android/android-proxy-override.js \

-l ./android/android-system-certificate-injection.js \

-l ./android/android-certificate-unpinning.js \

-l ./android/android-certificate-unpinning-fallback.js \

-l ./fridantiroot.js \

-f [Nome-do-Pacote]

Com essa configuração é possível interceptar a comunicação de um aplicativo através do bypass das proteções "Anti-root" e SSL Pinning usando o MITMProxy como principal e o Burp Suite como proxy Upstream. 

Comentários

Postagens mais visitadas