
Комментарии 78
30 октября вышел релиз NoDPI4Android
Кстати, на GitHub пишут о том, что с Kaspersky утилита не работает (а точнее не открываются сайты), поэтому если он у кого-то есть, стоит иметь ввиду. Я сам, к сожалению, проверить не могу.
Касперкий может “самовольно” склеивать/упорядочивать пакеты при проверке исходящего трафика - ему ж надо знать не ботнет ли там что-то шаманит?. Т.е. работать как (условно) утилита “4DPI!!!”, обнуляя все усилия.
Так касперский же по дефолту свой локальный прокси вешает и лезет в защищенные соединения (подменяет серт чтобы трафик сканить).
получается твоя тулза режет пакеты и крутит ttl на локалхосте, а каспер их тут же у себя перехватывает, заботливо склеивает обратно в нормальный стрим, проверяет и в сеть наружу выплевывает уже чистый целый ClientHello от своего имени. лечится только отключением проверки защищенных соединений в настройках ав, по-другому тут никак не обойти
Ну я так же думаю, только чет вроде там не помогает отключение этой настройки.
а, ну если даже галка не спасает, значит у них перехват ниже сидит, на уровне их ndis-драйвера (сетевого экрана). он тупо буферизует весь tcp-поток в ядре до отправки в сетевуху, и твой setsockopt с ttl=1 до реального интерфейса просто не долетает в нужном виде. тут походу только всю “веб-защиту” целиком вырубать или процесс питона в исключения антивируса закидывать
Проще вынести утилиту на домашний роутер перед компом, тогда антивирус на рабочей станции вообще не будет видеть сетевую магию
каспер прокси на дороге ставит. решение - поднимать сабж на апстриме.
Интересно, что будет если слать фрагментированные кусочки SNI c некоторым интервалом? По идее DPI стараясь собрать их будет выделять под это некоторый буфер. Есть ли у DPI некоторый таймер после которого он очищает этот буфер? Если есть, можно попытаться обмануть его растянув рукопожатие во времени, а если нет, то можно переполнить память на DPI системе посылая много фрагментов с длинными интервалами.
Главное чтобы злоумышленники не попытались использовать это для нарушения работы критической инфраструктуры (это - уголовная статья!) засылая много кусочков большого размера с целью переполнения этого буфера, возможно, даже, исполнения произвольного кода при выходе за его границы. Это ж так можно будет рунет пололжить! (злоумышленникам)
Да, я пробовал так (в статье это упомянуто). Если делать небольшой интервал (до 1 с), то иногда, в 10% случаях, может проскочить, но в целом не работает. Если увеличить интервал, то происходит обрыв соединения.
Тут есть тонкость в том, что
1. Пересборка может выполняться по разному на ТСПУ и на сервере (что я вижу), значит они могут увидеть и понять разный трафик:
1.1 Удаленный сервер (условный ютуб) и ТСПУ могут иметь разные таймауты. Ютуб ждет пакета 10 секунд а ТСПУ 20, к примеру. Или наоборот.
1.2 Возможно они по разному решают проблему overlap пакетов. Например, в некотором пакете идет sequence от 1000 до 1500, а в следующем идет от 1100 до 1600. Они перекрываются. Как поступить? Какой-то из них отбросить? Принять оба? А какие данные взять на интервал 1100-1500 - из первого или из второго?
1.3 Переполнение памяти, да. Сначала пакет со смещением 0, а потом сразу с window scaling куда-нибудь на терабайты вперед. Как ТСПУ отнесется? Какие-то пакеты будет игнорировать? это уже интересно!
2. TTL !! Это же вообще шикарно! Это отличный способ показать ТСПУ какой-то трафик, но не показывать его ютубу. Например, послать RST или трафик с другим SNI (который до ютуба даже и не дойдет).
В общем, мне кажется, это битва щита и меча в которой промежуточный фильтр в конечном итоге обречен проиграть (ну или тупо слить сложную игру до файрвола из 90-ых годов, который только сетку сбербанка и озона дозволяет и все). Но они ведь так не делают - значит, есть на то причины, ограничения.
2. TTL !! Это же вообще шикарно! Это отличный способ показать ТСПУ какой-то трафик, но не показывать его ютубу. Например, послать RST или трафик с другим SNI (который до ютуба даже и не дойдет).
Так вовсю же уже используется.
Да и переупорядочивание посредством задействования TTL=1 давно уже присутствует в других подобных прогах.
В чём новость не совсем понял.
Да и переупорядочивание посредством задействования TTL=1 давно уже присутствует в других подобных прогах.
А нужно не только с TTL=1 играться, а в начале определять количество хопов до цели по текущему маршруту через описанный в статье алгоритм. А затем, если нужно чтобы пакет не дошел, ставить TTL меньше, но рандомные значения. Или сделать настройку количества хопов, при которых пакет гарантированно не дойдет, например 5, и сразу использовать случайные значения для TTL.
Но это тема для следующей итерации :)
Но они ведь так не делают
Пока что.
В статье автор как раз писал про такие задержки. Пробивается только одно соединение из десяти, остальные уходят в дроп
Очень рад что вы живы и развиваете проект.
Очень полезная утилита. Для академических исследований сети конечно
А с чем может быть связано такое поведение на ютубе:
Видео загружается и показывается и потом затыкается на случайной метке времени, кратной примерно 20 с. Чаще всего на 20 и затыкается. Потом варианты 39-41 и тд, но это уже редко. Но можно перегрузить и сдвинуть на 21 и дальше идет, а может и не пойти. С вэпеном такого нет.
Ну похоже на обрыв соединений к googlevideo.com. По всей видимости, плеер качает видео кусками примерно по 20 с, и каждый новый кусок может идти новым соединением, которое режется. Проверьте, что в blacklist.txt есть googlevideo.com, и посмотрите лог (--log-access, --log-error) в момент остановки (желательно прервать сразу после этого по ctrl+c, чтобы буфер гарантированно сбросился). Пришлите в issues, поразбираемся.
Хм, раз отвечаете может и мне повезет, у меня с ютуб прикол что морда с превьюшками нормально грузится, а вот шрифты, само видео - нет и так с любыми флагами и с любыми антидипиайками, как поднимаю туннель на всю систему - видео и шрифты идут. Мне говорили что само видео с шрифтами идет по юдп, а антидипиайки его не трогают, вот и результат, но я так и не разобрался.
В новой версии пока такого не было, продолжаю наблюдение.
del
Такое бывает у меня. Обновляю cidr для заворачивания в тунель подсетей Гугла и ютуба
Хотелось бы чтобы эта игра в кошки-мышки уже прекратилась. Я не готов регулярно отдавать свое время на настройку того что раньше работало без костылей! Есть конечно свои плюсы, можно стать сетевым инженером и пойти в It, но в нынешних реалиях я уже начинаю сомневаться в том что бизнесу нужны люди, и возможно, китайский "клод код" на виртуалке с бэкапами будет более дешёвый и эффективный вариант.
Судя по новостям со всего мира, запретов, ограничений и прочих палок в колёса интернете меньше не станет уже никогда. Наверху уже чухнулись, что надо контролить всё, и не отпустят.
Ну тут тогда только AviaSales
на Марс билетов нет на текущий год, а на нашем шарике контроль только растёт.
Да, но в разных частях шарика отдача разная. Где-то пол Инета забанили и пипл схавал, а где-то соцсети и люди подняли бунт.
Там, где бунт, с большой вероятностью бан всего лишь использовали как повод для раскручивания цветной революции. Я слыхал про Иран и Непал, а где ещё? Причём поводом может быть что угодно, см. Сербию, например.
Насчёт зажимания свободы слова - тут вроде как даже не мы впереди всех, и не Китай с КНДР, а по числу посадок за комменты с далёким отрывом Британия. Но могу ошибаться.
Зажмут везде, скорее всего, возможно, оставят пару стран в качестве заповедника, а в остальных, кто сам не зажмёт, тех снаружи придавят. Власти поняли, как мне кажется, опасность интернета, и теперь уже не отпустят вожжи.
Можешь и ошибаешься, сколько можно эту пасту разносить. В Британии наказывают в большинстве своем за оскорбления, при этом посадок или вообще нет или единицы, в основном штраф.
Насчёт зажимания свободы слова - тут вроде как даже не мы впереди всех, и не Китай с КНДР, а по числу посадок за комменты с далёким отрывом Британия.
Но это же известный фейк, вброшенный Илоном Маском, сколько можно его мусолить.
Что сделал господин Маск: взял реальную статистику, собранную "Таймс". Согласно которой в Британии производилось 12 тысяч арестов в год на основании закона о коммуникациях и закона о вредоносных сообщениях. И преподнёс это как "уууу, арестовывают за слова, фашисты".
Но, во-первых, арест в Британии не означает наказание и, тем более, посадку. Это задержание для допроса. Дальше чаще всего либо отпускают, либо виновный отделывается предупреждением или штрафом, реже тюрьма. При этом, до суда вообще доходят лишь 10% арестованных. Из-за чего некоторые политики всю эту систему критикуют, мол полиция впустую тратит время на тех, кто не виноват.
Во-вторых, эти 12 тысяч арестов не равны 12 тысячам комментариев в интернете. По этим статьям проходят, например, письма о лжеминированиях, сообщения с угрозами (а-ля "я тебе лицо кислотой выжгу, ты любовница моего мужа!"), посты с оскорблениями. В России это всё идёт по другим статьям (и наказывается), а у них сложилось вот так.
То есть вас не посадят на чудовищные 5-15 лет, как в России дают за "фейки про армию" или "оправдание терроризма".
Есть прекрасное шоу, КВН... местами дешево показывают, в районе 100р и вполне годное качество. Я бесплатно смотрел пару дней когда у нас были БСки.
Есть просто психологическая проблема впервые заплатить за такое (если раньше не требовалось платить), но если подумать, 100р - не деньги, да и добрым людям помочь - всегда хорошо. Проще им дать и все. И дальше - Свободный Интернет, как при Борисе Николаевиче, батюшке!
Свободным интернет был и посое него, причём достаточно долгое время. Золотыми были времена, когда появился DSL, а сам интернет был ещё для модемов. Такого сочетания скорости, свободы общения и начинавшегося разнообразия контента уже не будет никогда. А БН батюшкой не был никогда, так себе он персонаж был.
Я тоже мечтаю вернуться или как-то попасть в то время или место, где изучают новые технологии, а не бесконечную борьбу с цензурой. Но увы, в этой стране блокировки навечно.
Как то вы противоречите что ли... технологии всегда рождались в противостоянии. А в блаженстве по дивану растечётесь
Это противостояние контрпродуктивно, ничему новому оно не учит. Его можно сравнить с "крипторами" для защиты от антивирусов на винде. Когда одни люди днями и ночами морфят код, разбивают инструкции, скрывают строки, в общем, придают малварке вид легитимного приложения. А с другой стороны такие же "дятлы" добавляют все новые и новые сигнатуры, параллельно убивая upx и так далее.
Я не хочу воевать, тем более с родным государством, хочу развиваться! Изучать новые технологии,а не морфить сетевые пакеты, чтобы посмотреть шортс на ютубе. За эти деньги и ресурсы можно было-бы много чего полезного сделать.
Браво,
вы даете возможность заниматься ниокр-ом на стороне рдп.ру, можно сказать выбиваете деньги из правительства, если конечно вы сами не оттуда)
Наивно пологать, что они не знают этого без меня.
если конечно вы сами не оттуда
Ага, двойной агент)
Ну знать и закодировать на ограниченном ресурсе fpga те костыли, что вы им соорудили, и чтобы при этом не только не упал Интернет всея Руси, но и выдержать pps это конечно не лезвие бритвы, но у нас в стране и этот опыт многого стоит.
У них же есть и нормальные продукты, однозначно на часть бюджета с тспу содержат другие направления.
Наивно пологать, что они не знают этого без меня.
А вдруг? Может они только из статей на Хабре узнают что их опять опередили )
Они вообще могут как-то отслеживать изменение трафика с ютуба, заметить что количество обходов увеличилось, и сделать вывод что появилось новое решения для обхода?
Новая статья про обход блокировок, и вот обязательно появятся очередные "всёпропальщики", которые предлагают методы инквизиции, стреляя себе в ногу и рекомендуя всем делать то же самое.
Поймите же, "security through obscurity" - это невыгодный вариант ведения информационной битвы практически во всех случаях!
К сожалению, все это — гонка вооружений: если ТСПУ научится собирать переупорядоченные потоки (а это рано или поздно случится)
Тут все упирается в железо, даже если известен метод. Можно все надежно проанализировать и перехватить, но стоимость оборудования ТСПУ будет запредельной.
Мне кажется, не научится. Эта задача в пределе - нерешаемая. Это не просто "дописать код" и даже не просто "добить памяти в ТСПУ", это - принять много решений, каждое из которых противоречивое. Я выше привел примеры, которые я вижу. Любое решение каким-то способом автоматически даст возможность обхода другим способом.
Эта задача в пределе - нерешаемая.
С чего это? Спецификации конечны, конкретные веб-сервера тоже определены. Просто при создании ТСПУ была несколько облегчена задача.
Рано или поздно (имхо скорее рано) будет состояние "или ТСПУ ловит соединение, или стандартный Apache/nginx не может нормально обработать слишком модифицированные пакеты".
Майкрософтский IIS, кстати, уже не может)
Ну глупость же, веб серверы работают на L7
Я тут отвлекся, пропустил ответ.
Спецификации допускают свободу, а еще спецификации учитывают вещи, которые не знает ТСПУ (например, ТСПУ видит пакет1 и пакет2 в этом порядке, но он не может знать, придут они в этом же порядке или нет).
Пример свободы интерпретации вот с клодом поковыряли:
Частично старый (а ТСПУ не знает точно, в каком порядке придут)
(начало уже подтверждено, хвост новый): по RFC приёмник должен принять только ту часть, что попадает в окно, а уже полученный префикс отбросить. Это штатный случай при ретрансмиссии, когда отправитель пересобрал сегменты по-другому (например, склеил два мелких в один).
Целиком внутри окна, но не с RCV.NXT
(дырка перед ним): сегмент можно сохранить в очереди как out-of-order или отбросить. RFC 793 допускает оба варианта, на практике все современные стеки буферизуют. В ответ уходит дубль-ACK (а при SACK, RFC 2018, ещё и информация о том, какие блоки получены).
про перекрывающиеся:
Если же два сегмента перекрываются и содержимое в перекрытии отличается, спецификация не говорит, какой вариант правильный. Реализации выбирают сами:
“First wins”: данные, пришедшие раньше, остаются, новые байты в перекрытии игнорируются. Так делают, например, Windows и многие BSD-подобные стеки.
“Last wins”: более новые данные перезаписывают старые. Это поведение встречалось у некоторых версий Linux и других стеков, но оно менялось от версии к версии.
Точная картина зависит от версии ядра, и в деталях (особенно что происходит с перекрытием внутри out-of-order очереди и в tcp_data_queue) я бы не стал утверждать универсально. Если вам нужно знать поведение конкретной ОС, это стоит смотреть в исходниках или проверять экспериментально.
====
В общем, TCP разработан без учета, что кто-то по пути пакостит, и без учета, что клиент сам пытается напакостить пакостнику :-).
А почему бы просто не запретить все что зашифровано и считать раз пакет идёт незнамо куда значит он вражина 😁
Честным людям скрывать нечего.
Тру киберпанк-рутина : чтобы включить ребенку мультики, настраиваем перестановку сегментов на питоне)
Мне интересно, а те разрабы, которые пилят этот самый ди-пи-ай, у них какая мотивация? Просто работают, потому что хочется кушать?
Деньги не пахнут (c)
Скрытый текст

Знакомый работает в субподряде ркн техником/наладчиком. Зп на старте без опыта сильно выше, чем у меня (системный/асутп инженер 5 лет). Сделка с совестью, как есть
Нет, там не все так просто. Есть бауманка. Есть структуры, которые прельщают ранним выходом на пенсию и военной службой в органах. Вот они частично и служат в РКН. Остальные вольнонаемные.
Так что для первых невыполнение приказа - уголовка. А если есть льготная военная ипотека, то еще и рабство до окончания. Их по рукам и ногам вяжут. Товарищ оттуда увольнялся 3 года.
Как-то попадалось высказывание цензора 200 летней давности - мол как вы сам литератор, могли пойти в цензоры? Ответ - а лучше я чем, дуболом... Кстати потом "лайтовых цензоров" разогнали и правда пришли дуболомы и стало совсем плохо...
Это замечательно! А для андроида версию будете обновлять?
С помощью бесплатного deepseek перевел sample_version с http на socks результат: каспер перестал блочить youtube (win10; chrome 156.0.8078.48 ; каспер free. в FF 158.0.1 проблема осталась)
Хочу автозагрузку и включение / выключение системного прокси по значку в трее :)
Хотя лучше пусть сам прокси включает при запуске, при выгрузке возвращает назад
30 октября вышел релиз NoDPI4Android
пользуюсь, очень стабильный по сравнению с аналогами, пару раз когда что-то отваливалось достаточно было написать git pull. очень хочется дискорд, на аналогах дискорд не работает вообще =(

NoDPI v2.3: они научились собирать фрагментированный ClientHello, а мы научились это исправлять