Cómo inspeccionar el tráfico de red con mitmproxy

author
5 minutes, 23 seconds Read

La mayoría de las aplicaciones modernas dependen de API. «- ¿Cómo puedo acceder a su catálogo ? – Aquí hay una API para eso. «Las API están en todas partes y eso no va a cambiar.

Dividir cada parte de su código en servicios separados es (a menudo) bueno, pero cuando se trata de pruebas, esta separación puede hacer las cosas un poco más difíciles.

Los desarrolladores de aplicaciones Front-end ya no escriben el código que se encarga de la lógica empresarial principal. En general, las tareas complejas de procesamiento de datos se realizan en el lado de la API y las aplicaciones front-end solo tienen que mostrar lo que proporciona la API.

Esta es la razón por la que es tan importante poder rastrear la ruta de datos de la aplicación a la API. Al probar y validar una aplicación, es crucial poder responder a las siguientes preguntas :

  • ¿qué punto de conexión de API está utilizando la aplicación para esta pantalla ?
  • ¿qué contiene la respuesta proporcionada por la API ?
  • ¿qué sucede si cambia la estructura de respuesta de la API ?

Al final de este tutorial, debería poder usar mitmproxy para responder a esas preguntas. Pero verás, hay muchas más cosas que hacer con esta increíble herramienta.

 Cómo funciona mitmproxy

Antes de comenzar…

Es posible que se pregunte por qué debería usar mitmproxy en lugar de otra herramienta. Y esa es una buena pregunta (¡no sigas el bombo!).

Mi primer argumento es el precio: mitmproxy es gratis (publicado bajo Licencia MIT) cuando una licencia para Charles Proxy cuesta alrededor de 50$.

También mitmproxy es una herramienta muy potente : no solo proporciona opciones para reescribir el tráfico, sino que también le permite ejecutar scripts de Python para alterar solicitudes y respuestas. Esto es realmente útil cuando se trata de probar casos extremos.

Para terminar, mitmproxy puede ejecutarse en cualquier lugar con una interfaz web o en línea de comandos : sin importar el contexto, hay buenas posibilidades de que pueda usarlo.

Instalación

Hay varias formas de instalar mitmproxy. El uso de brew es la forma «estándar», pero personalmente prefiero usarlo a través de Docker : me impide tratar con versiones de Python y también ayuda a mantener limpia mi Mac. Además, es muy fácil de hacer y no se requiere ningún conocimiento particular de Docker.

Para la instalación, no dude en elegir cualquier método con el que se sienta más cómodo.

Usando brew

Si ya tiene brew instalado en su computadora, y si todo va bien, ejecutar este simple comando debería ser suficiente para hacer el trabajo :

brew install mitmproxy

Una vez instalado mitmproxy, puede saltar directamente a la sección Let’s run mitmproxy.

Usando Docker

Ejecutar mitmproxy usando la imagen oficial de Docker es tan simple como ejecutar el siguiente comando :

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

Para evitar tener que instalar certificados de mitmproxy en sus dispositivos de prueba cada vez, se recomienda encarecidamente compartir la carpeta de certificados del contenedor con una local (utilizando el parámetro -v).

De esta manera, los certificados se conservarán incluso después de que se haya eliminado el contenedor de Docker.

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

Para simplificar el uso de este comando, agregar un alias en su ~/.bash_profile :

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

Y no te olvides de ejecutar source ~/.bash_profile después de editar el archivo.

Vamos a ejecutar mitmproxy

No importa cómo lo haya instalado, ahora debería poder iniciar mitmproxy con el comando :

mitmproxy

Si el programa comienza, ¡felicidades! ¡Puedes seguir adelante!

 mitmproxy está activo

Configuración de red en el dispositivo de destino

mitmproxy puede ejecutarse como proxy inverso, como proxy transparente o como proxy normal. Para mantener las cosas simples, lo usaremos como un proxy normal.

Usar el programa de esta manera es ciertamente más fácil, pero significa que puede cambiar la configuración de red del dispositivo de destino para establecer un proxy.

Esto es realmente simple cuando necesita inspeccionar solicitudes desde un dispositivo iOS o Android, pero se complica con dispositivos que no proporcionan configuraciones avanzadas para la red.

Dependiendo de su dispositivo de destino, simplemente siga el sub-tutorial correspondiente :

  • configurar un proxy en un dispositivo iOS
  • configurar un proxy en un dispositivo Android
  • configurar un proxy en un dispositivo tvOS

Instalar el certificado autofirmado

En este momento, si inicia mitmproxy, su dispositivo aceptará tráfico HTTP pero rechazará cualquier solicitud HTTPS que no provenga directamente de el servidor. La razón es simple: el dispositivo no aceptará ningún certificado autofirmado a menos que se lo pidas.

Para interceptar solicitudes HTTPS, necesitamos establecer el certificado utilizado por mitmproxy en el dispositivo de destino. Esto permitirá que su dispositivo acepte solicitudes seguras provenientes de su computadora en lugar del servidor real.

La complejidad de instalar un certificado autofirmado realmente depende de la naturaleza del dispositivo que necesita inspeccionar. Básicamente, va de «muy simple» a «imposible».

Dependiendo de su dispositivo de destino, simplemente siga el sub-tutorial correspondiente :

  • instalación de un certificado autofirmado en un dispositivo iOS
  • instalación de un certificado autofirmado en un dispositivo Android
  • instalación de un certificado autofirmado en un dispositivo tvOS

Certificado

Interceptemos llamadas

Una vez instalado el certificado, estará listo para interceptar llamadas. Puede iniciar mitmproxy una vez más usando :

mitmproxy

En el dispositivo de destino, abra una aplicación y compruebe si aparecen nuevas líneas en el terminal.

mitmproxy

Si ves peticiones, ¡felicidades! Todo está configurado y puede comenzar a inspeccionar el tráfico web que pasa por su teléfono o tableta.

Solución de problemas

Si no aparece nada y el dispositivo de destino parece no tener conexión a Internet, aquí hay algunas cosas que debe verificar :

  • ¿el equipo que ejecuta mitmproxy y el dispositivo de destino están en la misma red ?
  • ¿Ha intentado reiniciar mitmproxy ?
  • ¿la configuración del proxy está configurada correctamente en el dispositivo de destino ?
  • ¿ha habilitado el certificado autofirmado en el dispositivo de destino ?

Para ir más lejos

Ahora debe saber todo lo que necesita para instalar mitmproxy y configurar su dispositivo de destino. Si quieres ir más allá, echa un vistazo a las siguientes publicaciones :

  • Consejos útiles para mitmproxy
  • Crear scripts para mitmproxy

Similar Posts

Deja una respuesta

Tu dirección de correo electrónico no será publicada.