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
Существует замечательный проект p0f, который отлично впишется под наши нужды. Пассивно прослушивая трафик, он может определить ОС, MTU и браузер, оповестить о несовпадении ОС создателя пакетов и ОС в User-Agent. К тому же, он имеет API. Немного модифицировав его, добавив экспорт MTU через API и обновив сигнатуры, мы можем с определенной точностью детектировать пользователей популярных VPN-протоколов, пользователей прокси и тех пользователей, которые подделывают User-Agent.WITCH?
Немного подумав, я решил сделать небольшой веб-сервис для реализации своих идей, т.к., по какой-то причине, я не смог найти ничего похожего.Из этого получился WITCH?, который с легкостью расскажет вам о настройках вашего OpenVPN-соединения (если вы не трогали mssfix, конечно же), попытается определить вашу ОС и сравнить ее с ОС в User-Agent, получит PTR-запись для вашего IP и сравнит ее с набором правил, определяя, используете ли вы интернет-канал, рассчитанный на домашних или серверных пользователей.
First seen = 2015/07/24 17:19:29
Last update = 2015/07/24 18:39:37
Total flows = 7
Detected OS = Linux 3.11 and newer
HTTP software = Firefox 10.x or newer (ID seems legit)
MTU = 1409
Network link = OpenVPN UDP bs64 SHA1
Language = Russian
Distance = 15
Uptime = 1 days 19 hrs 39 min (modulo 165 days)
PTR test = Probably home user
Fingerprint and OS match. No proxy detected.
OpenVPN detected. Block size is 64 bytes long (probably Blowfish), MAC is SHA1.
WITCH? также без проблем определяет пользователей Tor Browser, т.к. он использует одинаковый статичный User-Agent (с Windows) на всех ОС, а exit nodes запущены под Linux и FreeBSD.
В ходе тестов выяснилось много интересных подробностей:
- Мобильный интернет от Beeline пропускает все соединения через прокси под Linux. Обнаружилось это, когда человек с Beeline зашел с iPhone на WITCH?, и ОС определилась как Linux. Вероятно, именно через него они меняют HTML-теги, добавляют тулбар с поиском mail.ru и изменяют дизайн сайтов.
- MTU у мобильных устройств может быть буквально какой угодно, но, как правило, заканчивается на 0. Исключение — Yota с 1358. От чего это зависит — непонятно, подозреваю, что и от настроек на стороне оператора, и от телефонного модуля. Одна и та же SIM в разных телефонах использует разные MTU.
- Код, который отвечает за mssfix в OpenVPN, очень медленный. Если у вас есть знания в сетях, C, желание и время, пожалуйста, посмотрите, можно ли его оптимизировать.
Первый и второй сезоны.
Комментарии (67)
passerby
24.07.2015 19:51Windows, два ssh-тоннеля, на конце прокси.
First seen = 2015/07/24 19:45:36
Last update = 2015/07/24 19:45:36
Total flows = 1
Detected OS = Linux 3.x [generic]
HTTP software = ???
MTU = 1500
Network link = Ethernet or modem
Language = Russian
Distance = 15
Sys change = 2015/07/24 19:45:37
Uptime = 56 days 15 hrs 4 min (modulo 497 days)
PTR = xxx-xx-xx-xx.dyn.estpak.ee
PTR test = Probably home user
Fingerprint and OS match. No proxy detected.
No OpenVPN detected.
xvilka
24.07.2015 20:26Не знает такого UA «Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:42.0) Gecko/20100101 Firefox/42.0»
И еще не определил Microsoft TMG HTTP/HTTPS прокси сервер.
XaosSintez
24.07.2015 20:27OpenVPN Connect
First seen = 2015/07/24 20:24:22
Last update = 2015/07/24 20:26:31
Total flows = 5
Detected OS = Windows 7 or 8
HTTP software = Firefox 10.x or newer (ID seems legit)
MTU = 1308
Network link = ???
Language = Russian
Distance = 14
PTR test = Probably home user
Fingerprint and OS match. No proxy detected.
No OpenVPN detected.
BigD
24.07.2015 20:31Сижу за корпоративным прокси. Не распознал.
First seen = 2015/07/24 20:29:45
Last update = 2015/07/24 20:29:45
Total flows = 1
Detected OS = ???
HTTP software = ???
MTU = 1500
Network link = Ethernet or modem
Language = English
Distance = 13
PTR test = Probably home user
Fingerprint and OS match. No proxy detected.
No OpenVPN detected.
J_o_k_e_R
24.07.2015 20:36Когда я проектировал свой первый коммерческий vpn сервис, взял за привычку в openvpn клиентам ставить link-mtu 1200, чтоб не было проблем у пользователей за pppoe и прочими l2tp. Вот и сейчас мой openvpn не определился.
ValdikSS Автор
24.07.2015 20:50Слишком низкий MTU — не очень хорошо. У вас, например, будут проблемы с IPv6 внутри туннеля, т.к. по стандарту минимум 1280 должно быть.
Ну и такой MTU явно говорит о туннеле, таких низких значений не бывает в реальной жизни.J_o_k_e_R
24.07.2015 21:01Мой личный vpn-сервер является так же моим личным ip6-брокером. И вся инфраструктура у меня давно уже на ип6, так что везде, где есть возможность, я подключаюсь по ип6 через свой vpn с mtu 1200. Проблем не было. Можно ссылку на кусок стандарта, их мне обещающий?
А то что у меня туннель значит то, что у меня билайн, инфолайн или любой из сотен других провайдеров, использующих pppoe или l2tp. Это если не смотреть на адрес точки выхода. Но если на него смотреть, то пользователя vpn проще спалить, сделав whois по его ипу.ValdikSS Автор
24.07.2015 21:57+1А то что у меня туннель значит то, что у меня билайн, инфолайн или любой из сотен других провайдеров, использующих pppoe или l2tp.
Ну не делают таких низких MTU, это подозрительно. У билайна в L2TP 1456, с PPPoE у вас будет, вероятно, 1492. А у вас получается где-то около 1155.
Проблем не было. Можно ссылку на кусок стандарта, их мне обещающий?
Ваша ОС отправляет, скорее всего, так называемые atomic fragments, т.е. фрагментированные пакеты с флагом, что фрагментированных пакетов больше не будет. Такие пакеты обрабатываются в отдельной очереди, независимо от «нормальных» пакетов.
tools.ietf.org/html/rfc6145#section-6
7313
24.07.2015 20:37ssh2 тоннель
First seen = 2015/07/24 20:34:33
Last update = 2015/07/24 20:34:33
Total flows = 1
Detected OS = Linux 3.1-3.10
HTTP software = Firefox 10.x or newer (ID OS mismatch)
MTU = 1500
Network link = Ethernet or modem
Language = Russian
Distance = 12
Sys change = 2015/07/24 20:34:33
Uptime = 41 days 2 hrs 31 min (modulo 49 days)
PTR test = Probably home user
Fingerprint and User-Agent mismatch. Either proxy or User-Agent spoofing.
No OpenVPN detected.
abrwalk
24.07.2015 20:45Я так понял ваш форк на гитхабе отличается от оригинального p0f только тем что позволяет получать MTU через апи:
(что насколько я помню умел p0f v2 но еще не прикрутили к v3)
(upd:https://github.com/skord/p0f/blob/master/mtu.h)
# ./p0f-client /var/run/p0f.sock 192.168.128.1
First seen = 2015/07/24 20:31:44
Last update = 2015/07/24 20:31:44
Total flows = 1
Detected OS = Windows 7 or 8
HTTP software = Opera 15.x-18.x (ID is fake)
MTU = 1500
Network link = Ethernet or modem
Language = English
Distance = 0
а вот это только у вас на сайтике?:
PTR test = Probably home user
Fingerprint and OS match. No proxy detected.
No OpenVPN detected.ValdikSS Автор
24.07.2015 22:25+1Да, в форке только добавлено запоминание MTU и его экспорт в API (mtu branch), и обновлены сигнатуры. PTR test и разъяснениями занимается скрипт.
frol
24.07.2015 21:00+2Интересненько! Спасибо за статью!
Проверил несколько вариантов с Linux хоста через:
- прямое соединение — всё правильно
- ssh-туннель — говорит, что я без прокси (ну, исходя из предложения в статье, которое используется для детектирования прокси, не мудрено, так как хост и прокси оба на Linux)
- OpenVPN — таки определило меня
- OpenVPN + Squid на том конце — не поймало, тоже по понятным причинам
Итого — 1 из 3 (ну, или 2 из 4), но на Windows хосте, наверно всё-таки 3 из 3 было бы.
madflux
24.07.2015 21:00+3Оставлю ссылку на сервис, который недавно пилили, 2ip.ru/privacy. Обратите внимание на двусторонний пинг, по диффам пинга из браузера и наоборот можно тоже детектить VPN.
kacang
25.07.2015 14:52+1понравилась проверка времени в браузере против айпи. Как с этим бороться?
madflux
25.07.2015 20:46Чуть позже напишу заметку по всем методам определения, и как от этого защищаться.
zhovner
25.07.2015 20:51+2Тут еще интереснее whoer.net/extended
motienko
26.07.2015 22:04Действительно, интереснее, как минимум WebRTC отдаёт инфу по локальным адресам (и сразу видно всякие VirtualBox, LXC, Docker и т.п., запущенные на ноуте). Топикстартеру добавить бы такую штуку в свой сервис.
IRainman
25.07.2015 19:06Забавно, сижу просто из дома без каких либо прокси или тоннелей, а результат:
Вы используете средства анонимизации, однако нам не удалось узнать ваш реальный IP адрес.
Вероятность анонимизации:
99%
Ещё более забавно то, что перенаправив весь трафик хоста в домашней локалке через один из своих серверов за границей результат не изменился, изменился лишь отдектированный IP поменявшись с домашнего на адрес сервера.
grumbler66rus
24.07.2015 21:14Вы можете отключить mssfix, установив его в 0 и на сервере, и на клиентах. В этом случае, ваш MSS будет 1460 (в случае IPv4), что соответствует MTU 1500.
При этом, очевидно, получаем повышенный owerhead
Разумнее задать MSS немного меньше, причём это достаточно сделать на клиенте.
ArjLover
25.07.2015 01:41Для детектирования прокси еще можно использовать разницу во временных зонах.
KorDen32
25.07.2015 01:56[Teach2BWitch]Угадай автора по КПДВ… (Спасибо за пополнение коллекции качественными версиями!)
Пожалуй, текст лучше We can become more than you know… Рандомная идея — менять картинку в зависимости от результатов тестирования… Ну или добавлять элементы, прокси — портал, опенвпн — складка («портал» после снятия завесы), etc…[остановите меня, после пересмотра на английском я все никак не могу закончить бесконечно перечитывать все выпуски комиксов]lost55
25.07.2015 07:47нет прокси? ооокей
First seen = 2015/07/25 07:43:32 Last update = 2015/07/25 07:43:32 Total flows = 1 Detected OS = Linux 3.x [generic] HTTP software = ??? MTU = 1500 Network link = Ethernet or modem Language = ??? Distance = 11 Sys change = 2015/07/25 07:43:32 Uptime = 81 days 4 hrs 52 min (modulo 198 days) PTR = de31.friproxy0.biz PTR test = Probably server user Fingerprint and OS match. No proxy detected (this test does not include headers detection). No OpenVPN detected.
VokaMut
25.07.2015 08:27Пользователям Хрома думаю знакомо расширение «ZenMate», выключив показывает следующее:
First seen = 2015/07/25 08:26:58
Last update = 2015/07/25 08:26:58
Total flows = 1
Detected OS = Linux 2.2.x-3.x [generic]
HTTP software = ???
MTU = 1500
Network link = Ethernet or modem
Language = Russian
Distance = 13
Uptime = 126 days 10 hrs 32 min (modulo 198 days)
PTR test = Probably home user
Fingerprint and OS match. No proxy detected (this test does not include headers detection).
No OpenVPN detected.
vikarti
25.07.2015 09:58при отключенном прокси
WITCH?
First seen = 2015/07/25 09:51:16
Last update = 2015/07/25 09:51:16
Total flows = 4
Detected OS = Mac OS X [generic]
HTTP software = Chrome 27.x or newer (ID is fake)
MTU = 1400
Network link = Probably IPsec or other VPN
Language = Russian
Distance = 16
Uptime = 7 days 12 hrs 53 min (modulo 49 days)
PTR = xxx.yyy
PTR test = Probably server user
Your fingerprint is fake. This is probably a false positive.
No OpenVPN detected.
(у ДомРу можно реверс зону прописать через ЛК)
а через squid-proxy на digital ocean
First seen = 2015/07/25 09:48:45
Last update = 2015/07/25 09:55:22
Total flows = 2
Detected OS = Linux 3.x [generic]
HTTP software = ???
MTU = 1500
Network link = Ethernet or modem
Language = Russian
Distance = 11
Sys change = 2015/07/25 09:55:22
Uptime = 13 days 4 hrs 45 min (modulo 198 days)
PTR test = Probably home user
Fingerprint and OS match. No proxy detected (this test does not include headers detection).
No OpenVPN detected.ValdikSS Автор
25.07.2015 11:12-1Я не думал, что так много людей пользуются Chrome. Попробуйте еще раз, или попробуйте с Firefox.
vikarti
25.07.2015 13:55через squid прокси
WITCH?
First seen = 2015/07/25 13:48:43
Last update = 2015/07/25 13:48:43
Total flows = 1
Detected OS = Linux 3.x [generic]
HTTP software = ???
MTU = 1500
Network link = Ethernet or modem
Language = Russian
Distance = 12
Sys change = 2015/07/25 13:48:43
Uptime = 13 days 8 hrs 38 min (modulo 198 days)
PTR test = Probably home user
Fingerprint and OS match. No proxy detected (this test does not include headers detection).
No OpenVPN detected.
напрямую
WITCH?
First seen = 2015/07/25 13:49:59
Last update = 2015/07/25 13:49:59
Total flows = 3
Detected OS = Mac OS X [generic]
HTTP software = Chrome 27.x or newer (ID is fake)
MTU = 1400
Network link = Probably IPsec or other VPN
Language = Russian
Distance = 16
Uptime = 7 days 16 hrs 46 min (modulo 49 days)
PTR = xxx.yyy
PTR test = Probably server user
Your fingerprint is fake. This is probably a false positive.
No OpenVPN detected.
Firefox с proxy:
First seen = 2015/07/25 13:48:43
Last update = 2015/07/25 13:53:42
Total flows = 2
Detected OS = Linux 3.x [generic]
HTTP software = Firefox 10.x or newer (ID OS mismatch)
MTU = 1500
Network link = Ethernet or modem
Language = Russian
Distance = 12
Sys change = 2015/07/25 13:53:43
Uptime = 13 days 8 hrs 43 min (modulo 198 days)
PTR test = Probably home user
Fingerprint and User-Agent mismatch. Either proxy or User-Agent spoofing.
No OpenVPN detected.
Firefox без proxy:
First seen = 2015/07/25 13:49:59
Last update = 2015/07/25 13:54:09
Total flows = 6
Detected OS = Mac OS X [generic]
HTTP software = Firefox 10.x or newer (ID seems legit)
MTU = 1400
Network link = Probably IPsec or other VPN
Language = Russian
Distance = 16
Uptime = 9 days 15 hrs 3 min (modulo 62 days)
PTR = xxx.yyy
PTR test = Probably server user
Fingerprint and OS match. No proxy detected (this test does not include headers detection).
No OpenVPN detected.
Tor Browser
First seen = 2015/07/25 13:51:10
Last update = 2015/07/25 13:51:10
Total flows = 1
Detected OS = Linux 3.1-3.10
HTTP software = Firefox 10.x or newer (ID OS mismatch)
MTU = 1500
Network link = Ethernet or modem
Language = English
Distance = 11
Sys change = 2015/07/25 13:51:10
Uptime = 44 days 6 hrs 48 min (modulo 49 days)
PTR = 62-210-105-116.rev.poneytelecom.eu
PTR test = Probably home user
Fingerprint and User-Agent mismatch. Either proxy or User-Agent spoofing.
No OpenVPN detected.
khim
25.07.2015 15:42+4Вы не думали что много людей пользуется самым популярным браузером??? А как он тогда стал самым популярным, если им никто не пользуется?
ValdikSS Автор
25.07.2015 17:16+2Я просто забыл про него, честно говоря. Тестировалось все на десктопном Firefox и мобильных браузерах.
Я что-то внезапно заболел и могу только спать, мне жутко неловко, но пока добавить нормальные сигнатуры не могу.
max_rip
25.07.2015 11:29Через Опен ВПН
First seen = 2015/07/25 11:23:39
Last update = 2015/07/25 11:23:39
Total flows = 4
Detected OS = Windows 7 or 8
HTTP software = Chrome 27.x or newer (ID is fake)
MTU = 1300
Network link = generic tunnel or VPN
Language = Russian
Distance = 12
PTR = ХХХ.ABC-ASD.com
PTR test = Probably server user
Your fingerprint is fake. This is probably a false positive.
No OpenVPN detected.
random1st
25.07.2015 12:35За tor в режиме socks прокси:
First seen = 2015/07/25 12:33:00
Last update = 2015/07/25 12:33:00
Total flows = 2
Detected OS = Linux 3.1-3.10
HTTP software = Firefox 10.x or newer (ID seems legit)
MTU = 1500
Network link = Ethernet or modem
Language = Russian
Distance = 9
Uptime = 31 days 8 hrs 43 min (modulo 49 days)
PTR test = Probably home user
Fingerprint and OS match. No proxy detected (this test does not include headers detection).
No OpenVPN detected.
alexxxst
25.07.2015 12:54Сижу за OpenVPN (аптайм неправильный, кстати?):
First seen = 2015/07/25 12:52:32
Last update = 2015/07/25 12:52:32
Total flows = 1
Detected OS = Mac OS X [generic]
HTTP software = ???
MTU = 1410
Network link = ???
Language = Russian
Distance = 12
Uptime = 17 days 19 hrs 28 min (modulo 49 days)
PTR = ***.ru
PTR test = Probably server user
Fingerprint and OS match. No proxy detected (this test does not include headers detection).
No OpenVPN detected.ValdikSS Автор
25.07.2015 14:49У вас, наверное, какая-то старая версия OpenVPN? Я встречал расхождение на 2 значения для старых версий, но только однажды это видел.
alexxxst
25.07.2015 20:00openvpn --version
OpenVPN 2.2.1 x86_64-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] [MH] [PF_INET6] [IPv6 payload 20110424-2 (2.2RC2)] built on Dec 1 2014
deus
25.07.2015 14:21+5Есть рекомендации как обойти такой детект?
ValdikSS Автор
25.07.2015 14:50+3Устанавливать MSS, кратный 10, средствами iptables. 1400 или 1380, например. Либо вовсе его не исправлять, т.е. установить mssfix 0. Это вызовет излишнюю фрагментацию, зато у вас будет MTU 1500.
kacang
27.07.2015 06:16-1пробовал играть с MSS но ничего не получилось. Пробовал через iptables и через openvpn client-side settings. Гугление показало что MSS через iptables только для TCP — это так?
ValdikSS Автор
27.07.2015 11:56Да, верно, MSS это параметр заголовка TCP, но он изменяется (если вы про mssfix OpenVPN'а) и при UDP-подключении тоже. А что конкретно у вас не получается, значение вообще не меняется, или вы не можете конкретное установить?
kacang
27.07.2015 12:46Я имел в виду MSS в iptables, но цель — конечно же mssfix в ОpenVPN. Чтобы ваша детектилка меня так смачно не определяла :)
Когда задавал значение MSS в iptables, в детектилке значение не менялось. Когда добавлял mssfix в клиентсий openvpn конфиг, значение в детектилке менялось, но опознование всё равно было правильное.ValdikSS Автор
27.07.2015 12:53-1У вас, вероятно, неправильное правило в iptables. Нужно что-то вроде такого:
mssfix должен быть установлен в 0 на клиенте и сервере. Если используете AES, например, то нужно уменьшить еще сильнее.iptables -t mangle -A FORWARD -i tun0 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
icCE
26.07.2015 00:23еще как вариант использовать obfsproxy, но и его можно при очень большом желании обноружить.
Тогда использовать обычный stunnel. Правда тут уже возникает потеря скорости из-за дополнительного слоя шифрования.
Ну это помимо игр с MTU.
youROCK
25.07.2015 16:48-1Включил свой рабочий VPN через IPSec:
First seen = 2015/07/25 16:45:53 Last update = 2015/07/25 16:45:53 Total flows = 1 Detected OS = Mac OS X [generic] HTTP software = ??? MTU = 1500 Network link = Ethernet or modem Language = English Distance = 17 Uptime = 1 days 9 hrs 33 min (modulo 49 days) PTR = ... PTR test = Probably home user Fingerprint and OS match. No proxy detected (this test does not include headers detection). No OpenVPN detected
Я уж не знаю, как он работает, но ваша детектилка ничего не задетектила, хотя должна была бы :). Uptime, кстати, тоже неправильно определил.
powerman
25.07.2015 17:48+4Думаю, раз уж Вы заморочились сделать такой вредный сервис, то в статью не помешает добавить совет как что настроить чтобы осложнить для конечных сайтов определение использования пользователем proxy/vpn. Например, во что всё-же лучше выставлять mssfix чтобы это было наиболее похоже на обычных провайдеров (пусть даже мобильных) и менее вероятно детектилось как openvpn.
ValdikSS Автор
25.07.2015 19:50+1Там и так было написано, но не совсем уж прямо. Изменил текст, должно быть понятней.
catharsis
26.07.2015 12:08В Android Chrome показывает то
Detected OS = Linux 3.1-3.10
HTTP software = Chrome 27.x or newer (ID is fake)
то
HTTP software = Android
Странно немного.
Есть описание, как работает p0f, или только исходники?ValdikSS Автор
26.07.2015 14:09Проверьте еще раз, пожалуйста, не должно быть ID is fake.
В p0f есть список сигнатур для разных браузеров, где указан порядок заголовков, которые отправляет браузер, и какие-то специфичные для браузера вещи. Android — generic-сигнатура, которая только и делает, что ищет слово Android в User-Agent.
aram_pakhchanian
26.07.2015 14:33Соединение через OpenVPN c MacOS, браузер – Safari.
Но вообще все это странно: множество любителей посмотреть днем сериалы сидят внутри корпоративных сетей. Если обрубать их потому, что соединение идет через опосредованный сервер, индустрия развлечений может сильно пострадать.
First seen = 2015/07/26 14:25:54
Last update = 2015/07/26 14:25:54
Total flows = 1
Detected OS = Mac OS X [generic] [fuzzy]
HTTP software = ???
MTU = 1376
Network link = ???
Language = Armenian
Distance = 14
Uptime = 11 days 12 hrs 16 min (modulo 49 days)
PTR =…
PTR test = Probably server user
Fingerprint and OS match. No proxy detected (this test does not include headers detection).
No OpenVPN detected.ValdikSS Автор
26.07.2015 14:37Это просто концепт, чтобы напомнить об MSS и показать, что он тоже имеет значение.
У вас стандартные настройки OpenVPN? Версия, может, старая (<2.3.1)?
JetP1L0t
28.07.2015 01:19SoftEther настроенный визардом по дефолту в л2тп+ипсек, открывал сафарей с макоси, получил это:
First seen = 2015/07/28 01:08:14
Last update = 2015/07/28 01:08:14
Total flows = 2
Detected OS = Linux 2.2.x-3.x [generic]
HTTP software = Chrome 27.x or newer (ID OS mismatch)
MTU = 1500
Network link = Ethernet or modem
Language = Russian
Distance = 10
Sys change = 2015/07/28 01:08:17
Uptime = 35 days 8 hrs 30 min (modulo 198 days) < — аптайм сервера с впн
PTR = localhost.local
PTR test = Probably server user
Fingerprint and User-Agent mismatch. Either proxy or User-Agent spoofing.
No OpenVPN detected.
datacompboy
А почему хром оперой детектится?!
ValdikSS Автор
Такие сигнатуры у p0f. Сделаю нормальную, как вернусь домой.