Giter Club home page Giter Club logo

xamarin_sslunpinning's Introduction

Xamarin SSL Unpinning

Este projeto visa realizar o Bypass de SSL Pinning no Android Xamarin

Treinamentos especializados

Deseja aprender de forma definitiva como realizar um Teste de invasão (Pentest) em dispositivos móveis Android? Verifique o treinamento da Sec4US de Hacking Mobile Application - Android em https://sec4us.com.br/treinamentos/hacking-mobile-application-android/

Metodologias

Devido a arquitetura do Android Xamarin e do método utilizado para Bypass, por padrão, ao realizar o Bypass perde-se também a confoguração de proxy. Então neste procedimento temos duas metodologias de realização do SSL Unpinning:

  1. Utilização de scripts frida com DLL .NET (com proxy)
  2. Utilização somente de scripts frida (sem proxy)

Nota: Apesar de nativamente ser sem proxy vou demonstrar como utilizar o Iptables p/ realizar o proxy.

Método 1: Utilização de scripts frida com DLL .NET

Para este método foi desenvolvido uma DLL que realiza o bypass e adicionalmente configura o proxy para que o tráfego seja encaminhado para o Burp

Enviando a DLL para o Android

O primeiro passo é enviar a DLL para o dispositivo android

adb push SSLBypass.dll /data/local/tmp/ 

Ajustando o script Frida

Para o correto funcionamento edite as linhas abaixo dentro do script para corresponder ao endereço IP/porta do seu Burp, bem como o caminho completo da DLL dentro do Android.

const proxy_addr = "http://192.168.5.158:8080";
const dll_path = "/data/local/tmp/SSLBypass.dll";

Execução Script frida

frida -U -f [app_id] -l xamarin-sslbypass_proxy.js --no-pause

Método 2: Utilização somente de scripts frida

Neste método utilizaremos somente script frida para realizar o Unpinning. Porém neste método o aplicativo perde toda a configuração do proxy, sendo assim necessitaremos utilizar o ADB + Iptables para direcionar todo op tráfego HTTP e HTTPS para o burp.

Direcionando tráfego para o Burp

Passo 1: Proxy invisível Burp Primeiro passo a ser realizado é na configuração de proxy do Burp habilitar o modo de proxy transparente. Dentro do Burp, vá em Proxy > Options > Selecione o listener e clique em Edit navege até a aba Request handling e selecione a opção Support invisible proxying.

Passo 2: Tunnel reverso ADB Posteriormente crie um tunnel reverso TCP entre o seu dispotivido Android e sua maquina (onde está o Burp). Com este comando será aberto uma porta 8080 localmente dentro do dispositivo Android e todo o tráfego encaminhado para ela será direcionado para a porta 8080 da sua maquina (onde o comando foi executado).

adb reverse tcp:8080 tcp:8080

Passo 3: Regras IPTABLES Por fim adicione as regras iptables para direcionar todo o tráfego HTTP e HTTP p/ este tunnel reverso que encaminhará para o Burp.

# Quando o ADB está modo root
adb shell iptables -t nat -A OUTPUT -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8080
adb shell iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

# Quando o ADB está em modo usuário comum (não root)
adb shell su - -c iptables -t nat -D OUTPUT -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8080
adb shell su - -c iptables -t nat -D OUTPUT -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

Nota: Os comandos acima nada se referem a estar rodando em dispositivo rootado ou não. A referencia de modo root é para quando você executa adb shell, se ao executar o shell spawnado é diretamente com o usuário root, então vc está com o adb em modo root, caso contrário você está com o adb em modo não root, mas tem a capacidade de executar su - e escalar privilégio para root.

Execução Script frida

frida -U -f [app_id] -l xamarin-sslbypass.js --no-pause

Estudo adicional

Recomendo a leitura dos textos abaixo:

xamarin_sslunpinning's People

Contributors

helviojunior avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.