-
Notifications
You must be signed in to change notification settings - Fork 85
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Регулирование ttl ? #48
Comments
К сожалению, это не представляется возможным, по крайней мере в текущей реализации. |
Понятно. Т.е. рабочего решения нет ? Просто провайдер со своим DPI накуролесил так, что теперь без опции корректировки ttl DPI теперь не обойтись. По факту, как оказалось, достаточно регулировать хедер хоста + ttl и тогда обход без проблем отрабатывает. В GoodbyeDPI это "-r --set-ttl 4". До этого было достаточно модификации хоста, с чем успешно справлялось большинство средств обхода DPI, включая PoweTonnel. Сейчас всё накрылось медным тазом по этой причине и работает только GDPI :/ |
Небольшая надежда на такой подход есть. Пока же под Android больше ничего нет кроме модификации SNI, отправлять фейковые пакеты здесь невозможно (им и должен выставляться низкий TTL) по причинам выше. |
Я пытался разобраться с этим методом обхода, но он так для меня и не заработал. Сертификат впихнул в ОС/браузер/curl (тестировал и на десктопе), но результатов это не принесло. Возможно надо попробовать это скомбинировать с модификацией хоста, мб тогда прокатит. Я тогда ворох опций при тестах запускал по изменению хоста, а DPI сейчас к хосту очень щепительно стал относиться. В этот раз буду пробовать что-то одно за запрос.
В похожем проекте https://github.com/zhenyolka/DPITunnel такая фича уже есть и его автор тоже пилил обход посредством модификации SNI, но я не его проверял т.к. с PT у меня не прокатило и я не стал дёргаться. Мб ещё потестирую. К слову. Там что-то и про ttl было, но не уровне базового функционала, а как недокументированная фича. |
Проверьте название сертификата, если это не
Я посмотрел это приложение, для реализации подмены SNI предлагается установить готовый корневой сертификат и подписанный автором программы, таким образом |
Погонял десктопный PT, по крайней мере мне теперь мне было более-менее ясно с какими опциями "набегать" на DPI. Отрубил всё под корень кроме "SNI Tricks" и опций "Allow invalid packets", "Allow requests to origin server" и обход при выборе "Fake SNI" таки сработал (остальные трюки не прошли). Но это работает лишь для https. Что делать с http в данном случае я хз. Хост без ttl трогать бесполезно :(
Однако. Это полезная информация. Спасибо за информацию и предупреждение.
Да оно в принципе не особо стабильное. У меня оно крешилось по велению левой пятки. В последний раз помогло обнуление настроек программы.
А, вот https://4pda.ru/forum/index.php?showtopic=981039&view=findpost&p=97979697 нашёл :
Нужно сообщить об этом автору программы, если, конечно, такая реализация не была намеренной (с учетом всех последствий описанных выше).
Могу передать ;) Автор в треде на 4pda общается с пользователями. |
Я думаю я должен был это задокументировать, но напишу пока здесь: я разделил параметры обхода блокировок на два блока: HTTP (для незашифрованного трафика) и HTTPS (для зашифрованного трафика). В незашифрованном трафике можно прочитать заголовок
Про TTL он что-то явно путает, поскольку, если я не ошибаюсь, единственный способ изменить TTL на Android - отредактировать системный файл, и то для этого требуется root-доступ. |
Сейчас вспомнил, что перепутал некоторые вещи - автор приложения выше не сможет расшифровать попавший к нему в руки трафик пропущенный через приложение (для этого нужен ключ дочернего сертификата используемого для подписи HTTPS-сертификатов, они генерируются на лету),, но может выпустить дочерний сертификат, который можно использовать для успешной MITM-атаки - он автоматически признается доверенным. Для этого даже не нужен ключ от корневого сертификата, так как благодаря этому приложение генерирует сертификаты для каждого сайта на лету. UPD: нет, я опять все перепутал, трафик расшифровать можно, причем автор загрузил в репозиторий (и в приложение) в том числе и private key, т.е. никакой ключ от него получать не нужно - он уже в публичном доступе. Этот сертификат ни в коем случае нельзя устанавливать. Дополнительные сведения. |
Так у меня ситуация всё-таки другая - с https и обходом через фейковый SNI всё ОК, а вот с http - облом. К слову. На смартфоне c PT 1.9 и фейковым SNI обход https провернуть не удалось. Вот какой выхлоп даёт curl (curlc в наличии, агент оттуда) при обращениии к рутрекеру через прокси PT :
Причём такой же выхлоп идёт даже при заглушенной вафле. Хром (прокси задан через /data/local/chrome-command-line) ругается на то, что :
Сертификат PT воткнут в ОС (для чистоты эксперимента). К слову о сертификате. Мб стоит сделать его установку по тому же принципу как это реализовано в AdGuard ? А то поначалу мне нужен был SNI, но не нужна установка сертификата из-за чего PT хоть и запускал прокси, но попап с установкой сертификата не убирал. А если я закрывал попап, то прокси вырубался. Ещё момент - если удалить сертификат из системы, то при рестарте прокси в PT с включённым SNI аж по 4 раза начинает предлагаться установка сертификата, пока PT не перезапустишь (тогда как и положено предлагается 1 раз).
Так. Я уже тоже запутался :D :D :D Что ему написать ? ))) Пока ничего не писал ))) |
Если я не ошибаюсь, то AdGuard без установки сертификата фильтрует рекламный трафик по IP-адресам и доменным именам, с установленным сертификатом он вмешивается в сам HTTPS-трафик и работает как обычное расширение AdBlock в браузере. По поводу DPITunnel, я в итоге пришел к выводу, что опция обхода SNI здесь абсолютно дырявая, она позволит без проблем MITMить и расшифровать трафик третьим лицам, поскольку в приложение зашит корневой сертификат с открытым и закрытым ключом - если кому-то не повезло его установить, его необходимо удалить из системы, так как удаления одного только приложения недостаточно. Шансы атаки конечно бесконечно малы, поскольку, естественно, приложение не настолько широко используется, как, например, Google Chrome, но дыру в безопасности оно может создать серьезную, если злоумышленник узнает о том, что этот сертификат был установлен. |
Гм. Я имел ввиду принцип установки и проверки сертификата, как это реализовано в AdGuard, а не принцип фильтрации посредством оного. Т.е. я имел ввиду сделать отдельный раздел или типа того, где есть тумблер для включения SNI. Дёргаешь тумблер - чекается установлен ли сертификат и если да - включается. Нет - предлагаеся установка. Плюс можно сделать такую же "альтернативную" установку в бразеры, которые не зависят от системных сертификатов типа firefox'a или oper'ы classic. Плюс в дополнение можно сделать сохранение сертификата на накопитель. В общем всё по лекалам AdGuard'a ))) т.к. сейчас манипуляции с сертификатом не слишком удобны, о чём я и писал выше :
Это я прекрасно понимаю ;)
Всё-nаки гляньте на досуге, мне кажется там всё видно куда наглядней чем в браузере (дополнительно тестирую на хроме)
На десктопе у меня работал только трюк "FAKE" поэтому я его на смарте и применял. Тем не менее, я последовал вашим рекомендациям (удалил сертификат а потом сделал "pm clear ru.krlvm.powertunnel.android" и заново настроил приложение с включённой опцией "Портить SNI", установив впоследствии сертификат) и изменений не увидел. Заблокированные сайты всё так же ловят 502 Bad Gateway, в хроме это ERR_TUNNEL_CONNECTION_FAILED. Разве что стали нормально работать другие https - сайты. До этого они ловили loop :
в хроме это было "ERR_TOO_MANY_REDIRECTS". После сброса редиректы исчезли. Фейковый SNI, как и ранее всё так же ничего не дал. Обычные http - сайты открываются нормально. Заблокированные соотвественно кажут заглушку.
В общем, этот абзац автору и передам ;) |
Ошибка 502 / Опцию "Очистить SNI" следовало бы назвать "Удалить SNI", поскольку не отправляет SNI вообще, что может вызвать "негативную" реакцию DPI или веб-сервера. |
502 Bad Gateway через прокси PT я наблюдаю даже при дезактивированной вафле. Причём выхлоп curl'a что при включённой вафле, что при выключенной идентичен. Будто траффик вообще не идёт через прокси.
После сброса приложения и сертификата проблема ушла. Сейчас тот же яндекс, который колбасило редиректами открывается нормально. Как сброс на это повлиял я ХЗ.
Как раз рутрекер и лостфильм я и проверял
Для меня на Андроиде пока не сработал ни один из вариантов. На десктопе работает только фейк - хост. p.s. В прошлом посте забыл упомянуть, что в случае, если используются браузеры с собственными сертификатами, как firefox, то нужен ещё один тумблер для включения SNI без установки сертификата. Имхо. |
Мне почему-то кажется, что PT по каким-то причинам не обходит DPI этим методом (SNI трюками) на смарте :/ Может стоит запилить логгирование, дабы стало ясно, где собака порылась ? |
А если с телефона подключиться к прокси PT на ПК с включенным SNI, то заблокированные сайты открываются? |
А разве у десктопного и андроидного PT одинаковые сертификаты ? Просто придётся довтыкать/перетыкать сертификат. Ну да ладно, проверю. К слову, хотел воткнуть системным сертификатом /data/misc/keystore/user_0/1000_CACERT_PowerTunnel+PRoot+PCA дабы не вводить пин-код, но openssl им подавился, пришлось его натравливать на pem (и втыкать pem), дабы снять хэш-имя для перемещения в /system/etc/security/cacerts/ |
Да, сайты открылись даже без десктопного сертификата ( рашел не заморачиваться с втыканием и попробовать так - прокатило). Хром правда агрился, что "ваше подключение не защено". В хроме судя по всему помог выставленный флаг --ignore-certificate-errors выставленный для ряда проблемных сайтов а что сработало для curl я хз >_< UPD: По поводу DPITunnel zhenyolka отписался на 4pda. Вот что написал по поводу переданного комментария касательно SIN :
вот что он написал по поводу потребления памяти :
|
Ростелеком опять что-то натворил и большая часть решений по обходу отвалилась. Под win работает Goodbye DPI с ключами
В PowerTunnel возможно организовать регуляцию ttl и аналоги ключей из "четвёрки" Goodbye DPI ?
The text was updated successfully, but these errors were encountered: