Логотип
Главная | Статьи | DNS Rebinding в локальной сети: крадем данные с роутеров. Скрипт на Node.js для подмены DNS-ответов
DNS Rebinding в локальной сети: крадем данные с роутеров. Скрипт на Node.js для подмены DNS-ответов

DNS Rebinding в локальной сети: крадем данные с роутеров. Скрипт на Node.js для подмены DNS-ответов

5 июня, 2025

40

Йо, хакеры и любители поковыряться в сетях! Сегодня мы разберем олдскульную, но все еще мощную технику — DNS Rebinding. Это атака, которая позволяет обойти защиту браузера и добраться до устройств в локальной сети, таких как роутеры. Мы не только разберем теорию, но и сварганим рабочий скрипт на Node.js для подмены DNS-ответов. Готовы? Погнали!

Что такое DNS Rebinding и почему это опасно?

DNS Rebinding — это атака, которая использует уязвимость в работе DNS и политики Same-Origin в браузерах. Суть проста: ты заманиваешь жертву на свой сайт, а потом подменяешь DNS-ответы так, чтобы браузер думал, что твой домен — это IP-адрес устройства в локальной сети жертвы (например, роутера на 192.168.1.1). Браузер доверяет этому, и ты получаешь доступ к админке роутера прямо через браузер жертвы. А там уже можно вытащить пароли, настройки или даже запустить команды.

Почему это работает? Браузеры не проверяют, что IP-адрес, связанный с доменом, изменился после первой загрузки страницы. А многие роутеры в локалке не требуют повторной авторизации, если ты уже залогинился.

Опасность:

  • Доступ к админ-панели роутера.
  • Кража Wi-Fi паролей.
  • Изменение настроек DNS (например, для фишинга).
  • Полный контроль над сетью жертвы.

Как работает DNS Rebinding?

  1. Ты регистрируешь домен (например, evil.com) и настраиваешь свой DNS-сервер.
  2. Жертва заходит на твой сайт.
  3. Твой DNS-сервер сначала возвращает IP твоего сервера (публичный), чтобы загрузить страницу.
  4. Через короткий промежуток времени (TTL в DNS-записи ставим минимальный) твой DNS-сервер начинает возвращать IP локального устройства (например, 192.168.1.1 — IP роутера).
  5. Браузер жертвы, не подозревая подвоха, отправляет запросы к локальному IP, думая, что это все еще твой домен.
  6. Ты перехватываешь ответы и делаешь что угодно: от кражи данных до эксплуатации уязвимостей.

Настраиваем атаку: пошаговый план

Шаг 1: Подготовка

  • Зарегистрируй домен или поддомен, который будет указывать на твой сервер.
  • Настрой свой DNS-сервер (мы напишем простой на Node.js).
  • Подними веб-сервер для раздачи вредоносной страницы.

Шаг 2: Пишем DNS-сервер на Node.js

Мы будем использовать библиотеку dnsd для создания простого DNS-сервера, который динамически меняет IP-адреса в ответах.

Установка зависимостей

Код DNS-сервера

Важно: Замени your-public-ip на реальный IP своего сервера. Также для работы на порту 53 на Linux нужны root-права (sudo node script.js).

Шаг 3: Веб-страница для атаки

Теперь создадим HTML-страницу, которая будет выполнять запросы к локальному устройству, как только DNS переключится на 192.168.1.1.

Шаг 4: Запуск атаки

  1. Запусти DNS-сервер.
  2. Подними веб-сервер (например, с помощью express) и раздавай HTML-страницу.
  3. Убеди жертву перейти на твой сайт (http://evil.com).
  4. DNS-сервер сначала отдаст публичный IP, а затем подменит его на локальный.
  5. Скрипт на странице начнет слать запросы к роутеру и пересылать данные тебе.

Лайфхаки и хитрости

  • TTL на минимум: Устанавливай TTL=1, чтобы браузер чаще запрашивал DNS.
  • Подбор IP: Если не знаешь точный IP роутера жертвы, перебирай популярные (192.168.1.1, 192.168.0.1 и т.д.).
  • Маскировка: Сделай сайт максимально безобидным, чтобы жертва не заподозрила подвоха.
  • CSRF: Если роутер уязвим к CSRF, можешь не просто читать данные, а менять настройки (например, DNS-сервер) прямо через запросы.

Защита от DNS Rebinding

Чтобы не стать жертвой, вот пара советов:

  • Отключи UPnP на роутере.
  • Смени стандартный IP роутера (например, на 192.168.99.1).
  • Используй DNS-серверы с защитой от подмены (например, Cloudflare 1.1.1.1).
  • Настрой фаервол, чтобы блокировать запросы к локальным IP из браузера.

Заключение

DNS Rebinding — это мощный инструмент, который показывает, как даже базовые протоколы вроде DNS можно использовать для атак. Мы собрали рабочий скрипт на Node.js и показали, как превратить теорию в практику. Теперь ты можешь протестировать эту технику (конечно, только на своих устройствах и с разрешения владельцев сети, правда?).