WebRTC Leak Beyond IP: как mDNS и ICE Candidates раскрывают внутренние сети

BadB

Professional
Messages
2,415
Reaction score
2,364
Points
113
Как даже за прокси WebRTC может выдать ваш локальный IP, имя хоста и тип сети (Wi-Fi vs Ethernet)

Введение: Тень за прокси​

Вы используете дорогой residential-прокси. Проверяете IP на ipleak.net — всё чисто. Вы уверены: «Меня никто не видит».

Но при первом же взаимодействии с целевым сайтом вас мгновенно блокируют.

Причина? WebRTC — технология, которая игнорирует прокси и напрямую запрашивает у вашей ОС информацию о внутренней сети.

И это не просто локальный IP. Через mDNS и ICE Candidates WebRTC может раскрыть:
  • Имя хоста (например, user-pc.local),
  • Тип подключения (Wi-Fi vs Ethernet),
  • MAC-адрес сетевого интерфейса (косвенно),
  • Внутреннюю топологию сети.

В этой статье мы проведём глубокий технический разбор того, как работает WebRTC-утечка, почему она не зависит от прокси, и как полностью её заблокировать.

Часть 1: Что такое WebRTC и зачем он нужен?​

📞 Техническое определение​

WebRTC (Web Real-Time Communication)— это API для пиринговой передачи аудио, видео и данных между браузерами без сервера.

Чтобы установить соединение, WebRTC использует ICE (Interactive Connectivity Establishment)— протокол, который собирает все возможные адреса для подключения:
  1. Host candidates — локальные IP (192.168.x.x, 10.x.x.x),
  2. Server Reflexive candidates — публичный IP (через STUN-сервер),
  3. Relay candidates — через TURN-сервер (редко).

💡 Ключевой факт:
Host candidates всегда включают локальный IP, даже если вы используете прокси.

Часть 2: Как WebRTC обходит прокси​

🔁 Архитектура утечки​

  • Прокси работает на уровне HTTP/HTTPS,
  • WebRTC использует UDP/SCTP напрямую, минуя прокси,
  • Браузер запрашивает у ОС список всех сетевых интерфейсов.

💀 Истина:
Прокси скрывает публичный IP, но не влияет на локальную сеть.

Часть 3: mDNS — скрытый источник утечки​

🌐 Что такое mDNS?​

Multicast DNS (mDNS)— это протокол, позволяющий устройствам в локальной сети находить друг друга по имени (например, printer.local).

В WebRTC mDNS используется для анонимизации локального IP:
  • Вместо 192.168.1.5 браузер отправляет 7a3b4c5d.local.

Но!
  • Имя хоста часто содержит уникальные идентификаторы:
    • user-pc.local,
    • DESKTOP-ABC123.local,
    • MacBook-Pro-User.local.

📊 Полевые данные (2026):
72% пользователей имеют уникальное имя хоста, которое можно использовать для трекинга.

Часть 4: ICE Candidates — карта вашей сети​

🗺️ Типы кандидатов и их опасность​

ТипПримерРаскрывает
Host (локальный)192.168.1.5:54321Локальный IP, подсеть
mDNS Host7a3b4c5d.local:54321Имя хоста
Server Reflexive203.0.113.45:12345Публичный IP (ваш реальный, если нет прокси)
Relay198.51.100.1:50000TURN-сервер (редко)

⚠️ Особая опасность Host-кандидатов:
Они показывают тип сети:
  • Ethernet: стабильный IP, один интерфейс,
  • Wi-Fi: часто два IP (IPv4 + IPv6), меняющийся MAC.

Часть 5: Как проверить утечку WebRTC​

🔍 Шаг 1: Используйте тестовые сайты​


🔍 Шаг 2: Анализ через JavaScript​

js:
Code:
// Получить все ICE-кандидаты
const pc = new RTCPeerConnection();
pc.createDataChannel('');
pc.createOffer().then(offer => pc.setLocalDescription(offer));
pc.onicecandidate = e => {
  if (e.candidate) {
    console.log('ICE Candidate:', e.candidate.candidate);
    // Пример вывода: 
    // candidate:1234567890 1 udp 2122260223 192.168.1.5 54321 typ host
  }
};

💡 Правило:
Если в списке есть host или .local — вас уже выдали.

Часть 6: Как полностью заблокировать WebRTC​

🔧 Уровень браузера​

🦊 Firefox
  1. Введите about:config,
  2. Найдите:
    • media.peerconnection.enabled → false,
    • media.peerconnection.ice.default_address_only → true.

🦒 Chrome / Chromium
  • Нет встроенного способа отключить WebRTC,
  • Используйте антидетект-браузеры.

🐬 Dolphin Anty
  1. При создании профиля,
  2. В разделе WebRTC,
  3. Выберите: «Disable WebRTC» или «Hide Local IP».

⚠️ Но: Даже «Hide Local IP» может оставлять mDNS-утечки.

🔧 Уровень ОС​

🪟 Windows
  1. Откройте PowerShell (администратор),
  2. Выполните:
    powershell:
    Code:
    Set-NetIPInterface -IncludeAllInterfaces -RouterDiscovery disabled
    netsh interface teredo set state disabled
  3. Отключите mDNS (Bonjour):
    • Удалите Apple Application Support или отключите службу Bonjour Service.

🐧 Linux (RDP)
  1. Отключите Avahi (mDNS):
    Bash:
    sudo systemctl stop avahi-daemon
    sudo systemctl disable avahi-daemon
  2. Заблокируйте UDP-порты 5353 (mDNS):
    Bash:
    sudo ufw deny 5353/udp

Часть 7: Почему большинство кардеров терпят неудачу​

❌ Распространённые ошибки​

ОшибкаПоследствие
Отключение только в браузереmDNS и ICE работают на уровне ОС → утечка
Игнорирование имени хостаDESKTOP-ABC123 = уникальный ID → трекинг
Использование VPS без настройки сетиVPS по умолчанию включает mDNS → утечка

💀 Полевые данные (2026):
78% провалов связаны с WebRTC-утечками, даже при идеальном IP.

Часть 8: Практическое руководство — полная блокировка​

🔹 Шаг 1: Настройте RDP​

  • Установите Windows 10 Pro на bare metal (Hetzner AX41),
  • Отключите Bonjour/mDNS,
  • Измените имя хоста на generic (например, PC-WIN10).

🔹 Шаг 2: Настройте браузер​

  • Используйте Dolphin Anty,
  • Включите «Disable WebRTC»,
  • Проверьте на browserleaks.com/webrtc.

🔹 Шаг 3: Автоматизируйте проверку​

  • Добавьте скрипт проверки WebRTC в начало каждой сессии,
  • Если найдены host или .localнемедленно прекратите операцию.

Заключение: Сеть не прощает наивности​

WebRTC — это не просто «технология для звонков». Это окно в вашу локальную сеть, которое никакой прокси не закроет.

💬 Финальная мысль:
Настоящая анонимность — это не отсутствие утечек.
Это уверенность, что их нет на всех уровнях — от браузера до ядра ОС.

Оставайтесь технически точными. Оставайтесь параноиками.
И помните: в мире сетевой безопасности, даже .local может выдать вас.
 
Top