Deaktivieren Sie die TCP-Verarbeitung des OSX-Kernel-Space

378
aeb0

Ich schreibe eine teilweise Neuimplementierung von TCP zu Lernzwecken mit Scapy. Mein TCP server.py hat keine Möglichkeit, auf SYN-Nachrichten zu antworten, die an ihn gesendet wurden, da der Kernel zuerst auf sie reagiert (OSX 10.10.5). Ich habe die pf.confManpage durchgelesen, aber es scheint nicht so, als ob es eine Option gibt, eine Regel zu erstellen, die Pakete aus dem Kernel-Space heraus filtert, nicht aus dem User-Space (frustrierend scheint es, dass Linux iptableseine solche Option bietet QUEUE).

Ich habe die folgende pfRegel ausprobiert, aber sie filtert Pakete direkt (sowohl aus dem Kernel als auch aus meiner Anwendung). Meine Basis dafür ist, dass ich das Paket mit Zielport 3000 nicht in Wireshark sehe.

pf Regel:

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

nmap-Befehl zum Generieren von SYN:

nmap 192.168.1.12 -p 3000 

Wie kann ich den Kernel dazu bringen, TCP-Pakete an den Benutzerbereich zu übergeben, ohne etwas zu tun?

3

1 Antwort auf die Frage

0
Francis from ResponseBase

Mein Freund:

Ist das Zielgerät das gleiche wie das sendende Gerät? Wenn ja, formulieren Sie die nmap so um, dass die Loopback-IP-Adresse wie folgt verwendet wird:

nmap -P0 -sT 127.0.0.1 -p 3000 

Beachten Sie die zusätzlichen Optionen. Als nächstes formulieren Sie die pf-Regel neu und fügen Sie eine für den Ausgang wie folgt hinzu:

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

Wenn dies funktioniert, verstärken Sie die pf-Regel wie folgt:

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  

Wenn dies nicht funktioniert, überprüfen Sie das pf, um zu sehen, ob Pakete mit beiden Regeln übereinstimmen.

Hoffe das hilft.

F.