Desativa o manuseio de TCP no espaço do kernel do OSX

3

Estou escrevendo uma reimplementação parcial do TCP para fins de aprendizado, usando o Scapy. Meu TCP server.py não tem a chance de responder a mensagens SYN enviadas para ele porque o kernel responde primeiro a elas (OSX 10.10.5). Eu li a página pf.conf man, mas não parece que há uma opção para criar uma regra que filtre os pacotes do espaço do kernel, mas não do espaço do usuário (frustrantemente, parece que o linux iptables fornece tal opção, QUEUE ).

Eu tentei a seguinte regra pf , mas ela filtra os pacotes diretamente (tanto do kernel quanto do meu aplicativo). Minha base para dizer isso é que eu não vejo o pacote com dest porta 3000 em wireshark.

regra pf:

block drop quick on lo0 proto tcp from any to any port = 3000

Comando nmap usado para gerar o SYN:

nmap 192.168.1.12 -p 3000

Como posso fazer o kernel passar pacotes TCP para o espaço do usuário sem fazer nada?

    
por aeb0 09.01.2017 / 01:50

1 resposta

0

Meu amigo:

A máquina de destino é a mesma que a máquina de envio? Em caso afirmativo, reformule o nmap para usar o endereço IP de loopback da seguinte forma:

nmap -P0 -sT 127.0.0.1 -p 3000

Observe as opções extras. Em seguida, reformule a regra pf e adicione uma para saída como esta:

pass in quick on lo0 tcp from any to any 
pass out quick on lo0 tcp from any to any 

Se isso funcionar, aperte a regra pf assim:

pass in quick on lo0 tcp from 127.0.0.1 to 127.0.0.1
pass out quick on lo0 tcp from 127.0.0.1 to 127.0.0.1 

Se isso não funcionar, verifique o pf para ver se algum pacote foi combinado com as duas regras.

Espero que isso ajude.

F.

    
por 12.05.2018 / 16:58