Разница во временных зонах браузера и ip
В прошлой статье я писал о том, как настроить свой собственный OVPN (OpenVPN). К сожалению, более-менее стандартный конфиг хоть и не раскрывает реальный IP-адрес клиента (это хорошо), но все же обнаруживает сам факт существования средств анонимизации (это не есть хорошо). Сегодня я расскажу, как именно происходит детекция и как с ней бороться ;-)
Итак, если зайти сюда то вот что мы увидим:
Как видим из скриншота, утечка информации происходит по следующим пунктам:
- Открытые порты web proxy
- Разница во временных зонах (браузера и IP)
- Принадлежность IP хостинг провайдеру
- Определение туннеля (двухсторонний пинг)
- VPN Fingerprint
Постараемся максимально устранить утечки данных. По порядку.
Проще всего будет изменить время на клиентском устройстве и привести его в соответствие с временной зоной той страны и/или города, где физически находится OpenVPN-сервер.
Увы, не изменить никак :(
Заходим в настройки ufw:
Приводим секцию к такому виду:
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
Все, теперь туннель определяться не будет.
Открываем конфиг VPN-сервера:
Если вы используете Viscosity (как я рекомендовал в прошлой статье), то заходите в свойства соединения, затем вкладка “Расширенные настройки” и в поле “Введите дополнительные команды для OpenVPN” пишем:
Пробуем прогнать тест еще раз:
Как видите — остался только 80-й порт, который я просто не стал убирать и IP, принадлежащий датацентру — но тут мы уже ничего не можем сделать. Базовая часть настроек выполнена, но это еще не все, есть еще нюансы ;-) Едем дальше, заходим вот сюда. И видим печальный результат:
Я использую Google Chrome (для других браузеров ищите как отключить в гугле), в адресной строке пишем:
Ищем там Adobe Flash Player и вырубаем его.
В Google Chrome это делается в настройках, пункт меню — “Личные данные”, затем ставим галочку на пункте меню “Отправлять с исходящим трафиком запрос “Не отслеживать””.
Для Google Chrome есть плагин WebRTC Leak Prevent, ставим его.
В финале Whoer показал мне вот такую картинку:
Разное системное время Whoer определил по временной зоне (да, ее тоже надо исправлять). Язык тоже, думаю, понятно как узнал. На мой взгляд, это не является великой проблемой, т.к. путешествующий (условно) пользователь вполне логично будет иметь отличную от места пребывания временную зону и время, равно как и локаль. По большому счету, сделать то, что я описал в статье — лишним не будет ;-) Ну а для параноиков будут совсем иные рецепты. На связи, пишите в комментарии, если будут вопросы ;-)
Я советую хостинг Linode и Digital Ocean. Рефам помощь в установке и настройке — бесплатно!Чек-лист проверки анонимности сёрфинга / Хабр
Несколько дней назад на хабре проскочила заметка об определении пользователей VPN. В комментариях я опубликовал ссылку на наш сервис с похожей функциональностью, написанием которого я совсем недавно занимался.Главная идея — определить, скрывается пользователь во время сёрфинга в сети или нет, и по возможности узнать его реальный IP адрес. Есть несколько интересных фишек, которые в принципе я нигде не встречал (двусторонний пинг, сопоставление пар DNS leak/ISP).
Хотелось иметь под рукой этакий чек-лист, который бы отвечал, «палишься» ты или нет? На данный момент список состоит из 12 методов проверки, о которых ниже и пойдет речь, в том числе о том, как на них не попасться, но сначала о самом простом по порядку.
Некоторые прокси дописывают свои заголовки к запросу, который инициирует браузер пользователя. Нередко это реальный IP адрес пользователя.Убедитесь, что прокси сервер если и пишет что-то в заголовки указанные ниже, то хотя бы не ваш адрес:
IP адрес, с которого пришел запрос к нашей страничке может сказать о многом. Можно например посмотреть какие на той стороне открыты порты?Самые интересные порты 3128, 1080, 8123. Если их не использовать, то вполне можно избежать необоснованных подозрений в использовании 3proxy, SOCKS 5 или Polipo.
Открытые порты web proxy
Отдается веб страничка? Отлично! На данный момент мы умеем определять PHProxy, CGIProxy, Cohula и Glype.
Нестандартные порты с авторизацией закрывают вопрос.
Подозрительное название хоста
Имея IP адрес можно попробовать отрезолвить хостнейм клиента. Стоп слова, которые могут намекать на туннель: vpn, hide, hidden, proxy. Не стоит привязывать доменные имена к личному VPN, а если и делать это, то стоит избегать «говорящих» имён.Разница во временных зонах (браузера и IP)
Исходя из данных GeoIP можно узнать страну по IP пользователя, а следовательно и его временную зону. Дальше можно вычислить разницу во времени между браузером и временем соответствующим временной зоне VPN сервера.Разница есть? Значит пользователь наверняка скрывается.
Для России точной базы latitude и longtitude для регионов нет, а так как временных зон много, то в конечном результате эти адреса мы не учитываем. С Европейскими странами всё наоборот, очень хорошо они палятся.
При переключении на VPN нужно не забывать переводить системное время, менять время в браузере, либо работать с русскими прокси.
Принадлежность IP к сети Tor
Ничего криминального, но уже факт раскрытия того, что вы скрываетесь, не очень радует.
Режим браузера Turbo
Собрав диапазоны IP адресов Google, Yandex и Opera, и сравнив с пользовательским адресом, можно предположить использование сервисов сжатия трафика в браузерах соответствующих компаний. Как правило такие сервисы ещё и сливают ваш реальный адрес в заголовках. Как на средство анонимизации, рассчитывать на сжатие трафика не следует.Определение web proxy (JS метод)
Сравнив window.location.hostname с хостом запрошенной страницы, можно определить используется ли web proxy.Веб прокси в принципе не надёжны, поэтому лучше обходить такие способы анонимизации совсем.
Утечка IP через Flash
Adobe Flash очень хорошо работает мимо пользовательских прокси. Инициировав соединение к нашему серверу, можно узнать IP пользователя.Запустив специального демона, который логгирует все входящие соединения с ключами-метками, можно многое узнать. Лучший способ не раскрывать свой адрес — не использовать Adobe Flash вообще, или отключать в настройках браузера.
Определение туннеля (двусторонний пинг)
Конечно маршруты туда и обратно могут различаться, или веб сервер чуть притомозит, но в целом точность получается довольно хорошая.Единственный способ защититься — запретить ICMP трафик к своему VPN серверу.
Утечка DNS
Узнать какой DNS использует пользователь не проблема, мы написали свой DNS сервер, который записывает все обращения к нашим уникально сгенерированным поддоменам.Следующим шагом собрали статистику на несколько миллионов пользователей, кто и какой DNS использует. Сделали привязку к провайдерам, отбросили публичные DNS и получили список пар DNS/ISP.
Теперь совсем не сложно узнать, если пользователь представился абонентом одной сети, а использует DNS совсем от другой.
Частично проблему решает использование публичных DNS сервисов, если это можно назвать решением.
We can save the day from dark, from bad
There's no one we need
Многие из вас используют VPN или прокси в повседневной жизни. Кто-то использует его постоянно, получая доступ к заблокированным на государственном или корпоративном уровне ресурсам, многие используют его изредка, для обхода ограничений по географическому положению. Как вы можете знать, крупные интернет-игроки в сфере стриминга видео, музыки и продажи игр никогда не любили пользователей, которые легко обходят географические ограничения, разблокируя недоступный в их стране контент, или совершая покупки заметно дешевле. За примерами не нужно далеко ходить: Netflix изменил свое соглашение об использовании, добавив пункт о блокировке VPN, всего 2 месяца назад; Hulu тоже грешил блокировкой пользователей, а Steam вообще подозрительно смотрит на не-русскоязычных пользователей из России. В последнее время, компании пытаются блокировать уже не конкретных пользователей, а сами IP-адреса VPN-сервисов, создавая определенные неудобства уже самому VPN-сервису и его пользователям. Похоже, они не используют никаких спецсредств, а блокируют выборочно и вручную. Хоть я и не поддерживаю какие-либо блокировки вообще, меня заинтересовала техническая часть вопроса: можно ли как-то определить использование прокси-серверов и VPN со стороны сервера, не прикладывая особых усилий?
Можно, при определенных условиях. И достаточно точно.
MSS и MTU
MTU, или Maximum Transmission Unit — максимальное количество данных, которые могут быть переданы в одном пакете. MTU установлен у каждого сетевого адаптера, даже у тех маршрутизаторов, через которые трафик от вас до удаленного сервера идет транзитом. В подавляющем большинстве случаев, в интернете используют MTU 1500, однако бывают заметные исключения, которые, к слову, зачастую подчиняются некоторым правилам.
Когда ваш браузер или любое другое ПО, работающее с сетью, создает TCP-соединение к удаленному серверу, в заголовки пакета помещается значение Maximum Segment Size (MSS), которое сообщает серверу, какого максимального размера сегменты он может передавать в одном пакете. Это значение очень близко́ к MTU, оно сразу дает понять серверу о возможностях вашего интернет-соединения, исключая излишнюю фрагментацию и позволяя утилизировать ваш канал по полной.
Когда вы отправляете пакет, будучи подключенным к VPN по какому-то протоколу (PPTP, L2TP(±IPsec), IPsec IKE), он помещается (инкапсулируется) в еще один пакет, что вносит свои накладные расходы, и большие пакеты, которые были бы отправлены без фрагментации без VPN, теперь придется фрагментировать. Чтобы избежать такой фрагментации, ОС устанавливает на сетевом интерфейсе MTU меньше, чем MTU реального сетевого интерфейса, из-за чего ОС не пытается создавать большие пакеты, которые требовали бы фрагментации.
В случае с PPTP, L2TP(±IPsec), IPsec, как я понимаю, нет каких-то стандартов на MTU туннеля, все устанавливают такие значения, чтобы работало в большинстве случаев, и устанавливаются они на глаз. Как правило, это 1400, что позволяет использовать, скажем, PPTP на каналах с MTU до 1440 без фрагментации (например, когда для доступа в интернет требуется еще один туннель, как часто бывает у российских провайдеров). OpenVPN — пожалуй, самый популярный вариант VPN — напротив, пошел другим путем.
OpenVPN
В целях совместимости со старым или просто кривым софтом, OpenVPN по умолчанию не устанавливает меньшее значение MTU на VPN-интерфейсе, а изменяет значение MSS внутри инкапсулированного TCP-пакета. За это отвечает параметр mssfix, установленный по умолчанию в значение 1450. Он изменяет MSS таким образом, чтобы он полностью утилизировал канал с MTU 1450, т.е. высчитывает свои накладные расходы таким образом, чтобы они проходили через канал с MTU 1450 и более без фрагментации. Вследствие этого, у нас появляется возможность не просто определить пользователей OpenVPN со стандартным mssfix 1450, но и определить их протокол подключения (IPv4, IPv6), протокол транспортного уровня (TCP, UDP), параметры шифрования, сжатия и MAC, т.к. они вносят свои уникальные накладные расходы и отражаются в MSS.
Давайте посмотрим на типичные значения MSS:
Протокол | Размер блока | MAC | Сжатие | MSS |
---|---|---|---|---|
UDP | 64 | SHA1 | - | 1369 |
UDP | 64 | SHA1 | + | 1368 |
TCP | 64 | SHA1 | - | 1367 |
TCP | 64 | SHA1 | + | 1366 |
UDP | 128 | SHA1 | - | 1353 |
UDP | 128 | SHA1 | + | 1352 |
TCP | 128 | SHA1 | - | 1351 |
TCP | 128 | SHA1 | + | 1350 |
UDP | 128 | SHA256 | - | 1341 |
UDP | 128 | SHA256 | + | 1340 |
TCP | 128 | SHA256 | - | 1339 |
TCP | 128 | SHA256 | + | 1338 |
Для пущей проверки теории было протестировано 2 VPN-сервиса: VyprVPN и ibVPN. Оба сервиса подвержены определению настроек описанным методом.
Если вы не хотите, чтобы вас обнаруживали таким способом, вы можете либо отключить mssfix, установив его в 0 и на сервере, и на клиентах, получив таким образом MSS 1460 (в случае с IPv4), что соответствует MTU 1500 — типичному MTU для обычного проводного соединения, которое есть у подавляющего большинства пользователей. Однако, в этом случае вы получите излишнюю фрагментацию, что ведет к повышению задержек и уменьшению пропускной способности, поэтому может иметь смысл установить MTU в 1400, 1380 или похожее (должно быть кратно 2, а лучше 10), т.к. такие значения часто используются провайдерами, например, мобильного интернета.
Прокси
Способов определения прокси-сервера, если он не добавляет никаких заголовков (вроде X-Forwarded-For), не так-то много. Чем же технически отличается прокси от VPN? В случае с VPN, удаленный сервер получает от вас пакет, которая создала ваша ОС, в неизменном (зачастую) виде. Прокси же, напротив, получает только всю информацию об удаленном сервере (IP, порт, прочие параметры) и данные, создавая пакет на стороне самого прокси, и отправляет его. Разные ОС по-разному создают пакеты, различия можно встретить даже от версии к версии. Мы с большой точностью можем определить ОС создателя пакета, версия нас не слишком интересует.
Как мне кажется, прокси чаще всего запускают на Linux и BSD, а используют чаще под Windows. Пользователи часто не думают о смене User-Agent, который включает используемую ОС, в браузере, а это нам на руку.
Существует замечательный проект p0f, который отлично впишется под наши нужды. Пассивно прослушивая трафик, он может определить ОС, MTU и браузер, оповестить о несовпадении ОС создателя пакетов и ОС в User-Agent. К тому же, он имеет API. Немного модифицировав его, добавив экспорт MTU через API и обновив сигнатуры, мы можем с определенной точностью детектировать пользователей популярных VPN-протоколов, пользователей прокси и тех пользователей, которые подделывают User-Agent.
WITCH?
Немного подумав, я решил сделать небольшой веб-сервис для реализации своих идей, т.к., по какой-то причине, я не смог найти ничего похожего.
Из этого получился WITCH?, который с легкостью расскажет вам о настройках вашего OpenVPN-соединения (если вы не трогали mssfix, конечно же), попытается определить вашу ОС и сравнить ее с ОС в User-Agent, получит PTR-запись для вашего IP и сравнит ее с набором правил, определяя, используете ли вы интернет-канал, рассчитанный на домашних или серверных пользователей.
WITCH? также без проблем определяет пользователей Tor Browser, т.к. он использует одинаковый статичный User-Agent (с Windows) на всех ОС, а exit nodes запущены под Linux и FreeBSD.
Настройки браузера, на примере Mozilla Firefox, помогут скрыть факт использования прокси-сервера и максимально обеспечить анонимность в сети. Также, идентифицирующие вас данные в User agent не просто скрываются, а подменяются на наиболее используемые пользователями, что позволяет "раствориться" среди многих.
Конечно, легче использовать браузер Tor, где, даже, настройки по умолчанию обеспечивают хорошую анонимность, но некоторые сайты просто блокируют доступ по этой сети. И если вы еще не разобрались, как скрыть использование сети Tor, или подобных анонимных сетей, то стоит попробовать воспользоваться прокси-сервером.
Непонятно почему в шапке показало Казахстан, но в колонке разницы во временных зонах браузера и IP, Amsterdam указан правильно.
Утечка IP через WebRTC. Как видим, использование прокси-сервера, даже с заявленной высокой степенью анонимности, не скрыло реальный (внутренний) IP-адрес компьютера. Для тех, кто не в теме, с внутренними адресами нельзя соединится из интернета, они работают только в пределах локальной сети.
К приватным "серым" IP-адресам относятся адреса из следующих подсетей:
от 10.0.0.0 до 10.255.255.255 с маской 255.0.0.0 или /8;
от 172.16.0.0 до 172.31.255.255 с маской 255.240.0.0 или /12;
от 192.168.0.0 до 192.168.255.255 с маской 255.255.0.0 или /16;
от 100.64.0.0 до 100.127.255.255 с маской подсети 255.192.0.0 или /10. Данная подсеть рекомендована согласно rfc6598 для использования в качестве адресов для CGN (Carrier-Grade NAT).
Напрямую доступ к внешней сети, используя внутренний IP-адрес, невозможен, но как вариант, связь с интернетом осуществляется через механизм NAT, где трансляция сетевых адресов заменяет частный IP на публичный. Если интернет-провайдер предоставил локальный IP, то будет проблематично настроить удаленное управление компьютером и скажем, видеонаблюдением, при использовании компьютера.
Что касается безопасности, то использование "серого" IP-адреса более безопасно, чем использование "белого" IP, так как "серые" не видны напрямую в интернете и находятся за NAT, который обеспечивает безопасность домашней сети.
Конечно, внешний IP не определился, но какой от этого толк, если внутренний сливается. Для целей идентификации, даже показательней будет локальный IP, чем публичный, на который провайдер может повесить множество пользователей.
Для устранения утечки настоящего IP адреса через WebRTC, в адресной строке браузера Firefox введите "about:config", найдите "media.peerconnection.enabled" и дважды кликните для установки значения "false".
Устранение разницы во временных зонах браузера и IP-адреса прокси-сервера. Также, мы видим прокол в разнице во временных зонах браузера компьютера и местонахождения прокси-сервера. Переводим системное время программой настройки времени в Ubuntu, в Меню приложений - Система, или соответствующей в другой операционке.
Для внесения изменений необходимо разблокировать программу, нажав Unlock и введя пароль администратора. Зная место расположения прокси-сервера, меняем часовой пояс.
Определение туннеля (двусторонний пинг). Не знаю по какой причине, но туннель методом пинга перестал определяться после двух предыдущих настроек.
Если коротко, то запущенный пинг от посещаемого сайта, показывает приблизительную длину маршрута. То же самое можно сделать со стороны браузера. Полученная разница в петле более 30 мс. указывает на туннель. Маршруты туда и обратно могут различаться, но в целом, точность получается довольно хорошая. Как вариант защиты - запретить ICMP трафик к своему VPN серверу. Следует заметить, результат теста на двусторонний пинг может то показывать наличие туннеля, то нет, это по опыту.
Как видим, настройки браузера позволили поменять IP-адрес и скрыть факт использования прокси-сервера, но данные, которые отправляет браузер о вашем компьютере, по-прежнему те-же.
Отключение методов слежения в браузере. Что бы уменьшить вероятность идентификации, даже, если вы сменили IP-адрес, желательно максимально скрыть передаваемую браузером информацию.
Shockwave Flash. Новый профиль в Firefox создается с двумя предустановленными плагинами OpenH264 Video Codec и Shockwave Flash. Не заметил, на что влияет первый плагин, но Flash, в том числе настроенный на "Включать по запросу", отдает факт своего присутствия и свою версию. Только после выключения плагина, он становится невидимым для отслеживания.
JavaScript. Отдельно можно остановиться на JavaScript, который выключается параметром "javascript.enabled" в настройках about:config. Настраивать JavaScript удобно с помощью плагина NoScript. Наличие и версия JavaScript тоже отслеживается, но данный функционал работает почти во всех браузерах и его отключение, наоборот, сделает ваш браузер индивидуальней.
Таким образом, можно подменить идентифицирующую вас информацию и скрыть факт использования прокси-сервера через настройки браузера, и максимально обеспечить анонимность в сети.
UA подмени на виндовый, админ наркоман, видать белый список.
Тебе ж русским языком пишут, что сделать надо
Тебе ж русским языком пишут, что сделать надо
писал, в ответ тишина
не понял, кого куда подменить?
User Agent в браузере, я использую дополнение для firefox
И всё и пробуешь залогиниться.
Такие же дополнения есть и для других браузеров.
Какой то порт открыт наружу, а на винде нет. Мандалу не слушай.
Проверил, правда, от UA не зависит. VPN детектит. (ну и сайт, кусок дерьма с кучей дерьма и отслеживания, пока проверял успел блокировку словить, пришлось по второму кругу).
Какой то порт открыт наружу, а на винде нет. Мандалу не слушай.
Ага, nmap для дураков.
даже с скриптотой не загрузилось, какие то фреймы питается впихнуть и в бесконечный цикл уходит, что это за дерьмо вообще ?
Одну задачу можно решить разными способами. Я предложил тот который для ТС оптимален, как мне кажется.
В этой тусовке своё представление о прекрасном, не всем дано понять :D
поставил User Agent Switcher`ы и в хроме и огнелисе, выбирал разные вариации, не работает
У тебя дуалбут на одной машине и из-под виндовс все хорошо, но под линукс определяется как прокси?
город определяет не правильно
У тебя дуалбут на одной машине и из-под виндовс все хорошо, но под линукс определяется как прокси?
Определение туннеля (двусторонний пинг) высокая анонимизация (не можем проверить)
Читайте также: