Skip to content

MASTG-TECH-0110: Interceptando o Tráfego HTTPS do Flutter

O Flutter é um kit de desenvolvimento de software (SDK) de UI de código aberto criado pela Google. Ele é usado para criar aplicações compiladas nativamente para mobile, web e desktop a partir de uma única base de código. O Flutter utiliza Dart, que não tem consciência de proxy e usa seu próprio armazenamento de certificados. A aplicação não utiliza a configuração de proxy do sistema e envia os dados diretamente para o servidor. As conexões são verificadas em relação aos certificados integrados, portanto, quaisquer certificados instalados no sistema são simplesmente ignorados. Devido a isso, não é possível interceptar requisições HTTPS, pois o certificado do proxy nunca será confiável.

Para interceptar o tráfego HTTPS do Flutter, precisamos lidar com dois problemas:

  • Garantir que o tráfego seja enviado para o proxy.
  • Desativar a verificação TLS de qualquer conexão HTTPS.

Geralmente, existem duas abordagens para isso: reFlutter e Frida para iOS.

  • reFlutter: Esta ferramenta cria uma versão modificada do módulo Flutter, que é então reempacotada no IPA. Ela configura as bibliotecas internas para usar um proxy especificado e desativa a verificação TLS.
  • Frida: O script disable-flutter-tls.js pode remover dinamicamente a verificação TLS sem a necessidade de reempacotamento. Como não modifica a configuração de proxy, são necessárias etapas adicionais (por exemplo, VPN, DNS, iptables, WIFI hotspot).

Interceptando Tráfego usando reFlutter

  1. Aplique um patch no aplicativo para habilitar a interceptação de tráfego.

    Execute o comando para aplicar o patch no aplicativo e selecione a opção Monitoramento e interceptação de tráfego e, em seguida, insira o IP da máquina na qual o proxy de interceptação está sendo executado.

    $ reflutter demo.ipa
    
    Escolha uma opção:
    
        Monitoramento e interceptação de tráfego
        Exibir offset absoluto de código para funções
    
    [1/2]? 1
    
    Exemplo: (192.168.1.154) etc.
    Por favor, insira o IP do seu BurpSuite: 192.168.29.216
    

    Isso criará um arquivo release.RE.ipa na pasta de saída.

  2. Assine ( Assinatura de arquivos IPA) o aplicativo com patch release.RE.ipa com os certificados da Apple. Isso criará um arquivo ".ipa" assinado na pasta de saída.

  3. Instale o aplicativo com patch assinado no dispositivo móvel.

  4. Configure o proxy de interceptação. Por exemplo, no Burp:

  5. Em Proxy -> Configurações de proxy -> Adicionar nova configuração de proxy.

  6. Vincule a porta de escuta a 8083.
  7. Selecione Vincular ao endereço para Todas as interfaces.
  8. Manipulação de requisições -> suporte para proxy invisível.

  9. Abra o aplicativo e comece a interceptar o tráfego.

Interceptando Tráfego usando WIFI hotspot / openVPN com Frida

  1. Configure usando o método WIFI hotspot / openVPN para redirecionar as requisições para o Burp.

  2. Instale iOS UnCrackable Nível 1 no dispositivo móvel.

  3. Configure o proxy de interceptação. Por exemplo, no Burp:

  4. Em Proxy -> Configurações de proxy -> Adicionar nova configuração de proxy.

  5. Vincule a porta de escuta a 8080.
  6. Selecione Vincular ao endereço para Todas as interfaces.
  7. Manipulação de requisições -> suporte para proxy invisível.

  8. Execute o script Frida desabilitar-verificacao-TLS-flutter.

    frida -U -f eu.nviso.flutterPinning -l disable-flutter-tls.js
    
  9. Comece a interceptar o tráfego.