Proxy completamente transparente

5

Por defecto, mitmproxy usará su propia dirección IP local para sus conexiones del lado del servidor. Lo que quiero, en cambio, es que mitmproxy use la dirección IP del cliente para las conexiones del lado del servidor.

Se proporciona la siguiente configuración para hacer que esto funcione:

CLIENT_NET=192.168.1.0/24
TABLE_ID=100
MARK=1

echo "$TABLE_ID     mitmproxy" >> /etc/iproute2/rt_tables
iptables -t mangle -A PREROUTING -d $CLIENT_NET -j MARK --set-mark $MARK
iptables -t nat \
    -A PREROUTING -p tcp -s $CLIENT_NET \
    --match multiport --dports 80,443 -j \
    REDIRECT --to-port 8080

ip rule add fwmark $MARK lookup $TABLE_ID
ip route add local $CLIENT_NET dev lo table $TABLE_ID

Mitmproxy está escuchando en el enrutador ( 192.168.178.40 ) en el puerto: 8080

Sin embargo, mi configuración consta de un enrutador Debian personalizado con 2 NIC.

  • Una dirección de Internet wlp2s0 (también utilizada para SSH en ella) con la dirección: 192.168.178.40
  • Una NIC establecida como puerta de enlace predeterminada enp4s0 para el cliente de destino en: 10.0.0.1

El cliente se conecta a la puerta de enlace predeterminada con la dirección 10.0.0.12

De forma predeterminada, utilizo las siguientes reglas de tabla de IP para redirigir el tráfico de mi cliente al puerto 8080:

sudo iptables -t nat -A PREROUTING -i enp4s0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A PREROUTING -i enp4s0 -p tcp --dport 443 -j REDIRECT --to-port 8008

Aunque esto funciona según lo previsto, me gustaría poder falsificar la dirección de origen del cliente para que las solicitudes HTTP (S) capturadas coincidan con los paquetes TCP y otro tráfico que también proviene del cliente.

Aquí hay una imagen para visualizar mi configuración porque soy bastante horrible para explicar:

    
pregunta user329538 07.03.2018 - 10:45
fuente

0 respuestas

Lea otras preguntas en las etiquetas