mirror of
https://github.com/bol-van/zapret.git
synced 2025-12-26 17:38:10 +03:00
nfqws: seqovl
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
zapret v.59
|
||||
zapret v.60
|
||||
|
||||
English
|
||||
-------
|
||||
@@ -253,6 +253,8 @@ nfqws
|
||||
--dpi-desync-split-pos=<1..1500> ; (только для split*, disorder*) разбивать пакет на указанной позиции
|
||||
--dpi-desync-split-http-req=method|host ; разбивка http request на указанном логическом месте
|
||||
--dpi-desync-split-tls=sni|sniext ; разбивка tls client hello на указанном логическом месте
|
||||
--dpi-desync-split-seqovl=<int> ; использовать sequence overlap перед первым отсылаемым оригинальным tcp сегментом
|
||||
--dpi-desync-split-seqovl-pattern=<filename>|0xHEX ; чем заполнять фейковую часть overlap
|
||||
--dpi-desync-badseq-increment=<int|0xHEX> ; инкремент sequence number для badseq. по умолчанию -10000
|
||||
--dpi-desync-badack-increment=<int|0xHEX> ; инкремент ack sequence number для badseq. по умолчанию -66000
|
||||
--dpi-desync-any-protocol=0|1 ; 0(default)=работать только по http request и tls clienthello 1=по всем непустым пакетам данных
|
||||
@@ -379,6 +381,26 @@ fakeknown отличается от fake тем, что применяется
|
||||
|
||||
disorder2 и split2 не предполагают отсылку фейк пакетов, поэтому опции ttl и fooling неактуальны.
|
||||
|
||||
seqovl добавляет в начало первой отсылаемой части оригинального пакета (1 часть для split и 2 часть для disorder)
|
||||
seqovl байт со смещенным в минус sequence number на величину seqovl.
|
||||
В случае split2 расчет идет на то, что предыдущий отсыл, если он был, уже попал в сокет серверного приложения,
|
||||
поэтому новая пришедшая часть лишь частично находится в пределах текущего окна (in-window).
|
||||
Спереди фейковая часть отбрасывается, а оставшаяся часть содержит оригинал и начинается с начала window,
|
||||
поэтому попадает в сокет.
|
||||
Серверное приложение получает все, что реально отсылает клиент, отбрасывая фейковую out-of-window часть.
|
||||
Но DPI не может этого понять, поэтому у него происходит sequence десинхронизация.
|
||||
|
||||
Для disorder2 overlap идет на 2-ю часть пакета. Обязательно, чтобы seqovl был меньше split_pos, иначе
|
||||
все отосланное будет передано в сокет сразу же, включая фейк, ломая протокол прикладного уровня.
|
||||
При соблюдении этого условия 2-я часть пакета является полностью in-window,
|
||||
поэтому серверная ОС принимает ее целиком, включая фейк. Но поскольку начальная часть данных из 1 пакета еще не принята,
|
||||
то фейк и реальные данные остаются в памяти ядра, не отправляясь в серверное приложение. Как только приходит 1-я часть пакета,
|
||||
она переписывает фейковую часть в памяти ядра. Ядро получает данные из 1 и 2 части, поэтому далее
|
||||
идет отправка в сокет приложения. Таково поведение всех unix ОС - оставлять последние принятые данные.
|
||||
Для windows серверов может быть наоборот, поэтому не факт, что такой вариант будет на них работать.
|
||||
Метод позволяет обойтись без fooling и TTL. Фейки перемешаны с реальным данными.
|
||||
split/disorder вместо split2/disorder2 по-прежнему добавляют дополнительные отдельные фейки.
|
||||
|
||||
Режимы десинхронизации hopbyhop, destopt и ipfrag1 (не путать с fooling !) относятся только к ipv6 и заключается
|
||||
в добавлении хедера "hop-by-hop options" , "destination options" или "fragment" во все пакеты, попадающие под десинхронизацию.
|
||||
Здесь надо обязательно понимать, что добавление хедера увеличивает размер пакета, потому не может быть применено
|
||||
|
||||
Reference in New Issue
Block a user