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¶
-
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.216Isso criará um arquivo release.RE.ipa na pasta de saída.
-
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.
-
Instale o aplicativo com patch assinado no dispositivo móvel.
-
Configure o proxy de interceptação. Por exemplo, no Burp:
-
Em Proxy -> Configurações de proxy -> Adicionar nova configuração de proxy.
- Vincule a porta de escuta a
8083. - Selecione
Vincular ao endereçoparaTodas as interfaces. -
Manipulação de requisições -> suporte para proxy invisível.
-
Abra o aplicativo e comece a interceptar o tráfego.
Interceptando Tráfego usando WIFI hotspot / openVPN com Frida¶
-
Configure usando o método WIFI hotspot / openVPN para redirecionar as requisições para o Burp.
-
Instale iOS UnCrackable Nível 1 no dispositivo móvel.
-
Configure o proxy de interceptação. Por exemplo, no Burp:
-
Em Proxy -> Configurações de proxy -> Adicionar nova configuração de proxy.
- Vincule a porta de escuta a
8080. - Selecione
Vincular ao endereçoparaTodas as interfaces. -
Manipulação de requisições -> suporte para proxy invisível.
-
Execute o script Frida desabilitar-verificacao-TLS-flutter.
frida -U -f eu.nviso.flutterPinning -l disable-flutter-tls.js -
Comece a interceptar o tráfego.