Отключить обработку TCP в пространстве ядра OSX

Я пишу частичное переопределение TCP для целей обучения, используя Scapy. Мой TCP server.py не получает возможности отвечать на сообщения SYN, отправленные ему, потому что ядро ​​отвечает на них в первую очередь (OSX 10.10.5). Я прочитал pf.conf man-страница, но не похоже, что есть возможность создать правило, которое фильтрует пакеты из пространства ядра, но не из пространства пользователя (к сожалению, похоже, что Linux iptables предоставляет такую ​​возможность, QUEUE).

Я пробовал следующее pf правило, но он фильтрует пакеты напрямую (как из ядра, так и из моего приложения). Я хочу сказать, что я не вижу пакета с портом dest 3000 в wireshark.

Правило ПФ:

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

Команда nmap используется для генерации SYN:

nmap 192.168.1.12 -p 3000

Как я могу заставить ядро ​​передавать TCP-пакеты в пространство пользователя, ничего не делая?

1 ответ

Мой друг:

Является ли машина назначения такой же, как отправляющая машина? Если это так, перефразируйте nmap, чтобы использовать IP-адрес обратной петли так:

nmap -P0 -sT 127.0.0.1 -p 3000

Обратите внимание на дополнительные параметры. Затем, перефразируйте правило pf и добавьте его для выхода:

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

Если это работает, сожмите правило pf следующим образом:

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 

Если это не работает, проверьте pf, чтобы увидеть, были ли какие-либо пакеты сопоставлены с обоими правилами.

Надеюсь это поможет.

F.

Другие вопросы по тегам