Como inspecionar o tráfego de rede utilizando mitmproxy

author
5 minutes, 28 seconds Read

a Maioria dos aplicativos modernos dependem de APIs. “- Como posso acessar seu catálogo ? – Aqui está uma API para isso. “As APIs estão por toda parte e isso não está prestes a mudar.

dividir cada parte do seu código em serviços separados é (muitas vezes) bom, mas quando se trata de testes, essa separação pode tornar as coisas um pouco mais difíceis.

os desenvolvedores de aplicativos Front-end não escrevem mais o código que cuida da lógica de negócios principal. Geralmente, tarefas complexas de processamento de dados são feitas em aplicativos do lado da API e front-end apenas precisam exibir o que é fornecido pela API.

é por isso que é tão importante poder refazer o caminho de dados do aplicativo para a API. Quando você testa e valida um aplicativo, ser capaz de responder às seguintes perguntas é crucial :

  • qual API-endpoint(s) o aplicativo está usando para esta tela ?
  • o que está contido na resposta fornecida pela API ?
  • o que acontece se a estrutura de Resposta da API mudar ?

até o final deste tutorial você deve ser capaz de usar mitmproxy para responder a essas perguntas. Mas você verá, há muito mais coisas a fazer com esta ferramenta incrível.

Como mitmproxy obras

Antes de começar…

Você pode estar se perguntando por que você deve usar mitmproxy em vez de outra ferramenta. E essa é uma boa pergunta (não siga o hype!).

meu primeiro argumento é o preço: mitmproxy é gratuito (lançado sob licença MIT) quando uma licença para Charles Proxy custa cerca de 50$.

também mitmproxy é uma ferramenta muito poderosa : não só fornece opções para reescrever o tráfego, mas também permite que você execute scripts Python para alterar solicitações e Respostas. Isso é realmente útil ao tentar testar casos extremos.

para finalizar, o mitmproxy pode ser executado em qualquer lugar com uma interface da web ou na linha de comando : não importa o contexto, há boas chances de você poder usá-lo.

instalação

existem várias maneiras de instalar o mitmproxy. Usar brew é a maneira “padrão”, mas eu pessoalmente prefiro usá-lo através do Docker : isso me impede de lidar com versões Python e também ajuda a manter meu Mac limpo. Além disso, é muito fácil de fazer e nenhum conhecimento específico do Docker é necessário.

para a instalação, sinta-se livre para escolher qualquer método que você se sentir mais confortável com.

Usar fermentação

Se você já tem brew instalado no seu computador, e se tudo correr bem, executando este comando simples deve ser o suficiente para fazer o trabalho :

brew install mitmproxy

uma Vez mitmproxy é instalado, você pode saltar diretamente para o Vamos executar mitmproxy seção.

Usando a janela de Encaixe

Execução de mitmproxy usando o oficial de Encaixe imagem é tão simples quanto executar o seguinte comando :

docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy:4.0.4

Para evitar ter que instalar mitmproxy certificados de teste de dispositivos de cada vez, é fortemente aconselhado a compartilhar o recipiente da pasta de certificado com um local (usando o -v param).

desta forma, os certificados serão persistidos mesmo depois que seu contêiner Docker for morto.

docker run --rm -it -v /your/local/folder:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy:4.0.4

Para simplificar o uso deste comando, adicione um alias na sua ~/.bash_profile :

alias mitmproxy='docker run --rm -it -v /your/local/folder:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy:4.0.4'

E não se esqueça de executar source ~/.bash_profile depois de editado o arquivo.

Vamos executar mitmproxy

Não importa o quanto você instalá-lo, você deve agora ser capaz de iniciar mitmproxy com o comando :

mitmproxy

Se o programa for iniciado, em seguida, parabéns! Você pode continuar!

mitmproxy está vivo

configurações de Rede no dispositivo de destino

mitmproxy pode ser executado como um proxy reverso, como um proxy transparente, ou como um proxy regulares. Para manter as coisas simples, vamos usá-lo como um proxy regular.

usar o programa dessa maneira é certamente mais fácil, mas significa que você pode alterar as configurações de rede do dispositivo de destino para definir um proxy.

isso é realmente simples quando você precisa inspecionar solicitações de um dispositivo iOS ou Android, mas fica mais complicado com dispositivos que não fornecem configurações avançadas para a rede.

dependendo do seu dispositivo de destino, basta seguir o sub-tutorial correspondente :

  • configuração de um proxy em um dispositivo iOS
  • configuração de um proxy em um dispositivo Android
  • configuração de um proxy em uma tvOS dispositivo

Instalar o certificado auto-assinado

neste momento, se você começar a mitmproxy o seu dispositivo irá aceitar o tráfego HTTP, mas rejeitar qualquer pedido de HTTPS não vem diretamente do servidor. O motivo é simples: seu dispositivo não aceitará nenhum certificado autoassinado, a menos que você peça para fazê-lo.

para interceptar solicitações HTTPS, precisamos definir o certificado usado pelo mitmproxy no dispositivo de destino. Isso permitirá que seu dispositivo aceite solicitações seguras vindas do seu computador em vez do servidor real.

a complexidade da instalação de um certificado autoassinado realmente depende da natureza do dispositivo que você precisa inspecionar. Basicamente, vai de “muito simples” a “impossível”.

dependendo do seu dispositivo de destino, basta seguir o sub-tutorial correspondente :

  • instalar um certificado auto-assinado em um dispositivo iOS
  • instalar um certificado auto-assinado em um dispositivo Android
  • instalar um certificado auto-assinado em um dispositivo tvOS

Certificado

Vamos interceptar chamadas de

uma Vez que o certificado é instalado, você está pronto para interceptar as chamadas. Você pode iniciar mitmproxy mais uma vez usando :

mitmproxy

No dispositivo de destino, abra o aplicativo e verificar se novas linhas aparecem no terminal.

mitmproxy

se você vir pedidos, então parabéns! Tudo está configurado e você pode começar a inspecionar o tráfego da web passando pelo seu telefone ou tablet.

Resolução de problemas

Se não aparece nada e o dispositivo de destino parece ter uma ligação à internet, aqui estão algumas coisas que você deve verificar :

  • são ambos o computador executando o mitmproxy e o dispositivo de destino na mesma rede ?
  • você já tentou reiniciar o mitmproxy ?
  • as configurações de proxy estão definidas corretamente no dispositivo de destino ?
  • você ativou o certificado autoassinado no dispositivo de destino ?

para ir mais longe

Agora você deve saber tudo o que precisa para instalar o mitmproxy e configurar seu dispositivo de destino. Se você quiser ir mais longe, dê uma olhada nas seguintes postagens :

  • dicas úteis para mitmproxy
  • criando scripts para mitmproxy

Similar Posts

Deixe uma resposta

O seu endereço de email não será publicado.