mirror of
https://github.com/bol-van/zapret.git
synced 2025-05-24 22:32:58 +03:00
nfqws: synack desync mode
This commit is contained in:
@@ -244,11 +244,27 @@ mark is needed to keep away generated packets from NFQUEUE. nfqws sets fwmark wh
|
||||
nfqws can internally filter marked packets. but when connbytes filter is used without mark filter
|
||||
packet ordering can be changed breaking the whole idea of desync attack.
|
||||
|
||||
DESYNC COMBOS
|
||||
dpi-desync parameter can take 2 comma separated arguments.
|
||||
DPI DESYNC COMBOS
|
||||
dpi-desync parameter takes up to 3 comma separated arguments.
|
||||
zero phase means tcp connection establishement (before sending data payload). Mode can be "synack".
|
||||
Hostlist filter is not applicable to the zero phase.
|
||||
Next phases work on packets with data payload.
|
||||
1st phase mode can be fake,rst,rstack, 2nd phase mode - disorder,disorder2,split,split2.
|
||||
Can be useful for ISPs with more than one DPI.
|
||||
|
||||
SYNACK MODE
|
||||
In geneva docs it's called "TCP turnaround". Attempt to make the DPI believe the roles of client and server are reversed.
|
||||
!!! This mode breaks NAT operation and can be used only from devices with external IP address !
|
||||
In linux it's required to remove standard firewall rule dropping INVALID packets, for example :
|
||||
-A FORWARD -m state --state INVALID -j DROP
|
||||
In openwrt it can be done in /etc/config/firewall :
|
||||
config zone
|
||||
option name 'wan'
|
||||
.........
|
||||
option masq_allow_invalid '1'
|
||||
Otherwise raw sending SYN,ACK frame will cause error stopping the further processing.
|
||||
If you realize you don't need the synack mode it's highly suggested to restore drop INVALID rule.
|
||||
|
||||
VIRTUAL MACHINES
|
||||
Most of nfqws packet magic does not work from VMs powered by virtualbox and vmware when network is NATed.
|
||||
Hypervisor forcibly changes ttl and does not forward fake packets.
|
||||
|
@@ -187,7 +187,7 @@ nfqws
|
||||
--hostnospace ; убрать пробел после "Host:" и переместить его в конец значения "User-Agent:" для сохранения длины пакета
|
||||
--hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase
|
||||
--domcase ; домен после Host: сделать таким : TeSt.cOm
|
||||
--dpi-desync=<mode>[,<mode2] ; атака по десинхронизации DPI. mode : fake rst rstack disorder disorder2 split split2
|
||||
--dpi-desync=[<mode0>,]<mode>[,<mode2] ; атака по десинхронизации DPI. mode : synack fake rst rstack disorder disorder2 split split2
|
||||
--dpi-desync-fwmark=<int|0xHEX> ; бит fwmark для пометки десинхронизирующих пакетов, чтобы они повторно не падали в очередь. default = 0x40000000
|
||||
--dpi-desync-ttl=<int> ; установить ttl для десинхронизирующих пакетов
|
||||
--dpi-desync-fooling=none|md5sig|ts|badseq|badsum ; дополнительные методики как сделать, чтобы фейковый пакет не дошел до сервера
|
||||
@@ -297,16 +297,33 @@ mark нужен, чтобы сгенерированный поддельный
|
||||
Но лучше его все же оставить для увеличения скорости.
|
||||
|
||||
Почему --connbytes 1:4 :
|
||||
1 - для работы параметра wssize. scaling factor обычно устанавливается инициатором соединения в SYN пакете
|
||||
1 - для работы методов десинхронизации 0-й фазы и wssize
|
||||
2 - иногда данные идут в 3-м пакете 3-way handshake
|
||||
3 - стандартная ситуация
|
||||
4 - для надежности. на случай, если выполнялась одна ретрансмиссия
|
||||
|
||||
КОМБИНИРОВАНИЕ МЕТОДОВ ДЕСИНХРОНИЗАЦИИ
|
||||
В параметре dpi-desync можно указать 2 режима через запятую.
|
||||
В параметре dpi-desync можно указать до 3 режимов через запятую.
|
||||
0 фаза предполагает работу на этапе установления соединения. Может быть synack.
|
||||
На 0 фазу не действует фильтр по hostlist.
|
||||
Последующие режимы отрабатывают на пакетах с данными.
|
||||
Режим 1-й фазы может быть fake,rst,rstack. Режим 2-й фазы может быть disorder,disorder2,split,split2.
|
||||
Может быть полезно, когда у провайдера стоит не один DPI.
|
||||
|
||||
РЕЖИМ SYNACK
|
||||
В документации по geneva это называется "TCB turnaround". Попытка ввести DPI в заблуждение относительно
|
||||
ролей клиента и сервера.
|
||||
!!! Поскольку режим нарушает работу NAT, техника может сработать только с устройства с внешним IP адресом.
|
||||
Для реализации атаки в linux обязательно требуется отключить стандартное правило firewall,
|
||||
дропающие инвалидные пакеты. Например : -A FORWARD -m state --state INVALID -j DROP
|
||||
В openwrt это делается через опцию в /etc/config/firewall :
|
||||
config zone
|
||||
option name 'wan'
|
||||
.........
|
||||
option masq_allow_invalid '1'
|
||||
В противном случае попытка отослать SYN,ACK сегмент вызовет ошибку и операция будет прервана.
|
||||
Остальные режимы тоже не сработают. Если поймете, что вам synack не нужен, обязательно верните правило дропа INVALID.
|
||||
|
||||
ВИРТУАЛЬНЫЕ МАШИНЫ
|
||||
Изнутри VM от virtualbox и vmware в режиме NAT не работают многие техники пакетной магии nfqws.
|
||||
Принудительно заменяется ttl, не проходят фейк пакеты. Необходимо настроить сеть в режиме bridge.
|
||||
|
Reference in New Issue
Block a user