Площадь атаки sing-box костылей на Android

Понимаю, но что Вы предлагаете сделать в данном случае тогда?

Так Вы определитесь можно ли geoip правила обойти или нет.

Я Вас понял, только не пойму что Вы хотите в итоге? Способ решение или диалог что такая проблема существует? Проблема в реализации api на стороне android. С ПК я с того же nekobox Вам выслал скрин что такая схема не прокатывает на ПК, приходит HTTP/400 и всё.

Решение через конвертирование L2/L3 в L4 возможно поможет. Или гарантированно устанавливать VPN на роутер и там ставить правила, но это костыли, а не решение проблемы

Можно обойти и geoip правило, и per-app туннелирование. Подумали бы хоть немного, прежде чем писать.

this.

На ПК существование этой проблемы зависит от изоляции приложений, настроек фаерволла. На скрине, который вы вчера отправили, не было совершено запроса curl’ом через прокси, а HTTP 400 нельзя однозначно трактовать, потому что непонятно, какой тип прокси использует Nekoray.

V2RayNG, Nekoray нужно по умолчанию отключить прокси сервис, добавить возможность установить методы аутентификации. Я не встречал приложений, которые бы отказывались работать из-за наличия tun интерфейса. Насколько я понимаю, по правилам GPlay такое приложение нельзя выпускать в стор. Но даже для такого эджкейса можно договориться об IPC соединениях с разработчиками, или, что проще, попросить их внедрить методы аутентификации.

Думаю, от этого можно защититься, используя double vpn. Когда входной IP не равен выходному. У некоторых коммерческих сервисов такое реализовано. Таким образом, вражий сервер узнает только выходной IP впна и не узнает входной (к которому соединяется пользователь на стороне ISP), соответственно не сможет заблокировать.

К примеру, может заблокировать выходной (у местных китайских сайтов для входящих). Это приведёт к тому, что через VPN местные сайты не откроются. Хотя, на местные сайты через VPN обычно не ходят в Китае.

Те, кто настраивает впски, знают ли об этом? Надёжнее защититься разнеся IP.

Не поможет, если добавить уникальности пользователям. Скажем, возьми с такого-то зарубежного сервера файл по уникальному пути. Но это действительно усложнит техническую реализацию.

Двойной впн у Китайцев повсеместен.

Я думаю можно такое реализовать через warp от CF или через worker (BNB панель (точного названия не помню)) от того же CF. И получается напрмимер User ↔ VPS w/ VLESS ↔ WARP.

Представим такую картину. Есть полезный местный сервис (в виде сайта в браузере на десктопе или мобильное приложение на смартфоне), но со злым намерением среди прочего вычислить vpn.
Предположим, сервис делает два запроса (javascript логикой).

  1. на местный whatsmyip сервис. на девайсе nekoray или nekobox по geoip отправляют запрос напрямую. сервис узнаёт местный ip и может идентифицировать пользователя.
  2. на зарубежный, но подконтрольный whatsmyip сервис. на девайсе nekoray или nekobox по geoip проксируют трафик через прокси. Если это double proxy (или double vpn), сервис (напомню, местное приложение или вкладка в браузере) может узнать выходной IP прокси (хотя, пользы от этого немного, разве что детектится факт обмана gfw). Какой входной IP прокси сервис вроде бы узнать не может, ведь соединениями заведует система. В браузере думаю на этом всё и ограничится. А если отдельное приложение и ему не помешает системный файервол, оно может проверить хопы по ICMP (traceroute). И в некоторых случаях посмотреть сетевые настройки. А затем сложить А и Б. Хотя, ICMP ведь через прокси не пройдёт, а через полноценный VPN пройдёт.

Таким образом, geoip разделение не очень надёжно. Надо или per app или всё пускать через VPN/прокси. Но тогда на местные сайты не ходить (ничего критичного, вы будете как иностранец, но незачем). А если ходить, то не авторизовываться (утечка). Можно для местных завести отдельный браузер или девайс.

Но это всё имеет значение, если цензор настолько мощный, что может сверять запросы со всех ISP в стране, сравнивать с логами проверочных серверов. Я думаю, непростая задача.

Допустим, но помним, но ipv4 не бесконечны, а их всего 4 млрд., людей в 2 раза больше, а устройств ещё в 5 раз больше (у большинства есть телефоны, планшеты (оба с симкой), роутеры, общественные роутеры и так далее). За NAT около нереально вычислить кто сидит, даже в офф. документе РКН про новый закон просят до NAT ставить ТСПУ.
изображение


Я сделал tracert до google.com, очень интересно от Вас узнать где ip моего vpn.
Да и фикситься это легко, пишется вот эта команда на VPS:

sudo iptables -A INPUT -p icmp -j DROP

И выглядить Ваш VPS будет вот так:
изображение

Чем сетевые настройки помогут в обнаружение IP VPS? Понять что есть адаптер? Есть ещё 100500 способов понять что у юзера VPN стоит.

В большинстве случаев такой вариант будет означать покупку ещё одного девайса, IMEI, Fingerprint у браузера и другие опознавательные методы никуда не деваются.

UPD: насчёт curl на ПК с nekobox:


И выдаёт мой ip, а не ip VPS

V2RayNG не использует sing-box вообще. Название ветки (Площадь атаки sing-box костылей на Android) вводит в заблуждение.

Есть Аndroid приложения, использующие ядро sing-box, но не создающие по умолчанию прокси на локалхосте - тот же SFA.

И правда, V2RayNG не использует sing-box. Я изначально использовал неправильный, но, поверьте, и костыли этим страдают.

вводит в заблуждение.

Я постараюсь найти время задокументировать свои тесты.

Не прокатит из-за возможности корреляции трафика. Провайдеры передают цензору передают пользовательские идентификаторы, злое приложение в нашем сцценарии тоже присваивает каждому пользователю уникальный идентификатор. Тогда цензору необязательно сверять трафик множества людей. Атака всё ещё экономична. А, блин, вы и так с этим согласны…

Не совсем понимаю, к чему это, если на устройстве с доступом за стену не будет зловредных приложений в принципе.

Чуточку лучше, Но настройка из коробки, вероятно, следует какому-то встроенному geoip правилу, так что к ней применима наша дискуссия. Но я не готов хулить разработчика за это, потому что у десктопа в принципе по умолчанию отсутствует модель безопасности. К моменту, когда зловредное приложение окажетс на компьютере, у среднестатистического пользователя Linux/Windows будут проблемы куда хуже.

На самом деле, у современных версий Android нет сетевой взаимосвязи между главным пользователем и остальными. Можно содержать государственные приложения в приватной области/профиле, тем самым отбивая нужду во втором телефоне.

На моём скрине видно что localhost всё таки поднят и используеться. Нет, вы не угадали, все geoip правила стоят на стороне сервера (по причинам более страшего поколения, которому 1 большую кнопку для вкл или выкл нажать - уже надо диплом получать по сис. администрированию, не суть), только private идёт напрямую, и то, я проверил и удаление всех geoip правил оставляет ситуацию прежней.
Тут всё проще, приложение просто не в тунеле. То есть если приложение не в тунели, будет отдан мой настоящий ip, а если в тунели то…? IP vps, но приложение и так через VPS идёт.

Единственное сценарий как можно спалить реальный ip VPS это если только некоторые домены проксируется через CF, а другой домен - нет. На ПК это проблемма неактуальна. Приложение видит прокси на localhost, но ip он выдаёт реальный, а не VPS.

Ну а реальный IP vps будет скрыт в итоге. Если за каждым будут приходить космонавты с волшебными палочками, то это нанесёт общего ущерба в сотни раз больше, чем просто этого не делать. Да и не забываем про WS, gRPC и другое

Не могу проверить, на моём пикселе при попытки открытия Termux в private space, появляется ошибка “Unable to install bootstrap. Termux can only be run as the primary user.”

Лень вникать. Не особо интересна ситуация с десктопом, повторюсь.

Почему, если провайдеру известен путь до первого хопа?

Тогда можете поверить на слово)

Ну тема не про десктоп, а про андроид так что да.

До провайдера ещё магистральные есть, и до сервера тоже. А через трассировку видно не будет, если сервер настроить.

Так и сделаю