Modo proxy totalmente transparente

0

Por padrão, o mitmproxy usará seu próprio endereço IP local para suas conexões do lado do servidor. O que eu quero é usar o endereço IP do cliente para conexões do lado do servidor.

A seguinte configuração é fornecida para fazer este trabalho:

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

O Mitmproxy está escutando no roteador ( 192.168.178.40 ) na porta: 8080

No entanto, minha configuração consiste em um roteador debian personalizado com 2 NICs.

  • Uma internet voltada para wlp2s0 (também usada para SSH) com o endereço: 192.168.178.40
  • Uma NIC definida como gateway padrão enp4s0 para o cliente de destino em: 10.0.0.1

O cliente se conecta ao gateway padrão com o endereço 10.0.0.12

Por padrão, eu uso as seguintes regras da tabela IP para redirecionar o tráfego do meu cliente para a porta 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

Embora isso funcione como pretendido, eu gostaria de poder falsificar o endereço de origem do cliente para que as solicitações HTTP (S) capturadas correspondam aos pacotes TCP e a outro tráfego também proveniente do cliente.

Aqui está uma foto para visualizar minha configuração porque eu sou muito horrível em explicar:

    
por user329538 07.03.2018 / 09:46

0 respostas