El requerimiento

Para un cliente con el que estuve trabajando recientemente, era necesario interceptar datos en una red. Ciertas acciones deben ser tomadas después de aplicar la lógica de negocios en los datos interceptados.

El enfoque

Después de evaluar otras herramientas, pensamos que tendríamos un pico en MITMProxy, un proxy man-in-the-middle para HTTP y HTTPS con una interfaz de consola interactiva. Proporciona varios modos de proxying como:

  1. Regular
  2. Proxy transparente √
  3. Proxy inverso
  4. Proxy Upstream

Estábamos buscando configurar un proxy transparente ya que teníamos control sobre los dispositivos conectados a la red, por lo que la configuración de los certificados en ellos no sería un problema.

La puesta en marcha

Tengo una Mac con MacOS HighSierra y un dispositivo de prueba de Android conectado a la misma red Wi-Fi . Tengo MITMProxy instalado usando Brew ,los binarios preconstruidos también se pueden descargar desde su página de lanzamientos .

mitmproxy usa el filtro de paquete pf para implementar el modo transparente. En OSX está integrado en versiones desde OSX Lion. Esto significa que mitmproxy no admite el modo transparente para versiones anteriores de OSX.

Instalación de certificados en el dispositivo

MITMProxy admite HTTPS y HTTP al instalar sus certificados personalizados en los dispositivos del cliente. Inicie el proxy en modo básico ejecutando

mitmproxy --host

Podrá ver la consola interactiva. Ahora actualice la configuración de Wi-Fi -> Seleccionar red -> Configuración avanzada -> Configuración de proxy.Agregue la dirección IP del host como proxy.

 

Configurando la configuración del proxy en la configuración

En la visita del navegador del dispositivo mitm.it, seleccione la plataforma correspondiente y siga las instrucciones proporcionadas. El proceso es bastante directo.


Configurando el modo Proxy Transparente

Una vez que tengamos el certificado mitmproxy instalado en el dispositivo. Simplemente complete los siguientes pasos para habilitarlo:

  1. Habilitar reenvío de IP
sudo sysctl - w net . inet . ip . reenvío = 1

2. Actualice la configuración de pfctl para redirigir el tráfico en los puertos 80443 a la instancia de mitmproxy que se ejecuta en el puerto 8080 . Suponiendo que su interfaz de red es en0agregar la siguiente configuración a un archivo llamado pf.conf

rdr en en0 inet proto tcp a cualquier puerto {80, 443} -> 127.0.0.1 puerto 8080

Las reglas de rdr en pf.conf anteriores se aplican solo al tráfico entrante. Ellos NO redirigir el tráfico procedente de la caja de correr PF sí.

Ejecute el siguiente comando para actualizar las reglas y habilitar pfctl

sudo pfctl - f pf . conf 
sudo pfctl -e

3. Configure sudoers para permitir que mitmproxy acceda a pfctl. Edite el archivo / etc / sudoers en su sistema como root. Esto solo permite la inspección de la tabla de estado, por lo que no debe ser un riesgo de seguridad indebido. Tenga cuidado al agregar la siguiente línea al final del archivo, sobrescribir otras líneas puede hacer que los usuarios pierdan el acceso a sudo :

TODO TODO = NOPASSWD: / sbin / pfctl -s estado

4. Comience mitmproxy.

mitmproxy -T --host

La -Tbandera enciende el modo transparente y el --hostargumento le dice a mitmproxy que use el valor del encabezado Host para la visualización de URL.

5. Finalmente, configure el dispositivo para usar Mac como su puerta de enlace predeterminada para la red. Agregue la dirección IP de Mac como la puerta de enlace predeterminada.

 

Configurar la puerta de enlace predeterminada para la red wifi

Ahora podrá interceptar y manipular solicitudes desde el dispositivo conectado a la red.

Fuente: Medium.com

Compartir