Redirecionando tráfego para um endereço e porta específicos usando PF no MacOS

2

Eu quero fechar um aplicativo para dispositivos móveis. Para fazer isso, quero interceptar todo o tráfego do WiFi e encaminhá-lo para o Burp, que é executado em uma VM.

Eu habilitei "Compartilhamento de Internet" no meu Macbook para que meu telefone agora se conecte ao laptop usando WiFi. Então eu quero encaminhar todo o tráfego para o proxy Burp, que está em 172.16.122.128: 8080.

Redirecionando para o localhost funciona:

rdr pass on bridge100 inet proto tcp from any to any port {80,443} -> 127.0.0.1 port 8080

Eu coloquei esta regra em um arquivo e carreguei com pfctl -f pf.rules . Depois disso, eu listei na porta 8080 usando nc -l -p 8080 e quando eu navego em algum lugar no meu telefone, de fato, conecta-se ao localhost vez.

No entanto, quando tento encaminhar para 172.16.122.128, ele não funciona:

rdr pass on bridge100 inet proto tcp from any to any port {80,443} -> 172.16.122.128 port 8080

Os pacotes acabam na VM (testada com o Wireshark), mas nenhuma conexão é feita. Isto pode ser porque eles são originários de 192.168.2.3. Eu preciso do NAT em algum lugar? Como posso configurar isso corretamente?

Eu desenhei uma imagem do layout da minha rede. (A VM, na verdade, roda no meu laptop, mas desenhei em separado aqui.)

    
por Sjoerd 21.07.2016 / 16:21

3 respostas

1

As seguintes regras de FP funcionam:

nat on vmnet8 from bridge100:network to any -> (vmnet8)
rdr pass on bridge100 inet proto tcp from any to any -> 172.16.122.128 port 8080 

Isso encaminha todas as solicitações para 172.16.122.128, enquanto faz NAT entre elas.

O NAT é necessário para traduzir entre os endereços das duas redes, ou seja, 192.168.2.0/24 e 172.16.122.0/24. A parte anterior já funcionou (como descrito na minha pergunta), mas os pacotes foram encaminhados com o endereço de origem errado. O NAT altera esse endereço de origem para 172.16.122.1, para que a VM saiba enviar pacotes de volta ao meu MacBook, que os encaminha novamente ao telefone.

    
por 28.07.2016 / 14:10
1

Eu acho que o problema é que você não configurou o encaminhamento entre 2 redes, (1) rede VM (172.16.122.0/24) e (2) sua LAN (192.168.2.0/24). Para configurar o encaminhamento no seu Mac, você provavelmente precisará fazer o seguinte (desculpe, eu não tenho um Mac, então não posso tentar):

1) Como está escrito no link :

sudo sysctl -w net.inet.ip.forwarding=1
sudo sysctl -w net.inet.ip.fw.enable=1

2) adicionar rotas estáticas para ambas as redes, se necessário (eu acho, você já tem, desde que você pode se conectar com o nc do seu Mac para a VM)

Por fim, outra opção (sem configurar o seu Mac como roteador) é configurar o NAT usando seu software de virtualização e encaminhar uma porta para sua VM. Se você usa um VMware Fusion, dê uma olhada aqui ou aqui .

Em seguida, em vez de encaminhar o tráfego para a porta em sua VM, encaminhe-a para a porta encaminhada na interface vmnet8:

rdr pass on bridge100 inet proto tcp from any to any port {80,443} -> 172.16.122.1 port 8080

(a porta 8080 na vmnet8 deve ser encaminhada para a porta 8080 na sua VM pelo VMware Fusion)

    
por 28.07.2016 / 10:37
-1

Se a VM for do tipo linux, você precisa do tráfego de entrada Nat e mangle-lo. Isso é:

  1. Um pacote de entrada de 192.168.2.3 é aceito
  2. Altere o endereço de destino do pacote para 172.16.122.128 (mangle)
  3. Envie o pacote para a camada de roteamento do linux

Comandos do firewall

# Enable forward
sudo sysctl -w net.ipv4.ip_forward=1

# FLUSH ALL RULES
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Forward
sudo iptables -A FORWARD -i eth0 -j ACCEPT


# Mangling rule. I think you can add the port right after the dest ip
sudo iptables -t nat -A POSTROUTING -s 192.168.2.3/32  -j SNAT --to  172.16.122.128
    
por 27.07.2016 / 22:44

Tags