MASTG-TECH-0119: Interceptando Tráfego HTTP por Hooking de APIs de Rede na Camada de Aplicação

Dependendo do seu objetivo ao testar o aplicativo, às vezes é suficiente monitorar o tráfego antes que ele chegue à camada de rede ou quando as respostas são recebidas no app.

Isso significa que você não precisa implantar um ataque MITM completo (incluindo ataques de ARP Spoofing, etc.) se simplesmente quiser determinar se certos dados sensíveis estão sendo transmitidos para a rede. Com essa abordagem, você não interferirá em nenhuma verificação ou pinning de TLS.

Você pode usar o Frida como uma alternativa.

Essa técnica também é útil para:

  • Interceptar tráfego em apps que usam pilhas de rede personalizadas.
  • Interceptar tráfego em apps construídos com frameworks cross-platform específicos, como o Flutter.
  • Interceptar outros tipos de tráfego, como BLE, NFC, etc., onde implantar um ataque MITM pode ser muito custoso e complexo.
  • Analisar protocolos como MQTT e CoAP, que podem exigir técnicas de interceptação mais especializadas.
  • Monitorar tráfego WebSocket, que também pode necessitar de estratégias únicas de interceptação.

Você só precisa fazer hook das funções certas, por exemplo, SSL_write e SSL_read do OpenSSL.

Isso funcionaria muito bem para apps que usam funções e classes padrão de bibliotecas de API; no entanto, pode haver algumas desvantagens:

  • O app pode implementar uma pilha de rede personalizada, e você terá que gastar tempo analisando o app para descobrir as APIs que pode usar. Veja a seção "Searching for OpenSSL traces with signature analysis" neste artigo.
  • Pode ser muito demorado criar os scripts de hooking corretos para remontar pares de respostas HTTP (através de muitas chamadas de método e threads de execução). Você pode encontrar scripts prontos e até mesmo para pilhas de rede alternativas, mas dependendo do app e da plataforma, esses scripts podem exigir muita manutenção e podem nem sempre funcionar.

Veja alguns exemplos: