Trata-se de ignorar aplicativos Android SSL Pinning e interceptar Proxy Unaware.

Nov 27 2022
Hola H3ckers, Todos nós sabemos que há muitos artigos disponíveis para “Como interceptar o tráfego HTTPS de aplicativos Android”, então aqui não vamos abordá-los. Se você não encontrou nenhum, consulte o seguinte: Configurando um dispositivo Android para funcionar com Burp — PortSwigger Pré-requisitos: Familiarizado com o proxy BurpSuite, Petesting Android básico e ferramentas como adb, frida, Objection, aplicativo Magisk, Decompiling/Recompiling APK e Assinatura do APK.

Olá H3ckers,

Todos nós sabemos que existem muitos artigos disponíveis para “Como interceptar o tráfego HTTPS de aplicativos Android”. Portanto, aqui não vamos abordá-los. Se você não encontrou nenhum, consulte o seguinte:

Configurando um dispositivo Android para funcionar com o Burp — PortSwigger

Pré-requisitos:

Familiarizado com o proxy BurpSuite, Pentesting básico do Android e ferramentas como adb, frida, Objection, aplicativo Magisk, APK de descompilação/recompilação e assinatura de APK.

Índice

  1. Meu aplicativo de destino tem fixação SSL?
  2. Espere, como podemos confirmar a fixação?
  3. Hora de Ignorar
  4. Por que não consigo interceptar o tráfego do aplicativo, mesmo que o aplicativo esteja trabalhando com HTTP

Entendi, isso soa como uma piada, porque vocês sabem Se a fixação estiver em vigor, não seremos capazes de capturar o tráfego HTTPS de nosso aplicativo Android de destino.

2. Espere, como podemos confirmar a fixação?

Depois de configurar o proxy no dispositivo e no servidor proxy (Burp), inicie o aplicativo de destino e execute algumas atividades que estabelecem uma comunicação entre o aplicativo de destino e seu servidor.

Hora de monitorar o painel do Burp, em específico, a seção Log. Se a fixação estiver em vigor, poderemos ver um erro de certificado da seguinte forma:

2. Hora de Ignorar

2.1 Mover Certificado - Módulo Magisk:

Se o seu dispositivo estiver enraizado com o aplicativo Magisk, o módulo Move Certificate é uma boa opção.

Este módulo moverá os certificados confiáveis ​​do usuário para o armazenamento do sistema, fazendo com que o sistema (raiz) confie no certificado que o usuário instalar (nosso certificado CA proxy)

2.2 Ferramenta de objeção

Repo: sensepost/objection: objeção — exploração móvel em tempo de execução (github.com)

Etapa 1 : Certifique-se de que o servidor frida esteja em execução no dispositivo Android

Etapa 2: Anexe o aplicativo de destino com objeção com o seguinte comando:

Objeção -g <nome do pacote/ PID> explorar

Em seguida, execute o comando “ android sslpinning disable

É isso, o script encontrará as classes de fixação SSL e as conectará durante o tempo de execução para ignorar a fixação.

2.3 Estrutura de Frida

Repositório : Frida (github.com)

Aí vem o método mais popular e amplamente utilizado.

Etapa 1 : Certifique-se de que o servidor frida esteja em execução no dispositivo Android

Etapa 2: anexe seu aplicativo de destino com frida e execute seu script de desvio de SSL favorito.

A seguir estão meus scripts favoritos:

https://codeshare.frida.re/@akabe1/frida-multiple-unpinning/
https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/

2.4 Usando o Xposed Framework

Se o seu dispositivo estiver enraizado com a estrutura Xposed , você pode tentar os seguintes módulos para ignorar a fixação

  1. ac-pm/SSLUnpinning_Xposed: Módulo Android Xposed para ignorar a validação do certificado SSL (certificado de fixação). (github. com)
  2. ViRb3/TrustMeAlready: Desabilite a verificação e fixação de SSL no Android, em todo o sistema (github.com)

O apk-mitm é um aplicativo CLI que prepara automaticamente os arquivos APK do Android para inspeção HTTPS, modificando os arquivos apk e reembalando.

Repo:

shroudedcode/apk-mitm: Um aplicativo CLI que prepara automaticamente arquivos APK do Android para inspeção HTTPS (github.com)

apk-mitm pode ser retirado usando npm.

Etapa 1: execute o apk-mitm conforme mostrado abaixo.

É isso, o apk-mitm fez a sua parte. Agora podemos instalar o apk corrigido e interceptar o tráfego do aplicativo.

2.6 Modificando o arquivo network_security_config.xml

A configuração de segurança de rede permite que os aplicativos personalizem suas configurações de segurança de rede por meio de um arquivo de configuração declarativo . Toda a configuração está contida nesse arquivo XML e nenhuma alteração de código é necessária.

Fonte : Configuração de segurança de rede | Desenvolvedores Android

A configuração de segurança de rede funciona no Android 7.0 ou superior.

Etapa 1 : descompile o aplicativo Android com apktool ou alternativas. E localize o arquivo network_security_config.xml em /res/xml.

Etapa 2 : o arquivo pode ter esta aparência se o aplicativo tiver fixado seus próprios certificados de CA.

Fonte da imagem: developer.android.com

Etapa 3 : Remova a seção de tags <pin-set>… </pin-set> e adicione o seguinte:

Etapa 4: Agora salve o arquivo e reembale o aplicativo usando apktool e uber-apk-signer (para assinar o apk modificado).

É isso, instale nosso novo apk e pronto.

3. E se o aplicativo não estiver sendo interceptado e também não apresentar nenhum erro !!

Aqui, a primeira coisa que aparece em minha mente é “ Flutter ”. Os aplicativos baseados em vibração são basicamente “ Proxy Unknown ”.

Então aqui vem nosso herói “ Reflutter ”:

Essa estrutura ajuda na engenharia reversa de aplicativos Flutter usando a versão corrigida da biblioteca Flutter que já está compilada e pronta para reempacotamento de aplicativos. “

Repo:https://github.com/Impact-I/reFlutter

Etapa 1: instale o reflutter usando pip

Etapa 2: siga os comandos ilustrados na captura de tela abaixo.

Etapa 3: assine o aplicativo usando o uber-apk-signer ou qualquer outra alternativa e instale-o.

Passo 4: Agora no proxy Burp, comece a escutar a porta 8083 e habilite também “ Support Invisible Proxying ”.

É isso pessoal, estão todos prontos… !

4. Meu aplicativo está usando apenas HTTP, mas ainda não consigo interceptar!!

Hmm... Isso é meio estranho, mas às vezes acontece.

Aplicativos com esse comportamento são basicamente chamados de aplicativos “ Proxy Unaware ”. Esses aplicativos direcionam o tráfego diretamente para a Internet sem cooperar com as configurações de proxy do sistema.

Tempo para contornar:

Por este método, gostaria de agradecer ao irmão Faris ❤.

(60) Faris Mohammed | LinkedIn

Etapa 1: Descubra o endereço de domínio com o qual o aplicativo está se comunicando usando o Wireshark. Mostrado abaixo.

Etapa 2: descompilar o aplicativo usando apktool

Passo 3: Entre na pasta descompilada e use a ferramenta ack/grep para descobrir o arquivo no qual o nome de domínio é mencionado.

Etapa 4: substitua o nome de domínio pelo endereço IP e porta do BurpSuite.

Etapa 5: Reembale o aplicativo, assine-o e instale-o no dispositivo Android.

Etapa 7: no proxy BurpSuite, na guia Tratamento de solicitações, forneça o host de redirecionamento e a porta como o endereço de domínio original que foi usado pelo aplicativo em primeiro lugar.

Etapa 8: Configurar correspondência e substituição nas opções de proxy para substituir o valor do cabeçalho Host do endereço IP do ouvinte burp para o endereço de domínio original do aplicativo

É isso. Agora o tráfego HTTP do aplicativo será capturado em nosso proxy Burp.

Nota: — Aqui, como substituímos o domínio do aplicativo codificado, não precisamos configurar o proxy do dispositivo, pois o aplicativo se comunica diretamente com o domínio codificado (substituímos por nosso IP proxy).

Então eu acho que eu fiz por agora. Na verdade, existem alguns outros métodos que podemos usar para ignorar o SSL Pinning do Android. Vou tentar fazer uma Parte 2 com base nas suas respostas.

Obrigado peeps, Happy hacking :)