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

2

Eu quero pentest uma aplicação móvel. Para fazer isso, quero interceptar todo o tráfego WiFi e encaminhá-lo para o Burp, que é executado em uma VM.

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

Redirecionando para trabalhos localhost:

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

Coloquei essa regra em um arquivo e carregue-a pfctl -f pf.rules. Depois disso, listei na porta 8080 usando nc -l -p 8080e quando eu navego em algum lugar no meu telefone, ele realmente se conecta ao host local.

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 (testados com Wireshark), mas nenhuma conexão é feita. Isso pode ser porque eles se originam de 192.168.2.3. Preciso de NAT em algum lugar? Como posso configurar isso corretamente?

Tirei uma foto do meu layout de rede. (A VM, na verdade, é executada no meu laptop, mas eu a separei aqui.) meu layout de rede

Sjoerd
fonte
Você pode testar a conectividade entre o Mac e sua VM sem a regra de PF? Por exemplo, ouça o 8080 na VM usando nc e use também nc, mas no MAC, para conectar-se ao 8080 na sua VM? Talvez seja apenas um firewall dentro de uma VM.
Andrey Sapegin
O vm é um linux?
Lmwangi
Eu testei a conexão entre o Mac e a VM com nc, e isso funciona bem. A VM é o Kali Linux.
Sjoerd
Eu acho que você precisa configurar o roteamento / encaminhamento no seu Mac, pois ele está conectado a 2 redes diferentes e precisa rotear pacotes entre essas redes. Consulte apple.stackexchange.com/a/192183 para obter uma configuração de amostra. Mas você não precisa do NAT, apenas a ativação do encaminhamento deve ajudar.
22616 Andrey Sapegin

Respostas:

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) Conforme escrito em https://apple.stackexchange.com/a/192183 :

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

2) adicione rotas estáticas às duas redes, se necessário (eu acho, você já a possui, pois você pode se conectar com a nc do seu Mac à VM)

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

Em vez de encaminhar o tráfego para a porta na sua VM, encaminhe-o 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 no vmnet8 deve ser encaminhada para a porta 8080 na sua VM pelo VMware Fusion)

Andrey Sapegin
fonte
1

As seguintes regras de PF 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 executa o NAT no meio.

O NAT é necessário para converter 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 para o telefone novamente.

Sjoerd
fonte
ótimo, que você fez funcionar. Eu acho que minha resposta ainda pode ser válida. Como você escreveu, "a VM sabe enviar pacotes de volta ao meu MacBook, que os encaminha para o telefone novamente". Exatamente esse encaminhamento provavelmente não estava funcionando antes de você ativar o nat no seu Mac. Na minha resposta, me ofereci para habilitar o encaminhamento no Mac sem NAT, o que, espero, também resolveria o problema.
Andrey Sapegin
Exatamente, o encaminhamento de IP precisa estar ativado, mas suspeito que já foi porque eu ativei o Compartilhamento da Internet. Eu tentei o encaminhamento sem NAT, mas não funcionou. Obrigado pela sua ajuda, @AndreySapegin!
Sjoerd
Olá, estou com problemas para traduzir sua resposta para o trabalho da minha situação e poderia realmente ajudar. apple.stackexchange.com/q/363099/263848
JBis
-1

Se a VM for Linux, você precisará do tráfego de entrada do Nat e o poderá alterar. Isso é:

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

Comandos de 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
Lmwangi
fonte