Proxy completamente trasparente

6

Per impostazione predefinita, mitmproxy utilizzerà il proprio indirizzo IP locale per le sue connessioni lato server. Quello che voglio invece è mitmproxy per usare l'indirizzo IP del client per le connessioni lato server.

Viene fornita la seguente configurazione per fare in modo che funzioni:

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 sta ascoltando sul router ( 192.168.178.40 ) sulla porta: 8080

Tuttavia la mia configurazione consiste in un router debian personalizzato con 2 schede NIC.

  • Una Internet con l'aggiunta di wlp2s0 (utilizzata anche per SSH al suo interno) con indirizzo: 192.168.178.40
  • Una NIC impostata come gateway predefinito enp4s0 per il client di destinazione in: 10.0.0.1

Il client si connette al gateway predefinito con indirizzo 10.0.0.12

Per impostazione predefinita, utilizzo le seguenti regole della tabella IP per reindirizzare il traffico del mio client alla 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

Anche se funziona come previsto, mi piacerebbe essere in grado di falsificare l'indirizzo sorgente del client in modo che le richieste HTTP (S) catturate corrispondano ai pacchetti TCP e al traffico proveniente anche dal client.

Ecco un'immagine per visualizzare il mio setup perché sono piuttosto orribile nello spiegare:

    
posta user329538 07.03.2018 - 10:45
fonte

0 risposte

Leggi altre domande sui tag