mirror of
https://github.com/bol-van/zapret.git
synced 2025-01-07 17:00:34 +05:00
nfqws: fakeknown, udplen desync modes
This commit is contained in:
parent
ffda684a43
commit
cd60a05f86
@ -222,3 +222,8 @@ nfqws: hop-by-hop ipv6 desync and fooling
|
|||||||
v46
|
v46
|
||||||
|
|
||||||
big startup script refactoring to support nftables and new openwrt snapshot builds with firewall4
|
big startup script refactoring to support nftables and new openwrt snapshot builds with firewall4
|
||||||
|
|
||||||
|
v47
|
||||||
|
|
||||||
|
nfqws: QUIC initial decryption
|
||||||
|
nfqws: udplen, fakeknown dpi desync modes
|
||||||
|
@ -152,7 +152,7 @@ nfqws takes the following parameters:
|
|||||||
--pidfile=<filename> ; write pid to file
|
--pidfile=<filename> ; write pid to file
|
||||||
--user=<username> ; drop root privs
|
--user=<username> ; drop root privs
|
||||||
--uid=uid[:gid] ; drop root privs
|
--uid=uid[:gid] ; drop root privs
|
||||||
--dpi-desync=[<mode0,]<mode>[,<mode2>] ; desync dpi state. modes : synack fake rst rstack hopbyhop destopt ipfrag1 disorder disorder2 split split2 ipfrag2
|
--dpi-desync=[<mode0,]<mode>[,<mode2>] ; desync dpi state. modes : synack fake fakeknown rst rstack hopbyhop destopt ipfrag1 disorder disorder2 split split2 ipfrag2 udplen
|
||||||
--dpi-desync-fwmark=<int|0xHEX> ; override fwmark for desync packet. default = 0x40000000
|
--dpi-desync-fwmark=<int|0xHEX> ; override fwmark for desync packet. default = 0x40000000
|
||||||
--dpi-desync-ttl=<int> ; set ttl for desync packet
|
--dpi-desync-ttl=<int> ; set ttl for desync packet
|
||||||
--dpi-desync-ttl6=<int> ; set ipv6 hop limit for desync packet. by default ttl value is used
|
--dpi-desync-ttl6=<int> ; set ipv6 hop limit for desync packet. by default ttl value is used
|
||||||
@ -183,8 +183,9 @@ WARNING. `--wsize` parameter is now not used anymore in scripts. TCP split can b
|
|||||||
|
|
||||||
After completion of the tcp 3-way handshake, the first data packet from the client goes.
|
After completion of the tcp 3-way handshake, the first data packet from the client goes.
|
||||||
It usually has `GET / ...` or TLS ClientHello. We drop this packet, replacing with something else.
|
It usually has `GET / ...` or TLS ClientHello. We drop this packet, replacing with something else.
|
||||||
It can be a fake version with another harmless but valid http or https request (fake), tcp reset packet (rst,rstack),
|
It can be a fake version with another harmless but valid http or https request (`fake`), tcp reset packet (`rst`,`rstack`),
|
||||||
split into 2 segments original packet with fake segment in the middle (disorder).
|
split into 2 segments original packet with fake segment in the middle (`split`).
|
||||||
|
`fakeknown` sends fake only in response to known application protocol.
|
||||||
In articles these attack have names **TCB desynchronization** and **TCB teardown**.
|
In articles these attack have names **TCB desynchronization** and **TCB teardown**.
|
||||||
Fake packet must reach DPI, but do not reach the destination server.
|
Fake packet must reach DPI, but do not reach the destination server.
|
||||||
The following means are available: set a low TTL, send a packet with bad checksum,
|
The following means are available: set a low TTL, send a packet with bad checksum,
|
||||||
@ -420,7 +421,11 @@ Set conntrack timeouts appropriately.
|
|||||||
|
|
||||||
UDP attacks are limited. Its not possible to fragment UDP on transport level, only on network (ip) level.
|
UDP attacks are limited. Its not possible to fragment UDP on transport level, only on network (ip) level.
|
||||||
Only desync modes `fake`,`hopbyhop`,`destopt`,`ipfrag1` and `ipfrag2` are applicable.
|
Only desync modes `fake`,`hopbyhop`,`destopt`,`ipfrag1` and `ipfrag2` are applicable.
|
||||||
`fake`,`hopbyhop`,`destopt` can be used in combo with `ipfrag2`.
|
`fake`,`hopbyhop`,`destopt` can be used in combo with `ipfrag2` and `udplen`.
|
||||||
|
|
||||||
|
`udplen` increases udp payload size by `--dpi-desync-udplen-increment` bytes. Padding is filled with zeroes.
|
||||||
|
This option can resist DPIs that track outgoing UDP packet sizes.
|
||||||
|
Requires that application protocol does not depend on udp payload size.
|
||||||
|
|
||||||
QUIC initial packets are recognized. Decryption and hostname extraction is supported so `--hostlist` parameter will work.
|
QUIC initial packets are recognized. Decryption and hostname extraction is supported so `--hostlist` parameter will work.
|
||||||
For other protocols desync use `--dpi-desync-any-protocol`.
|
For other protocols desync use `--dpi-desync-any-protocol`.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
zapret v.46
|
zapret v.47
|
||||||
|
|
||||||
English
|
English
|
||||||
-------
|
-------
|
||||||
@ -200,7 +200,7 @@ nfqws
|
|||||||
--hostnospace ; убрать пробел после "Host:" и переместить его в конец значения "User-Agent:" для сохранения длины пакета
|
--hostnospace ; убрать пробел после "Host:" и переместить его в конец значения "User-Agent:" для сохранения длины пакета
|
||||||
--hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase
|
--hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase
|
||||||
--domcase ; домен после Host: сделать таким : TeSt.cOm
|
--domcase ; домен после Host: сделать таким : TeSt.cOm
|
||||||
--dpi-desync=[<mode0>,]<mode>[,<mode2] ; атака по десинхронизации DPI. mode : synack fake rst rstack hopbyhop destopt ipfrag1 disorder disorder2 split split2 ipfrag2
|
--dpi-desync=[<mode0>,]<mode>[,<mode2] ; атака по десинхронизации DPI. mode : synack fake fakeknown rst rstack hopbyhop destopt ipfrag1 disorder disorder2 split split2 ipfrag2 udplen
|
||||||
--dpi-desync-fwmark=<int|0xHEX> ; бит fwmark для пометки десинхронизирующих пакетов, чтобы они повторно не падали в очередь. default = 0x40000000
|
--dpi-desync-fwmark=<int|0xHEX> ; бит fwmark для пометки десинхронизирующих пакетов, чтобы они повторно не падали в очередь. default = 0x40000000
|
||||||
--dpi-desync-ttl=<int> ; установить ttl для десинхронизирующих пакетов
|
--dpi-desync-ttl=<int> ; установить ttl для десинхронизирующих пакетов
|
||||||
--dpi-desync-ttl6=<int> ; установить ipv6 hop limit для десинхронизирующих пакетов. если не указано, используется значение ttl
|
--dpi-desync-ttl6=<int> ; установить ipv6 hop limit для десинхронизирующих пакетов. если не указано, используется значение ttl
|
||||||
@ -217,6 +217,7 @@ nfqws
|
|||||||
--dpi-desync-fake-unknown=<filename> ; файл, содержащий фейковый пейлоад неизвестного протокола для dpi-desync=fake, на замену стандартным нулям 256 байт
|
--dpi-desync-fake-unknown=<filename> ; файл, содержащий фейковый пейлоад неизвестного протокола для dpi-desync=fake, на замену стандартным нулям 256 байт
|
||||||
--dpi-desync-fake-quic=<filename> ; файл, содержащий фейковый QUIC Initial
|
--dpi-desync-fake-quic=<filename> ; файл, содержащий фейковый QUIC Initial
|
||||||
--dpi-desync-fake-unknown-udp=<filename> ; файл, содержащий фейковый пейлоад неизвестного udp протокола для dpi-desync=fake, на замену стандартным нулям 64 байт
|
--dpi-desync-fake-unknown-udp=<filename> ; файл, содержащий фейковый пейлоад неизвестного udp протокола для dpi-desync=fake, на замену стандартным нулям 64 байт
|
||||||
|
--dpi-desync-udplen-increment=<int> ; насколько увеличивать длину udp пейлоада в режиме udplen
|
||||||
--dpi-desync-cutoff=[n|d|s]N ; применять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N
|
--dpi-desync-cutoff=[n|d|s]N ; применять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N
|
||||||
--hostlist=<filename> ; применять дурение только к хостам из листа
|
--hostlist=<filename> ; применять дурение только к хостам из листа
|
||||||
|
|
||||||
@ -232,6 +233,7 @@ nfqws
|
|||||||
пакет сброса соединения (варианты rst, rstack), разбитый на части оригинальный пакет с перепутанным
|
пакет сброса соединения (варианты rst, rstack), разбитый на части оригинальный пакет с перепутанным
|
||||||
порядком следования сегментов + обрамление первого сегмента фейками (disorder),
|
порядком следования сегментов + обрамление первого сегмента фейками (disorder),
|
||||||
то же самое без перепутывания порядка сегментов (split).
|
то же самое без перепутывания порядка сегментов (split).
|
||||||
|
fakeknown отличается от fake тем, что применяется только к распознанному протоколу.
|
||||||
В литературе такие атаки еще называют TCB desynchronization и TCB teardown.
|
В литературе такие атаки еще называют TCB desynchronization и TCB teardown.
|
||||||
Надо, чтобы фейковые пакеты дошли до DPI, но не дошли до сервера.
|
Надо, чтобы фейковые пакеты дошли до DPI, но не дошли до сервера.
|
||||||
На вооружении есть следующие возможности : установить низкий TTL, посылать пакет с инвалидной чексуммой,
|
На вооружении есть следующие возможности : установить низкий TTL, посылать пакет с инвалидной чексуммой,
|
||||||
@ -453,8 +455,11 @@ window size итоговый размер окна стал максимальн
|
|||||||
|
|
||||||
ПОДДЕРЖКА UDP
|
ПОДДЕРЖКА UDP
|
||||||
Атаки на udp более ограничены в возможностях. udp нельзя фрагментировать иначе, чем на уровне ip.
|
Атаки на udp более ограничены в возможностях. udp нельзя фрагментировать иначе, чем на уровне ip.
|
||||||
Для UDP действуют только режимы десинхронизации fake,hopbyhop,destopt,ipfrag1,ipfrag2.
|
Для UDP действуют только режимы десинхронизации fake,hopbyhop,destopt,ipfrag1,ipfrag2,udplen.
|
||||||
Возможно сочетание fake,hopbyhop,destopt с ipfrag2.
|
Возможно сочетание fake,hopbyhop,destopt с ipfrag2 и udplen.
|
||||||
|
udplen увеличивает размер udp пакета на указанное в --dpi-desync-udplen-increment количество байтов.
|
||||||
|
Паддинг заполняется нулями. Предназначено для обмана DPI, ориентирующегося на размеры пакетов.
|
||||||
|
Может сработать, если пользовательсткий протокол не привязан жестко к размеру udp пейлоада.
|
||||||
Поддерживается определение пакетов QUIC Initial с расшифровкой содержимого и имени хоста, то есть параметр
|
Поддерживается определение пакетов QUIC Initial с расшифровкой содержимого и имени хоста, то есть параметр
|
||||||
--hostlist будет работать. Для десинхронизации других протоколов обязательно указывать --dpi-desync-any-protocol.
|
--hostlist будет работать. Для десинхронизации других протоколов обязательно указывать --dpi-desync-any-protocol.
|
||||||
Реализован conntrack для udp. Можно пользоваться --dpi-desync-cutoff. Таймаут conntrack для udp
|
Реализован conntrack для udp. Можно пользоваться --dpi-desync-cutoff. Таймаут conntrack для udp
|
||||||
|
Loading…
Reference in New Issue
Block a user