Чому Bittorent через Tor - погана ідея

Добрий день. Не пам'ятаю, як і коли, але одного разу я задався питанням: що якщо використовувати Bittorrent клієнт через мережу Tor? Пошукавши в інтернеті інформацію на цю тему, натрапив на цікаву статтю «Bittorrent over Tor isn't a good idea», опубліковану на torproject.org. Вирішив перевести для читачів «Хабрахабра». Виправлення вітаються.



Росте число людей, які запитують нас про останній публікації, вийшла в INRIA у Франції щодо Bittorent і вразливостей особистої інформації. Та стаття намагається пояснити ці уразливості і розповісти, що вони з себе представляють.

Є три види вразливостей (або три різних уразливості, які засновані одна на інший, якщо вам так буде зрозуміліше).

Перша уразливість
Виникає у людей, які налаштовують свій битторент-клієнт на роботу через проксі, коли їх трафік проксируется через Tor. Ці люди сподіваються, що їх ip-адреса буде в секреті від когось, хто дивиться список пірів на трекері.

Проблема в тому, що кілька популярних битторент-клієнтів (автори називають в основному uTorrent і, я думаю, Vuze теж можна сюди віднести) просто ігнорують налаштування socks proxy.

Вибір ігнорувати налаштування проксі досить зрозумілий, так як сучасний трекер використовує UDP-протокол для з'єднань, а socks proxy, такі як Tor, підтримують тільки TCP-протокол — розробники цих програм стоять перед вибором між «нехай працює, навіть якщо юзер налаштовує проксі, який не можна використовувати» або «зробити так, щоб воно містично валилося з помилкою, заплутуючи користувача». В результаті битторент-програми використовують сценарії реалізації безпеки, відмінні від тих, які очікує користувач цих додатків.

Уразливість в цілому гірше, ніж описане вище: виявляється, в деяких випадках uTorrent, BitSpirit і libTorrent просто пишуть свої ip-адреси прямо в пакетах, які вони відсилають трекеру та/або іншим учасникам. Тор робить свою роботу: він «анонімно» відсилає ваш ip-адреса трекера або бенкеті. Ніхто не знає, звідки саме ви надсилаєте свій ip-адресу, ось так. По всій імовірності, це зовсім не те, що очікувалося.

Це була перша уразливість.

Друга уразливість
Грунтується на першій. Вона полягає в тому, що войовничо налаштований бенкет може точно ідентифікувати вас. Так виходить, тому що битторент-протокол (принаймні як зроблено в популярних битторент-додатках) спілкується через довільний порт і говорить цей довільний порт трекера, а так само й іншим учасникам, які з ним контактують.

Саме це і становить вразливість: трекер запам'ятовує ваш реальний адресу і порт. Так що якщо ваш uTorrent-клієнт вибирає довільний порт 50344 як свій порт і потім «анонімно» (через Tor) спілкується з іншим бенкетом, який є на трекері, той самий бенкет може піти на трекер, подивитися всіх, хто опублікував в лістингу трекера порт 50344 (з високою ймовірністю це будете тільки ви) і — вуаля — інші бенкети знають ваш реальний ip-адресу. В якості бонусу, якщо битторент-бенкет не спілкується через зашифрований канал зв'язку, то «exit relay» Тора, який ви вибрали, так само зможе переглядати трафік і виробляти атаки на користувачів.

Це був другий вид уразливості. Підсумовуючи, вони показують різні причини, чому використання Bittorent поверх Tor не сховає вас.

Так як же це виправити? Є кілька відповідей. Перший — «не запускайте Bittorent поверх Tor». Ми роками говоримо про це, тому що Tor не витримує такого навантаження. Можливо, ці види атак вправлять людям мізки і вони прислухаються. Друга відповідь у тому, що якщо ви хочете, щоб ваш битторент-клієнт був безпечним при використанні проксі, вам потрібно зв'язатися з розробниками вашої програми, щоб ті поправили протокол і свої додатки. Tor не захистить вас від витоку особистої інформації в цьому конкретному випадку.

Третій вид уразливості
Третій вид уразливості з їх доповіді — це те місце, де стає справді цікаво. Для ефективності Tor направляє декілька потоків додатків поверх кожної ланцюга. Цей підхід збільшує ефективність, оскільки нам не потрібно витрачати час і мати оверхед, роблячи нову ланцюг для кожної дрібної картинки. Це збільшує анонімність, так як кожен раз, коли ви створюєте новий шлях через Tor-мережу, ви збільшуєте ймовірність того, що цей шлях відстежує зловмисник. Недолік цього у тому, що «exit relay» може створювати дрібні снапшоти користувацьких профілів, включаючи всі потоки, що виходять з конкретної ланцюга.

Якщо один з цих потоків ідентифікує користувача (наприклад, битторент-клієнт), «exit relay» знає, що інша частина цих потоків належать цьому користувачеві теж, таким чином, ідентифікується трафік від інших додатків.

Як це виправити? Використовуємо старі поради: не використовуйте Bittorent поверх Tor-мережі та/або змусьте розробників пофіксити свої програми.

Чи є спосіб, при якому ми, як частина мережі Tor, можемо скоротити небезпека від використання небезпечних додатків в Tor? Ми не можемо вирішити проблему, коли ви відстрілює собі ногу, використовуючи Bittorent через Tor, але, можливо, ми все ще можемо зберегти вам частину ноги.

Адресуючи проблему до інфраструктури мережі Tor, можна змусити кожне додаток використовувати різні ланцюги. В Linux і UNIX ми, можливо, можемо хакнуть щось подібне — є способи переглядати ідентифікатор процесу додатки, подключающегося до сокета.

Я вважаю, це складніше у Windows. Це так само стає складніше, так як безліч додатків Tor використовують проміжний http proxy, начебто Polipo чи Privoxy. Ми повинні були б навчити ці проміжні проксі як розподіляти дані між різними додатками і потім відсилати цю інформацію через Тор.

Інший варіант розділення потоків за кінцевим портів. Всі потоки, які йдуть на порт 80, знаходяться в ланцюзі, і потік для іншого кінцевого порту йде через інший ланцюг.

Ми луркали цю ідею в бекграунді досить довгий час, але все знову упиралися в те, що якщо клієнт BT попросить нас зробити 50 потоків на 50 різних портів призначення, клієнт Tor спробує зробити 50 різних ланцюгів. Це занадто велике навантаження на мережу.

Я думаю, ми могли б внести поділ поведінки для «80» і «80» портів, але я не впевнений, наскільки це ефективно на практиці, оскільки є безліч інших портів (IM, SSH, тощо). В такому випадку вони теж повинні були б оброблятися окремої логікою, а по-друге, брандмауери сьогодні все більше і більше контролюють 80-й порт.

Нам слід і далі думати про ці проблеми, навіть незважаючи на те, що ми не можемо контролювати програми, які можуть відсилати особисту інформацію з мережі. В той же час я радий, що випускаються такі дослідження, які дозволяють подивитися більш широко на можливі уразливості.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.