diff --git a/README.md b/README.md index 1c03f00..70d071b 100644 --- a/README.md +++ b/README.md @@ -297,7 +297,7 @@ dvtws, собираемый из тех же исходников (см. bsd.txt невозможна. Если вы потом удалите файл, и у процесса не будет прав на создание файла в его директории, лог больше не будет вестись. Вместо удаления лучше использовать truncate. В шелле это можно сделать через команду ": >filename" -## АТАКА ДЕСИНХРОНИЗАЦИИ DPI +### АТАКА ДЕСИНХРОНИЗАЦИИ DPI ___ Суть ее в следующем. После выполнения tcp 3-way handshake идет первый пакет с данными от клиента. Там обычно `GET / ...` @@ -467,7 +467,7 @@ mark нужен, чтобы сгенерированный поддельный 3 - стандартная ситуация приема одного пакета запроса 4-6 - на случай ретрансмиссии или запроса длиной в несколько пакетов (TLSClientHello с kyber, например) -## КОМБИНИРОВАНИЕ МЕТОДОВ ДЕСИНХРОНИЗАЦИИ +### КОМБИНИРОВАНИЕ МЕТОДОВ ДЕСИНХРОНИЗАЦИИ ___ В параметре dpi-desync можно указать до 3 режимов через запятую. @@ -477,7 +477,7 @@ ___ Режим 1-й фазы может быть `fake`, `rst`, `rstack`. Режим 2-й фазы может быть `disorder`, `disorder2`, `split`, `split2`, `ipfrag2`. Может быть полезно, когда у провайдера стоит не один DPI. -## РЕЖИМ SYNACK +### РЕЖИМ SYNACK ___ В документации по geneva это называется "TCB turnaround". Попытка ввести DPI в заблуждение относительно ролей клиента и сервера. @@ -505,19 +505,19 @@ ip6tables -D zone_wan_output -m comment --comment '!fw3' -j zone_wan_dest_ACCEPT Если не принять эти меры, отсылка SYN,ACK сегмента вызовет ошибку и операция будет прервана. Остальные режимы тоже не сработают. Если поймете, что вам synack не нужен, обязательно верните правило дропа INVALID. -## РЕЖИМ SYNDATA +### РЕЖИМ SYNDATA ___ Тут все просто. Добавляются данные в пакет SYN. Все ОС их игнорируют, если не используется TCP fast open (TFO), а DPI может воспринять, не разобравшись есть там TFO или нет. Оригинальные соединения с TFO не трогаются, поскольку это их точно сломает. Без уточняющего параметра добавляются 16 нулевых байтов. -## ВИРТУАЛЬНЫЕ МАШИНЫ +### ВИРТУАЛЬНЫЕ МАШИНЫ ___ Изнутри VM от virtualbox и vmware в режиме NAT не работают многие техники пакетной магии nfqws. Принудительно заменяется ttl, не проходят фейк пакеты. Необходимо настроить сеть в режиме bridge. -## CONNTRACK +### CONNTRACK ___ nfqws оснащен ограниченной реализацией слежения за состоянием tcp соединений (conntrack). Он включается для реализации некоторых методов противодействия DPI. @@ -572,7 +572,7 @@ window size итоговый размер окна стал максимальн На склонных к бездействию соединениях следует изменить таймауты conntrack. Если соединение выпало из conntrack и задана опция `--dpi-desync-cutoff`, `dpi desync` применяться не будет. -## РЕАССЕМБЛИНГ +### РЕАССЕМБЛИНГ ___ nfqws поддерживает реассемблинг некоторых видов запросов. На текущий момент это TLS и QUIC ClientHello. Они бывает длинными, если в chrome включить пост-квантовую @@ -592,7 +592,7 @@ chrome рандомизирует фингерпринт TLS. SNI может о и заданы опции fake,split2, то перед первым пакетом идет fake, затем первый пакет в оригинале, а последний пакет разбивается на 2 сегмента. В итоге имеем фейк в начале и 3 реальных сегмента. -## ПОДДЕРЖКА UDP +### ПОДДЕРЖКА UDP ___ Атаки на udp более ограничены в возможностях. udp нельзя фрагментировать иначе, чем на уровне ip. Для UDP действуют только режимы десинхронизации `fake`, `hopbyhop`, `destopt`, `ipfrag1`, `ipfrag2`, `udplen`, `tamper`. @@ -612,7 +612,7 @@ ___ Атака fake полезна только для stateful DPI, она бесполезна для анализа на уровне отдельных пакетов. По умолчанию fake наполнение - 64 нуля. Можно указать файл в `--dpi-desync-fake-unknown-udp`. -## IP ФРАГМЕНТАЦИЯ +### IP ФРАГМЕНТАЦИЯ ___ Современная сеть практически не пропускает фрагментированные tcp на уровне ip. На udp с этим дело получше, поскольку некоторые udp протоколы могут опираться на этот механизм (IKE старых версий). @@ -669,7 +669,7 @@ options ip6table_raw raw_before_defrag=1 Видимо единственный рабочий метод - отказаться от iptables и использовать nftables. Хук должен быть с приоритетом 101 или выше. -## МНОЖЕСТВЕННЫЕ СТРАТЕГИИ +### МНОЖЕСТВЕННЫЕ СТРАТЕГИИ ___ `nfqws` способен по-разному реагировать на различные запросы и применять разные стратегии дурения. Это реализовано посредством поддержки множества профилей дурения. @@ -951,7 +951,7 @@ TCP_USER_TIMEOUT. Под таймаутом подразумевается вр что данных для передачи нет. Полезно для сокращения время закрытия подвисших соединений. Поддерживается только на Linux и MacOS. -## МНОЖЕСТВЕННЫЕ СТРАТЕГИИ +### МНОЖЕСТВЕННЫЕ СТРАТЕГИИ ___ Работают аналогично `nfqws`, кроме некоторых моментов. Нет параметра `--filter-udp`, поскольку `tpws` udp не поддерживает.