Skip to content

MASTG-TECH-0125: Interceptando Tráfego Xamarin

O Xamarin é uma plataforma de desenvolvimento de aplicativos móveis que permite aos desenvolvedores criar aplicativos Android nativos e aplicativos iOS usando o Visual Studio e C#.

Ao testar um aplicativo Xamarin, definir o proxy do sistema nas configurações de Wi-Fi do dispositivo não capturará nenhuma solicitação HTTP em seu proxy de interceptação. Isso ocorre porque os aplicativos Xamarin não utilizam as configurações de proxy local do seu dispositivo. Existem três maneiras de contornar essa limitação:

Opção 1: Manipulando o Proxy Padrão da Pilha de Rede do Xamarin

Modifique o aplicativo para usar um proxy padrão adicionando o seguinte código no método OnCreate ou Main:

WebRequest.DefaultWebProxy = new WebProxy("192.168.11.1", 8080);

Por fim, recompile e assine o aplicativo modificado.

Alternativamente, use o Frida para conectar-se à propriedade WebRequest.DefaultWebProxy e definir dinamicamente o proxy para o seu proxy de interceptação.

Opção 2: Obtendo uma Posição MITM via ARP Spoofing

Use a ferramenta bettercap para obter uma posição MITM e redirecionar a porta 443 para o seu proxy de interceptação em execução no localhost.

No macOS:

echo "
rdr pass inet proto tcp from any to any port 443 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -

No Linux:

sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 127.0.0.1:8080

Por último, ative Support invisible proxy nas configurações do listener da ferramenta Android Studio.

Opção 3: DNS Spoofing

Se você puder modificar a resolução DNS do dispositivo (DNS Spoofing), poderá redirecionar o tráfego do aplicativo para o seu proxy. Por exemplo, em um dispositivo Android com root, você pode adicionar uma entrada em /etc/hosts mapeando o domínio do servidor do aplicativo para o IP da sua máquina proxy. Isso faz com que o aplicativo acredite que sua máquina é o servidor legítimo.

Como o DNS spoofing redireciona o tráfego no nível de domínio, as conexões de entrada ainda usarão a porta de destino original (por exemplo, 443 para HTTPS). Para interceptar corretamente o tráfego com seu proxy (que pode estar em execução em uma porta diferente, como 8080), é necessário redirecionamento de porta. Isso garante que o tráfego que chega na porta 443 seja encaminhado para a porta de escuta do proxy.

Uma vez redirecionado, o proxy pode inspecionar, modificar ou retransmitir o tráfego para o servidor real, atuando efetivamente como um MITM (conforme feito com a ferramenta bettercap).

Configurando o Redirecionamento de Tráfego e o Proxy de Interceptação

Caso ainda não tenha feito, configure seu proxy de interceptação. Consulte Interceptando Tráfego HTTP Usando um Proxy de Interceptação.

Dica: Ao redirecionar tráfego, crie regras específicas apenas para os domínios e IPs em escopo para reduzir ruídos de tráfego fora do escuto.

Certifique-se de que seu proxy de interceptação esteja escutando na porta definida em sua regra de redirecionamento (8080 neste caso).

Após redirecionar o tráfego para seu proxy de interceptação, você precisa encaminhá-lo de volta para seu destino original. As etapas a seguir configuram o redirecionamento na ferramenta Burp Suite:

  1. Abra a aba Proxy e clique em Options.
  2. Selecione e edite seu listener na lista de listeners do proxy.
  3. Navegue até a aba Request Handling e configure:
    • Redirect to host: Defina como o destino original do servidor.
    • Redirect to port: Especifique a porta original.
    • Ative Force use of SSL (se HTTPS for usado) e Support invisible proxy.

Iniciando a Interceptação de Tráfego

Agora, comece a usar o aplicativo e acione suas funções. Se configurado corretamente, as mensagens HTTP devem aparecer em seu proxy de interceptação.

Observação: Ao usar Bettercap ou DNS Spoofing, ative Support invisible proxying em Proxy Tab → Options → Edit Interface. Certifique-se de que as configurações do proxy estejam adequadamente configuradas para lidar com tráfego HTTP e HTTPS para visibilidade completa.