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

тема

По айпи вычислю! (Слив IP в Tox мессенджере)

ec5745y · · 19 ответов · 922 просмотров

По айпи вычислю! (Слив IP в Tox мессенджере)
Не удалось прогрузить медиа

​
Привет. Я не хотел делать эту статью, но такие обстоятельства.
Проблема Tox которая коснулась около половины форумчан на сие форумах.
Затрагивает все клиенты Tox.

Почти во всех мессенджерах, особенно с видеосвязью, данные между пользователями могут проходить через UDP напрямую друг к другу через UDP holepunching.
Из-за этого происходит разглашние IP пользователей своим собеседникам.

Фильтрация
Tox сам по себе отправляет кучу мусорного трафика, а переписывать клиент и DHT долго и сложно.
Спойлер: TCP
TCP может быть так же использован при подключении к серверу с белым IP.

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



Маленькие сообщения 1-4 байта будут слиты с остальным трафиком.

Отсеять шум можно задав минимальный размер сообщения.



(tcp && tcp.flags.ack==1 && data.len >= 59)



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

Далее сопоставить длину сообщения и сами служебные байты.




Колво байт сообщения​Служебные байты​Data.len​5-12​0039​59​13-20​0041​67​21-28​0049​76​29-36​0051​83​37-44​0059​91​​0099​155​​00a1​163​​0589​1419​
Спойлер: UDP
Tox проводит UDP holepunching - соеденяет пользователей напрямую.

Каждый из собеседников может узнать адрес друг друга.

Фильтрация мусора происходит по тому же принципу как и в случае с TCP, однако

Минимальный разммер собщения, которое можно отфильтровать - 40 байт.

Так же есть служебные байты. 

Зачем-то есть статика 1b, по которому я предлагаю идентифицировать сообщения. 



(udp && data.len >= 40 && data[0:1] == 1b)



Далее идёт счётчик сообщений, но смысла фильтрации по нему нет.

PoC
Не удалось прогрузить медиа
​
Bash:
tshark -l -n \
-Y '(tcp && tcp.flags.ack==1 && data.len >= 59) || (udp && data.len >= 40 && data[0:1] == 1b)' \
-T fields -e ip.proto -e _ws.col.Protocol -e data.data -e data.len -e ip.src -e tcp.srcport -e udp.srcport -e ip.dst -e tcp.dstport -e udp.dstport 2>/dev/null |
awk -F'\t' '
NF>=10 {
    if ($1 == 6) {
        F2 = substr($3, 1, 4)
        if (F2 != "" && strtonum("0x" F2) + 2 == $4)
#TCP           print "\033[32m" $2 "  len=" $4 "  " $5 ":" $6 " -> " $8 ":" $9 "\033[0m"
    } else if ($1 == 17) {
        print "\033[31m" $2 "  len=" $4 "  " $5 ":" $7 " -> " $8 ":" $10 "\033[0m"
    }
}'
Снимите комментарий с 9 строки и увидете не только подключения по UDP, но и TCP.
Айпи ребят был обнаружен этим скриптом.

Отключение противных функций:

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

GitHub - TokTok/c-toxcore: The future of online communications.

The future of online communications. Contribute to TokTok/c-toxcore development by creating an account on GitHub.
Не удалось прогрузить медиа
github.com

tox_options.c
240:

C:
void tox_options_default(Tox_Options *_Nonnull options)
{
    if (options != nullptr) {

        tox_options_set_proxy_host(options, nullptr);
        tox_options_set_savedata_data(options, nullptr, 0);

        const Tox_Options default_options = {false};
        *options = default_options;
        tox_options_set_ipv6_enabled(options, false);
        tox_options_set_udp_enabled(options, false);
        tox_options_set_proxy_type(options, TOX_PROXY_TYPE_NONE);
        tox_options_set_hole_punching_enabled(options, false);
        tox_options_set_local_discovery_enabled(options, false);
        tox_options_set_dht_announcements_enabled(options, false);   //Может форсировать UDP   
        tox_options_set_experimental_thread_safety(options, false);
        tox_options_set_experimental_groups_persistence(options, false);
        tox_options_set_experimental_disable_dns(options, false);
        tox_options_set_experimental_owned_data(options, false);
    }
}
Компиляйия toxcore:
mkdir _build && cd _build
cmake ..
make
sudo make install

После этого скачайте исходный код желаемого клиента и скомпилируйте его. 
Воуля!


Бонус
Я проверил у каких пользователей включён UDP (378 Tox адресов из парсинга XSS.IS)
Вы можете проверить свой адрес этим скриптом. 
Нашли - точно уязвимы

Bash:
read -r -p "tox: " tox; base64 -d <<< 'H4sIAAAAAAAAAx2WSRYDIQgF95zGEXSJoPc/Uqqz62cc4E9k3txNcpf2xDV8yT3Hj8wzdpe7hlWp490nx9pQaW+Ysb6KyevxjgzzvUSnviJTz2wStvuVtDuX9P3ds2z0kB7Zm1yPyp0ZnPJxBzffyq8xu5vMoqtLyU4lHm9v0Vqbsh43ZYwdQ6yHXdb3Yc8JanvbJqfmHJtq2zbp6+kTa/NeKWN7lWylTnk1csi4lRvaczsS9PLV2fh1t3dCboln0iKny47+tsw7qSe0zyqrjF54PdPovQ2Xscc60pvXLeW2rfJWtyUnsx/Zd03eWssnXU9rMmsu7m+lbMl6V7L/3A/bdae0nDrY007KnkNNbD53Oac2cNbiRUyLujS/rUu7zk5r+dgTpTZpeqxIL+lDrp5xJMNnyupOF+8Vm3JHXSFrpH0rGUViW31C3WvLvTaCd6t2mfNNuqj1FHkJoGI+wAe0F3hqAb2ofoecnaGyXUsFyf5h65va1jhryX5jTplPwf96Yf2BQ0p/LEl1pwYAWEOKnWNfVShq50Rpc9XbZRefQ157DfzHRT+v1o+1cN/0u9qUVQvqemp9SI76KXPPikrz0tFVS3TYEJycl6YoUz2k7NNQ4O19Sb4Jg30f0Eg7rYlmwpSx0OhFG/q3+Bh87WwZfdwjNz2uUAH33BcfF63fDfuenF2Fszajq2j/dLJXgmRNoxKF3ilHz0Hb+A58Bm9KiRb7Y3A98L+OU6qC+bH3aa8YftnWqKeU/iFw3vk6XamSGg1ljrhFssd1epk4aGu8J3N0Vamn1u/OQNX+Wt8waAPcqp8p7i0+L6SCpzm+AzbQuKuhyfdt+qql6327BYnR4Gvc+2mjW15Ugbql4DijhqeonbKetGEFBtX43qaVrscrqFQ79eu89DV6LfjlfI4reQIdYhJeqZ8ezinHpa6kx1ZTj3j7OIqVKDwdvGU4z4tF713iEHCcwpdSm6OT2XJ/SraNCzq2IYUMLelu6P/lJj3aPeindGQqLzxQ+/vQe9crCqFTEmZkNCpBESDTYXPvoNp3DMd5sRckCVKAa3RHCul+UuMUvs+DtXEG/so9KjqcvbhoTJLNkNXngv0p5BRY0LLQTxCTpHSnJxQ77cPBvmR460M+DH/ZffAIaY778lacNf85X4xX3vi0tE4j30Z99K4EFZU/yBAKARmv3Eo9hfx06zolItgPauSGFSLgr2HYMX30i5ECTXZyqThAwPtBb+S8fnOkZpNXHi42XWh7HiOj7is4DkaD/EzHL2CKYusi2mR3RgU4+Pp2zi/hKRdtV+Xs8kO+uV5wfn3gi0nIvW9+gfCaCSMkDPmslAXm/zxkwvmFnU5KsJ1M0xiocZRKqmdcI5GcKSRGEfm5j3dvIi85hbiXu/eX6rlgjdFHVoz/9BwbGki/QYK5ldHgwg2U2kSB1g73F7pWcXyEkst0/fCsZGN+K34aTK3QnGjeyG2DcdLG8+CmVGZE7AHXDNVdPn3iU6Ys6god5K12qviQZIL0y7AUp04S0u53Q6vcsMcB7affuwWpkrGGC+V0RUvhBw/escDwlL7Bv13eqtW4Gb/hcVd9H5K3fsnWPi2l4kQKxPWF6RPkzKefC4X9768FI7XD0Wx0WtquTPPV4Hru0b89SkaVULogwlGjwRRpudCscJL/HnPH1G/iKG6KhpuuJojFHQPW1ibhYROOcBOu/AEnq47B3AgAAA==' | gzip -dc | while IFS= read -r s; do [[ $tox == *"$s"* ]] && { echo "Всё плохо"; exit; }; done || echo "Умница, всё хорошо"


Просто используйте удалённые сервера и всё будет хорошо!!!
Автор @ec5745y
Специально для forum.LIMB.cc​
👍56 ❤️8 😮6 💯11
В некоторых клиентах невозможно выключить UDP. Если такая опция есть - для её применения необходимо перезапустить клиент.
👍3
Я постарался предупредить пользователей об этой проблеме. Получились платиновые диалоги.
Скриншоты лучших:
Не удалось прогрузить медиа
Не удалось прогрузить медиа


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




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


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


Не удалось прогрузить медиа
огонь материал))

А давайте его распиарим по всея Руси? Усилим и распиарим, м?))
Как думаете, народ форума LIMB?


@admin ?
👍3
Ответlisa99

огонь материал)) А давайте его распиарим по всея Руси?

Решение дельное, и так как поднимается важная проблема, этот материал определенно должен быть оплачен.

От себя только добавлю, что про токс и его механики стоило рассказать побольше). Это не единственный его прикольный нюанс, способный навредить.
👍1
Я могу помочь с контентом, но договориваться и размещать точно некогда.
Пишу две статьи для нового журнала и его оформление.

Но не получится ли что толпа растащит по тг и форумам инфу?
ОтветleakinN_nname

Это не единственный его прикольный нюанс, способный навредить.

Ты комментатор! Давай делись!!!! Про UPnP?
👍2
Ответec5745y

Ты комментатор! Давай делись!!!! Про UPnP?

Ишь ты... ушлый какой. Нет, так просто не работает. Оставлю при себе. На удобный случай.

А так, вот так выглядит установка qTox, как и любого другого столь важного софта, как вашего менеджера, у здоровых людей.
Не удалось прогрузить медиа


Не берите готовое. Особенно если планируете через это общаться).
Да и тем более, в большинстве случаев лишь маленькое изменение конфига или одного из элементов позволит повысить вашу безопасность(и ваше спокойствие) в разы.
👍3
Ответec5745y

Я постарался предупредить пользователей об этой проблеме. Получились платиновые диалоги. Скриншоты лучших: Не удалось прогрузить медиа Не удалось прогрузить медиа Не удалось прогрузить медиа Не удалось прогрузить медиа…

Если отключить UDP, то будут использоваться tcp релеи. Спецслужбы контролируя эти релеи смогут построить графы и по метаданным понять кто с кем общается. Прокси с UDP не работают (значит проксировать через onion нельзя). 

Разве не лучше использовать отдельное сетевое пространство в linux для qtox. У тебя допустим есть 1 впн с которого ты выходишь в сеть, для qtox подними дабл впн IP который нигде не светится кроме токса. Сделай жесткий фаервол чтобы токс мог выходить только через этот даблвпн, killswitch.

hole_punching_enabled = false если сделаешь, то не будет p2p соединения снова будем использовать релеи.

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

Предоставьте хорошее решение для изоляции сетевого трафика qtox в double vpn и ваша статья будет принята на оплату.
👍2
Ответcybergangster

Если отключить UDP, то будут использоваться tcp релеи. Спецслужбы контролируя эти релеи смогут построить графы и по метаданным понять кто с кем общается. Прокси с UDP не работают (значит проксировать через onion нельзя).

Если спецслужбы контролируют сеть - они контролируют сеть. Между всего прочего, передача IP для UDP происходит через эти самые TCP релеи. Если спецслужбы контролируют релеи - нет разницы какой протокол будет использован.
Более того, просто по длине сообщения можно установить кто с кем говорит. (Я про это почти случайно написал в статье)

Ответcybergangster

Разве не лучше использовать отдельное сетевое пространство в linux для qtox.

Гараздо лучше. Проблема в том, что примерно 300 пользователей XSS.IS его не использовали его и вряд ли будут.


Ответcybergangster

У тебя допустим есть 1 впн с которого ты выходишь в сеть, для qtox подними дабл впн IP который нигде не светится кроме токса.

У меня поднят удалённый сервер, делаю почти так же. Почти все это игнорируют - утечки IP через функцию Tox как доказательство.


Ответcybergangster

Сделай жесткий фаервол чтобы токс мог выходить только через этот даблвпн, killswitch.

Статья не про это, однако решение проблемы я уже показал (Отключение противных функций)

Ответcybergangster

hole_punching_enabled = false если сделаешь, то не будет p2p соединения снова будем использовать релеи.

Релеи будут использованы в любом случае, как минимум для передачи самих IP.

Ответcybergangster

hole_punching_enabled = false если сделаешь, то не будет p2p соединения снова будем использовать релеи.

А вот и нет. Для всех коммуникаций будет использован один протокол.
В /attachments/8356/ было передано текстовое сообщение.


На счёт последнего пункта очень не согласен. Написал в ЛС




Ну и да:
Ответec5745y

Просто используйте удалённые сервера и всё будет хорошо!!!

Ответcybergangster

Если отключить UDP, то будут использоваться tcp релеи. Спецслужбы контролируя эти релеи смогут построить графы и по метаданным понять кто с кем общается. Прокси с UDP не работают (значит проксировать через onion…

Слушай, может форк Toxcore сделать? Только UDP использовать, а про холпанчинг уже даже статью и механизмы написал.
@leakinN_nname
👍5 ❤️1 🔥1
Ответcybergangster

ваша статья будет принята на оплату



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


Давай-давай, а то конкуренты собрались уже

👍3
Хороший материал. Я бы поставил хайд от 20 сообщений минимум
👍1
растащат без указания форума, как птицы войлок на гнезда!
👍1
Лучший, спасибо за статью
Ответzobiak

Хороший материал. Я бы поставил хайд от 20 сообщений минимум

Я тоже так думал, однако плохая идея. 
Многие не сидят на LIMB или даже не знают о нём. При этом это ребята, чьи ники вы точно видели на XSS. (Отрекламил я ваш форум, не переживайте)

Кароче, я просто не хочу чтобы кого-то посадили. Если какой-то хацкер захочет супер ресерч сделать - он в любом случае будет иметь те 20 сообщений, ну или же инфа уйдёт на другие форумы.
Ответec5745y

Если спецслужбы контролируют сеть - они контролируют сеть. Между всего прочего, передача IP для UDP происходит через эти самые TCP релеи. Если спецслужбы контролируют релеи - нет разницы какой протокол будет…

Релеи сами по себе архитектурный нюанс, необходимый для того самого Person-to-Person соединения. Токс без релеев всецельно как сливки без молока.

А касательно "контроля" и какой-то мифической помощи от даблвпн - не поможет, как минимум совать даблвпн на хост, а токс в вм за NAT, и тогда, дай бог, токсу будет не плевать на VPN. 
Комментарий в поддержку автору.
👍4 ❤️1
Ответec5745y

На счёт последнего пункта очень не согласен. Написал в ЛС

"Хорошо, отправьте эти 300+ токс айди сюда (мне в лс) которые вы распарсили. И отпишитесь в теме сколько всего было toxid и сколько из них ходят через UDP"

Нет! Я не буду отправлять эти Tox адреса. Много людей всё ещё не решили проблему. 
Далее, это лишит авторитета и доверия людей из этого списка.

Из всех Tox адресов которые у меня есть, ходит более 90%, те самые 378.
В конце статьи я предоставил скрипт, который может провреить, являеться ли Tox адрес проблемным.

Как это работает:
Есть список проблемных Tox адресов, из каждого я взял 5 символов под ряд из случайного места.
Учитывая, что адреса в длину 77 байт - 5 байт с конца, всего в списке 378 адресов, а каждый адрес состоит из 16ти ричных значений:
((378×(77−5))÷16^5)×100 = 2.59% как шанс коллизии.
Таким образом, по этой БД нельзя узнать адреса напрямую, а так же гарантированно сказать, был ли этот человек уязвим.
Этот шанс, 2.59% позволит людям спихнуть ответственность за свой проеб на эту коллизию аля "Ой да это совпадение, чистая случайность".
👍4 ❤️1
Спасибо за донатик!!!!!!
Не удалось прогрузить медиа
👍1

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