LIMB
Вход Регистрация

тема

SimpleX. Слив IP, корреляция

ec5745y · · 5 ответов · 896 просмотров

SimpleX. Слив IP, корреляция
Не удалось прогрузить медиа

​
После выхода двух предыдущих статей многие начали искать альтернативы и, похоже, нашли - SimpleX.

Если кратко: это интересное решение, но у него есть ряд важных проблем, о которых стоит знать:
Утечка IP
Корреляция и построение графа связей



Сначала разберём базовую архитектуру.
Не удалось прогрузить медиа
​
Пользователь A создаёт одноразовую ссылку (Onetime link):
https://smp11.simplex.im/i#ZJkTxKCwI1v2Wq9IQXFNeVSpfQWNcrDf/gun09zFJ1d5TIQjw9e_9YJjG0ivd5kUHVLIyzb9wLdw
1. IP и порт сервера (в примере 5223 и 443, ведь по умолчанию)
2. Позиция в очереди (токен)
3. Публичный ключ

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

Пользователь B, получив ссылку, создаёт свою одноразовую ссылку (уже на другом сервере) и 
отправляет зашифрованное сообщение на указанный сервер и очередь(токен) пользователя A. Реле принимает сообщение и доставляет его A.
Пользователь A может ответить тем же способом пользователю B, уже по установленной связи.




Слив IP
Не удалось прогрузить медиа
Первая и самая очевидная проблема...
Когда пользователь B отправляет сообщение, его IP виден серверу, указанному в ссылке пользователя A. Если A контролирует этот сервер, он может напрямую узнать IP B.

Но есть и обратный сценарий, более опасный.
Пользователь B в ответе пользователю A, может указать свой сервер для обратной связи. Клиент пользователя A автоматически подключится к нему. Пользователь не будет знать об этом сервере. В результате A раскрывает свой IP серверу B. Пользователь A сможет узнать об этом сервере лишь после установления связи.



Корреляция
Любой сервер может сопоставить IP клиентов и их очереди (токены)

По умолчанию клиенты используют сервера SimpleX и Flux. Свой же сервер поднять проблематично. Нормальная поддержка есть только на Ubuntu 22,24. Из требований - TLS сертификат, домен, а так же ограничения по геолокации, ведь в некоторых странах SimpleX прокол или IP серверов заблокированы.

Спойлер: PS: DPI
Отдельно стоит отметить DPI, хоть это и не основаная проблема.

Трафик SimpleX легко распознаётся. 

5 сегментов TCP по 2880 байт, затем TLS 1.2

Этот шаблон повторяется независимо от размера сообщения.

Провайдер может определить использование SimpleX.

IP simplex или Flux известны, поэтому факт использования установить ещё проще.

Cхема выглядит так:
UserA --> SimpleX_1_Relay --> UserB  
UserB --> SimpleX_2_Relay --> UserA

UserA
 --> SimpleX_3_Relay --> UserC  
UserC --> SimpleX_4_Relay --> UserA


Несмотря на то, что реле несколько, они принадлежат SimpleX, а IP пользователей статичен. Этого уже достаточно, чтобы сопоставить, кто с кем общается.
SimpleX может создать граф связей пользователей.

Официальное решение этих проблем?
В новых версиях клиента есть опция Private Routing.
Не удалось прогрузить медиа

Она позволяет направлять данные на реле собеседника через ваш реле:

​
UserA --> SimpleX_1_Relay --> Bad_Relay -- > UserB
Пользователям всё ещё известны реле друг друга, просто они отправляют данные на эти реле, используя своё реле в качестве прокси.
Это должно маскировать IP пользователей от плохих реле, при этом плохой реле будет видеть вместо IP пользователя, IP его реле.

Если используются дефолтные серверы SimpleX, а так происходит всегда, возникает проблема:

UserA --> SimpleX_1_Relay --> SimpleX_2_Relay --> UserB

Связь легко восстанавливается, ведь релеи SimpleX видят очереди друг друга, как и обращение к ним. 
В Private Routing их можно воспринимать как один релей.


UserA <--> SimpleX <--> UserB

То есть SimpleX (как оператор инфры) может установить, кто с кем общается, более того, как и в прошлом случае, построить граф связей.


Если же использовать свой SMP сервер (реле), это имеет смысл лишь при Private Routing
Схема будет выглядеть так:
UserA <--> Custom SMP <--> SimpleX SMP <--> UserB

Учитывая вышеперечисленные проблемы, ваш сервер будете использовать лишь вы, что позволит SimpleX, который видит и ваш relay сервер и IP ваших собеседников - установить граф.
Это проблема актуальна для людей, которые разглашают свой контакт публично, или, имеют много собеседников. Отказ инфраструктуры приведёт к потере контакта.


Резюмирую:
1.
 Происходит слив твоего IP, ведь собеседник которому ты выдаёшь ссылку для общения с тобой - самостоятельно устанавливает сервер для обратной связи. Сервер может видеть IP подключённых к нему людей, а так же связывать его с "очередью".
2. При использовании Private Routing на серверах SimpleX - можно легко установить корреляцию между тобой и другим пользователем, получить ваши IP. Private Routing не имеет смысла в таком сценарии.
3. Если ты используешь свой собственный SMP сервер, при использовании Private routing ты сливаешь IP сервера не только собеседнику, но и его SMP серверу.
4.  Если сервер собеседника от SimpleX - он увидит IP пользователя, как и то, что он обратился к вашему серверу по причине из пункта 1.
Вышеперечисленные проблемы образуют граф связей с твоим IP или твоего сервера, а так же c IP твоих собеседников.


PoC слив IP
Не удалось прогрузить медиа


Всё что необходимо - поднять сервер и смотреть подключения к нему.
Поднятие сервера:

Лучше всего делать это на Ubuntu 24. 
Для поднятия SMP сервера необходим TLS сертификат.
Помимо сервера, никаких затрат не нужно. Домен можно получить бесплатно на cloudns.net, а TLS подключить через Let's Encrypt
Поднять SMP сервер:
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/simplex-chat/simplexmq/stable/install.sh -o simplex-server-install.sh && chmod +x ./simplex-server-install.sh; ./simplex-server-install.sh;

Далее, для логирования подключений можно использовать всё что угодно. Я же использую код из другой статьи /threads/1083/
./honey 443 5223 для логирования служебных портов, которые использует SimpleX



На этом статья подходит к концу.
У меня есть идея, как можно решить все вышеперечисленные проблемы, однако это требует серъезного патча, скорее даже форка SimpleX.
А пока что, лучшим решением будет использовать Tor с максмально частым интервалом обновления, ну и оффициальные серверы SimpleX.




Автор @ec5745y
Специально для 
forum.LIMB.cc​
👍60 ❤️9 😁7 😮9 👏17 💯7
Ответec5745y

SimpleX. Слив IP, корреляция Не удалось прогрузить медиа ​ После выхода двух предыдущих статей многие начали искать альтернативы и, похоже, нашли - SimpleX . Если кратко: это интересное решение, но у него есть ряд…

Нам нужно сообщить об этом разработчикам. Сообщество там очень активное, и на данный момент это лучший мессенджер — нам нужно развивать то, что уже есть
👍1
Ответscanmap

Нам нужно сообщить об этом разработчикам. Сообщество там очень активное, и на данный момент это лучший мессенджер — нам нужно развивать то, что уже есть

Я пытаюсь установить связь с СЕО сейчас :)
Более того, возможно выпущу форк, это реально от донатов зависит думаю намёк понятен ;)
👍1
ОтветLucho

Интересный анализ, но Tor с частыми сменами тоже не идеален.

Да, это правда! Это решение временное, пока делаю патч ;)
👍2
Согласен, Private Routing на дефолтных серверах не решает корреляцию.
Ответpingas4

Согласен, Private Routing на дефолтных серверах не решает корреляцию.

Он должен защитить пользователя от разглашение IP серверам собеседника, но если оба сервера принадлежат нъодной стороне... Ну смысла нет, плюч к этому ещё и корреляция
👍3

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.