Отправка пакетов в Netcat с адреса без привязки

Я установил неразборчивый режим с помощью ifconfig eth0 promisc, и в python я могу отправлять пакеты без привязки, делая это с необработанными сокетами. Я выполнил команду nc -vs 192.168.11.1 -p 22 192.168.11.2 22, чтобы узнать, могу ли я отправлять пакеты как другой компьютер, не имея привязанного адреса этой машины. Возможна ли эта функция в netcat или вам нужно выполнить привязку? В настоящее время машина не имеет адресных настроек, но находится в неразборчивом режиме, поэтому может видеть весь трафик.

ОБНОВИТЬ:

В python я создал шестнадцатеричную строку, затем использовал ее struct и send. Я использую ifconfig для установки беспорядочного режима (потому что я не мог понять, как это сделать в python) внутри скрипта bash, который затем запускает мой скрипт python, но как только он установлен, кажется, что он просто выбирает eth0 автоматически, не устанавливая ничего.

Я не был уверен, может ли netcat сделать это или нет, и ничего в утилите, кажется, не указывает на это. Я мог бы просто написать скрипт на Python, чтобы он работал с необработанными сокетами, если это возможно.


person NationWidePants    schedule 10.09.2014    source источник


Ответы (1)


Я не думаю, что это возможно с netcat, если только он не позволяет использовать необработанные сокеты (привязанные к интерфейсу).

Учитывая, что у вас нет настроек адреса, полезно посмотреть на вашу таблицу маршрутизации:

$ route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
$

например Пустой.

netcat по умолчанию использует TCP. Для сокетов TCP вам не нужно привязываться к исходному интерфейсу, но если вы этого не сделаете, стек ядра будет искать адрес назначения в таблице маршрутизации ядра, чтобы выяснить, из какого интерфейса его отправить. Поскольку адресация отсутствует, таблица маршрутизации пуста, и поиск маршрута завершится ошибкой. Таким образом, TCP не сможет отправить свой первый пакет SYN.

Одним из возможных обходных путей, который я рассматривал, было добавление соответствующего статического маршрута, который должен помочь отправить начальный SYN. Но TCP по-прежнему не будет работать, потому что, когда SYN-ACK возвращается от маршрутизатора с шестнадцатеричным переходом, маршрутизатор следующего перехода не будет иметь записи ARP для этой машины и не сможет разрешить ее, если машина имеет IP-адрес.

Если вас волнует только отправка трафика, вам могут сойти с рук UDP-сокеты и статический маршрут, но даже в этом случае стек ядра может этого не допустить.

Что касается необработанных сокетов в python, я предполагаю, что вы привязываетесь к локальному интерфейсу, что позволяет вам работать на более низком уровне и обходить проверки выше.

person Digital Trauma    schedule 10.09.2014