Replies: 3 comments
-
|
Да, абсолютно всё одинаково. Схема работы nfqws2Все методы работают одинаково
Фильтрация и десинхронизация — полностью независимые этапы. Фильтры (ipset, hostlist) — это просто способ сказать: "применяй стратегии только к ЭТИМ пакетам". А сами стратегии работают одинаково со всеми пакетами, которые до них дошли. |
Beta Was this translation helpful? Give feedback.
-
|
Отличный вопрос! syndata — это как раз случай, где есть разница! Проблема с syndata и hostlistПосмотрим на функцию -- nfqws1 : "--dpi-desync=syndata"
-- standard args : fooling, rawsend, reconstruct, ipfrag
-- arg : blob=<blob> - fake payload. must fit to single packet. no segmentation possible. default - 16 zero bytes.
-- arg : tls_mod=<list> - comma separated list of tls mods : rnd,rndsni,sni=<str>
function syndata(ctx, desync)
if desync.dis.tcp then
if bitand(desync.dis.tcp.th_flags, TH_SYN + TH_ACK)==TH_SYN then
local dis = deepcopy(desync.dis)
dis.payload = blob(desync, desync.arg.blob, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
-- ...SYN пакет — это первый пакет соединения. В нём НЕТ payload! Сравнение по методам
Почему так?
Практический выводЕсли нужны методы на ранних этапах соединения: # ✅ Работает - фильтрация по IP
nfqws2 --ipset=youtube_ips.txt \
--lua-desync=syndata:blob=fake_default_tls
# ❌ НЕ работает - hostname ещё неизвестен в SYN
nfqws2 --hostlist=youtube.txt \
--lua-desync=syndata:blob=fake_default_tlsДля Для |
Beta Was this translation helpful? Give feedback.
-
Фильтр payload по умолчаниюfunction payload_match_filter(l7payload, l7payload_filter, def)
local argpl = l7payload_filter or def or "known"
local neg = string.sub(argpl,1,1)=="~"
local pl = neg and string.sub(argpl,2) or argpl
return neg ~= (in_list(pl, "all") or in_list(pl, l7payload) or in_list(pl, "known") and l7payload~="unknown" and l7payload~="empty")
endПо умолчанию фильтр = "known", что означает:
Для MTProto
Нужно ли указывать
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Полный список обманок (fooling) в zapret2
🔹 IP/IPv4 модификации
ip_ttl=N- установить TTL (Time To Live) в IPv4 заголовкеip_ttl=5ip_autottl=delta,min-max- автоматическое определение TTLdelta,min-max(например:-1,3-20)🔹 IPv6 модификации
ip6_ttl=N- установить Hop Limit в IPv6 заголовке (аналог TTL)ip6_ttl=3ip6_autottl=delta,min-max- автоматическое определение Hop Limit для IPv6delta,min-max🔹 IPv6 Extension Headers (расширенные заголовки)
ip6_hopbyhop[=hex]- добавить Hop-by-Hop заголовок\x00\x00\x00\x00\x00\x00ip6_hopbyhop2[=hex]- добавить второй Hop-by-Hop заголовокip6_destopt[=hex]- добавить Destination Options заголовок (unfragmentable part)ip6_destopt2[=hex]- добавить второй Destination Options заголовок (fragmentable part)ip6_routing[=hex]- добавить Routing заголовокip6_ah[=hex]- добавить Authentication Header (усеченный)\x00\x00+ 4 случайных байта🔹 TCP модификации
tcp_seq=N- добавить N к TCP sequence numbertcp_seq=10000tcp_ack=N- добавить N к TCP acknowledgment numbertcp_ack=-66000tcp_ts=N- добавить N к TCP timestamp valuetcp_md5[=hex]- добавить TCP MD5 опцию (RFC 2385)tcp_md5илиtcp_md5=0x00112233445566778899aabbccddeefftcp_flags_set=<список>- установить TCP флагиFIN,SYN,RST,PSH,ACK,URG,ECE,CWRtcp_flags_set=PSH,URGtcp_flags_unset=<список>- снять TCP флагиtcp_flags_unset=ACK(для "datanoack" обманки)tcp_ts_up- переместить TCP timestamp опцию в начало🔹 Дополнительные опции
badsum- сделать контрольную сумму L4 невалиднойfool=функция- вызвать пользовательскую функцию обманкиfool_func(dis, fooling_options)📋 Популярные комбинации (из nfqws1)
В старой версии (nfqws1) были готовые комбинации:
md5sig→tcp_md5badseq→tcp_seq=-10000(для SYN) илиtcp_ack=-66000(для обычных пакетов)badack→tcp_ack=-66000datanoack→tcp_flags_unset=ACK💡 Примеры использования
Все эти обманки применяются функцией
apply_fooling()из библиотекиzapret-lib.luaи используются для обхода DPI систем путем создания пакетов, которые проходят через DPI, но отбрасываются целевым сервером или наоборот.Beta Was this translation helpful? Give feedback.
All reactions