Trata-se de ignorar aplicativos Android SSL Pinning e interceptar Proxy Unaware.
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
- Meu aplicativo de destino tem fixação SSL?
- Espere, como podemos confirmar a fixação?
- Hora de Ignorar
- 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
- ac-pm/SSLUnpinning_Xposed: Módulo Android Xposed para ignorar a validação do certificado SSL (certificado de fixação). (github. com)
- 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.

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 :)