Pull to refresh

Comments 8

Круто, я тоже делал что-то подобное на tcp.
У меня был ядерный netfilter модуль для linux, я вмешивался в передачу данных, подменял часть сегментов своими данными, на принимающей стороне, соответственно, детектировал такие невалидные сегменты и отбрасывал их. Далее tcp решал что пакет потерялся и пересылал его автоматически.
Классно!
Код случайно не остался? Статья где-нибудь была?..
И, если не секрет, зачем этим занимались? ;)
just4fun?

Через прокси не проедет, там пакеты заново пересобираются

На самом деле даже через правильно настроенный фаервол.

Не особо силен в тонкостях протоколов, поэтому вопрос вызвают пара моментов:

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

При многопакетной передаче вы все таки должны упорядочить пакеты?

Мы узнали, что сканирование портов может оказаться совсем не сканированием портов.

Об этом только один коммент, если не сложно — поясните плиз)

Поле Sequence Number первого пакета соединения не является фиксированным, потому что иначе его бы могли знать злоумышленники (RCF 793). А это еще 4 байта.

В чем его «фиксированность»?

Получается что объем инфы, передаваемый на каждый пакет, варьируется?

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

При многопакетной передаче вы все таки должны упорядочить пакеты?

В данном случае схема работает только если пакеты доходят в том же порядке, в котором были отправлены. Поэтому приходится жертвовать скоростью (задержка между пакетами), чтобы использовать поле ID не по назначению.


Мы узнали, что сканирование портов может оказаться совсем не сканированием портов.

Об этом только один коммент, если не сложно — поясните плиз)

Пакеты "маскируются" под те, которые используются для сканирования портов, потому что каждый из них первый (и последний) в последовательности и именно это позволяет использовать Sequence Number.


Поле Sequence Number первого пакета соединения не является фиксированным, потому что иначе его бы могли знать злоумышленники (RCF 793). А это еще 4 байта.

В чем его «фиксированность»?

Обычно в Sequence Number записан порядковый номер первого байта данных. Если же установлен флаг SYN (т.е. это первый пакет с попыткой соединения), в поле Sequence Number может быть любое случайно выбранное число.


Получается что объем инфы, передаваемый на каждый пакет, варьируется?

Нет, всегда 6 байт, если пакет дойдет до получатела в первозданном виде :)

В данном случае схема работает только если пакеты доходят в том же порядке, в котором были отправлены. Поэтому приходится жертвовать скоростью (задержка между пакетами), чтобы использовать поле ID не по назначению.


Мне думается что в сетях где достаточно тонко настроен QoS — могут быть проблемы с сохранением порядка. Поправьте если не прав.

Не очень хорошо разбираюсь в этой теме. Возможно при высокой нагрузке на сеть действительно могут возникнуть проблемы.

Sign up to leave a comment.

Articles