8 March 2014

Определение локальных IP-адресов через WebRTC

Information SecurityJavaScript
Через WebRTC можно получить список всех локальных (находящихся за NAT) интерфейсов в системе.

Пример кода на JavaScript jsfiddle.net/GZurr

Работает только в браузерах поддерживающих WebRTC, на текущий момент это Firefox и Chrome.

Это можно использовать для получения более точного фингерпринта браузера или, например, разоблачения персонажей, сидящих за VPN, чтобы ВЫЧИСЛИТЬ ПО АЙПИ И НАБИТЬ Е**ЛЬНИК

Для удобства использования я изготовил js-сниффер, который можно вставить на страницу и удобно просматривать результат его работы: zhovner.com/jsdetector

Достаточно вставить на страницу код:

<script src="//zhovner.com/jsdetector.js?name=test"></script>


Где test нужно заменить на слово, по которому будет доступен результат работы сниффера: zhovner.com/jsdetector/test


Из примечательного в скрипте — определение адресов пользовательского резовлера.

Скрипт генерирует несколько рандомных поддоменов вида RANDOM.detect.zhovner.com и обращается к ним по HTTP.

Зона *.detect.zhovner.com делегирована wildcard-ом на NS-сервер, которые логирует запросы резолверов, и при обращении к сайтам возвращает source адрес, с которого пришел резолвер.

Нужно иметь в виду, что SSL сертификат валидный только для корневого домена, но не для *.detect.zhovner.com, поэтому при встраивании скрипта на https-сайты, будет показано предупреждение о контенте загружаемом не по HTTPS.

UPD:

Еще, оказывается, можно обнаружить соседние хосты в сети dl.dropboxusercontent.com/u/1878671/enumhosts.html
Tags:webrtcnat
Hubs: Information Security JavaScript
+63
43.2k 307
Comments 46