diff --git a/docs/changes.txt b/docs/changes.txt index 4044d6d..30245ea 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -526,3 +526,8 @@ install_bin: stop if no binaries found. display help text. winws: increase buffers for port filter tpws: tpws no more opens /dev/pf in OpenBSD by default. requires --enable-pf like in FreeBSD. this is migration from rdr-to to divert-to redirection scheme. install_easy: warn if --ipset parameter is specified + +v71.3 + +init.d: FILTER_MARK +nfqws: ts fooling diff --git a/docs/readme.en.md b/docs/readme.en.md index 492f5e9..a7d09c1 100644 --- a/docs/readme.en.md +++ b/docs/readme.en.md @@ -175,6 +175,7 @@ nfqws takes the following parameters: --dup-autottl=[[:[-]]|-] ; auto ttl mode for both ipv4 and ipv6. default: -1:3-64. "0:0-0" or "-" disables autottl. --dup-autottl6=[[:[-]]|-] ; overrides --dup-autottl for ipv6 only --dup-fooling=[,] ; can use multiple comma separated values. modes : none md5sig badseq badsum datanoack hopbyhop hopbyhop2 + --dup-ts-increment= ; ts fooling TSval signed increment for dup. default -600000 --dup-badseq-increment= ; badseq fooling seq signed increment for dup. default -10000 --dup-badack-increment= ; badseq fooling ackseq signed increment for dup. default -66000 --dup-start=[n|d|s]N ; apply dup to packet numbers (n, default), data packet numbers (d), relative sequence (s) greater or equal than N @@ -197,6 +198,7 @@ nfqws takes the following parameters: --dpi-desync-fakedsplit-pattern=|0xHEX ; fake pattern for fakedsplit/fakeddisorder --dpi-desync-ipfrag-pos-tcp=<8..9216> ; ip frag position starting from the transport header. multiple of 8, default 8. --dpi-desync-ipfrag-pos-udp=<8..9216> ; ip frag position starting from the transport header. multiple of 8, default 32. + --dpi-desync-ts-increment= ; ts fooling TSval signed increment. default -600000 --dpi-desync-badseq-increment= ; badseq fooling seq signed increment. default -10000 --dpi-desync-badack-increment= ; badseq fooling ackseq signed increment. default -66000 --dpi-desync-any-protocol=0|1 ; 0(default)=desync only http and tls 1=desync any nonempty data packet @@ -286,6 +288,12 @@ Fakes are separate generated by nfqws packets carrying false information for DPI * **datanoack** sends tcp fakes without ACK flag. Servers do not accept this but DPI may accept. This mode may break NAT and may not work with iptables if masquerade is used, even from the router itself. Works with nftables properly. Likely requires external IP address (some ISPs pass these packets through their NAT). +* **ts** adds to TSval ts increment value (-600000 by default). Servers discard packets with TSval in some range. + Practical tests suggest increment between -100 and -0x80000000. + Timestamps are generated by client OS. In linux timestamps are enabled by default. In windows by default timestamps are disabled. + They can be enabled with this command : `netsh interface tcp set global timestamps=enabled` . + ts fooling requires that timestamps are enabled. They must be enabled on every client OS. + TSecr is left unmodified. * **autottl** tries to automatically guess hop count to the server and compute TTL by adding some delta value that can be positive or negative. Positive deltas must be preceeded by unary `+` sign. Deltas without any unary sign are treated negative for old versions compatibility reasons. This tech relies on well known TTL default values used by OS : 64,128,255. diff --git a/docs/readme.md b/docs/readme.md index 087d141..91ef3fd 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -195,7 +195,8 @@ dvtws, собираемый из тех же исходников (см. [док --dup-ttl6= ; модифицировать ipv6 hop limit дубликатов. если не указано, используется значение --dup-ttl --dup-autottl=[[:[-]]|-] ; режим auto ttl для ipv4 и ipv6. по умолчанию: +1:3-64. "0:0-0" или "-" отключает функцию --dup-autottl6=[[:[-]]|-] ; переопределение предыдущего параметра для ipv6 ---dup-fooling= ; дополнительные методики как сделать, чтобы дубликат не дошел до сервера. none md5sig badseq badsum datanoack hopbyhop hopbyhop2 +--dup-fooling= ; дополнительные методики как сделать, чтобы дубликат не дошел до сервера. none md5sig badseq badsum datanoack ts hopbyhop hopbyhop2 +--dup-ts-increment= ; инкремент TSval для ts. по умолчанию -600000 --dup-badseq-increment= ; инкремент sequence number для badseq. по умолчанию -10000 --dup-badack-increment= ; инкремент ack sequence number для badseq. по умолчанию -66000 --dup-start=[n|d|s]N ; применять dup только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру больше или равно N @@ -211,13 +212,14 @@ dvtws, собираемый из тех же исходников (см. [док --dpi-desync-ttl6= ; установить ipv6 hop limit для десинхронизирующих пакетов. если не указано, используется значение --dpi-desync-ttl --dpi-desync-autottl=[[:[-]]|-] ; режим auto ttl для ipv4 и ipv6. по умолчанию: 1:3-20. "0:0-0" или "-" отключает функцию --dpi-desync-autottl6=[[:[-]]|-] ; переопределение предыдущего параметра для ipv6 ---dpi-desync-fooling= ; дополнительные методики как сделать, чтобы фейковый пакет не дошел до сервера. none md5sig badseq badsum datanoack hopbyhop hopbyhop2 +--dpi-desync-fooling= ; дополнительные методики как сделать, чтобы фейковый пакет не дошел до сервера. none md5sig badseq badsum datanoack ts hopbyhop hopbyhop2 --dpi-desync-repeats= ; посылать каждый генерируемый в nfqws пакет N раз (не влияет на остальные пакеты) --dpi-desync-skip-nosni=0|1 ; 1(default)=не применять dpi desync для запросов без hostname в SNI, в частности для ESNI --dpi-desync-split-pos=N|-N|marker+N|marker-N ; список через запятую маркеров для tcp сегментации в режимах split и disorder --dpi-desync-split-seqovl=N|-N|marker+N|marker-N ; единичный маркер, определяющий величину перекрытия sequence в режимах split и disorder. для split поддерживается только положительное число. --dpi-desync-split-seqovl-pattern=|0xHEX ; чем заполнять фейковую часть overlap --dpi-desync-fakedsplit-pattern=|0xHEX ; чем заполнять фейки в fakedsplit/fakeddisorder +--dpi-desync-ts-increment= ; инкремент TSval для ts. по умолчанию -600000 --dpi-desync-badseq-increment= ; инкремент sequence number для badseq. по умолчанию -10000 --dpi-desync-badack-increment= ; инкремент ack sequence number для badseq. по умолчанию -66000 --dpi-desync-any-protocol=0|1 ; 0(default)=работать только по http request и tls clienthello 1=по всем непустым пакетам данных @@ -339,6 +341,12 @@ dvtws, собираемый из тех же исходников (см. [док выяснено, что многие провайдерские NAT не отбрасывают эти пакеты, потому работает даже с внутренним провайдерским IP. Но linux NAT оно не пройдет, так что за домашним роутером эта техника скорее всего не сработает, но может сработать с него. Может сработать и через роутер, если подключение по проводу, и на роутере включено аппаратное ускорение. +* `ts` прибавляет к значению TSval таймштампа tcp значение ts increment (по умолчанию -600000). Сервера отбрасывают пакеты + с TSval в определенных пределах. По практическим тестам инкремент должен быть где-то от -100 до -0x80000000. + timestamps генерирует клиентская ОС. В linux таймштампы включены по умолчанию, в windows выключены по умолчанию. + Можно включить через команду `netsh interface tcp set global timestamps=enabled`. + ts fooling требует, чтобы таймштампы были включены, иначе работать не будет. Включать надо на каждом клиентском устройстве. + TSecr оставляется без изменений. * `autottl`. Суть режима в автоматическом определении TTL, чтобы пакет почти наверняка прошел DPI и немного не дошел до сервера (`--dpi-desync-autottl`). Или наоборот - TTL едва хватило, чтобы он все-таки дошел до сервера (см `--dup-autottl`, `--orig-autottl`). Берутся базовые значения TTL 64,128,255, смотрится входящий пакет (да, требуется направить первый входящий пакет на nfqws !).