«DNS-туннелирование — это как заложник протокола, который по своей природе должен быть доверенным. Но вместо того чтобы наглухо закрывать порт 53, можно увидеть целый пласт инфраструктуры, которая сама сигнализирует о проблеме, если научиться её правильно читать.»
Принципы работы DNS-туннелирования
Инкапсуляция постороннего трафика внутрь DNS-запросов и ответов — это давняя, но от этого не менее опасная техника. Она эффективна потому, что протокол DNS редко подвергается глубокому анализу на предмет аномалий в корпоративных сетях. Его воспринимают как служебный, безопасный и доверенный.
Чтобы превратить DNS в канал передачи данных, злоумышленники используют гибкость формата записей. Основные типы записей, подверженные манипуляциям:
| Тип записи | Как используется для туннелирования |
|---|---|
| TXT | Служит контейнером для текстовых данных произвольного формата: команды, фрагменты файлов, конфигурации. |
| NULL | Исторически позволяла включать данные произвольной длины и формата. Хотя сейчас встречается редко, в старых системах может оставаться уязвимостью. |
| A, AAAA | Для передачи небольших объёмов данных через IP-адреса, закодированные особым образом (например, через шестнадцатеричное представление). |
| CNAME, MX, SRV | Используются реже. Могут служить для передачи сигналов или маршрутизации внутри туннеля. |
Работа такого туннеля строится на простом принципе: клиент (заражённая машина) кодирует данные, разбивает их на фрагменты и помещает в поддомены DNS-запроса. Например, данные 7a1f8e превращаются в запрос к домену вида 7a1f8e.evil.example.com.
Запрос идёт через штатный рекурсивный резолвер сети и в конечном итоге достигает авторитетного сервера, контролируемого злоумышленником. Тот, получив данные из поддомена, может отправить ответную команду через поле TXT-записи в DNS-ответе.
Вот последовательность работы классического туннеля на основе TXT-записей:
- Инкапсуляция. Вредоносное ПО на хосте кодирует данные (команду, фрагмент файла) и помещает их в метку поддомена DNS-запроса.
- Рекурсивное разрешение. Локальный DNS-сервер, не находя записи в кэше, перенаправляет запрос выше — к провайдерским и корневым серверам.
- Обработка авторитетным сервером. Запрос доходит до сервера злоумышленника, который извлекает полезную нагрузку из доменного имени.
- Формирование ответа. Сервер упаковывает свою команду или следующий фрагмент данных в TXT-запись DNS-ответа.
- Исполнение. Вредоносное ПО на заражённом хосте получает ответ, декодирует команду из TXT-записи и исполняет её.
Это превращает, казалось бы, простой запрос на разрешение имени в двусторонний канал связи.
Как обнаружить DNS-туннелирование
Обнаружение строится на поиске аномалий, так как полностью стандартизированного шаблона атаки не существует. Стоит обращать внимание на несколько групп признаков.
Аномалии в объёме и характере трафика
- Необычно высокое количество DNS-запросов с одного хоста. Внутренний клиент может делать сотни запросов за минуту, что несравнимо с обычной активностью рабочей станции.
- Длинные доменные имена. Запросы к поддоменам вроде
7a1f8e9b12a3c4d5.evil.example.comдолжны вызывать вопросы. Длина метки поддомена, превышающая 63 символа, технически валидна, но на практике почти не встречается в легитимном трафике. - Запросы к необычным типам записей. Резкий всплеск запросов типа TXT или NULL, особенно к внешним доменам, — серьёзный сигнал.
Признаки в данных запросов
- Домены с высокоэнтропийными именами. Легитимные домены часто содержат слова. Имена вроде
a1b2c3d4.evilsite.xyz, похожие на хеш или случайную строку, характерны для туннелей. - Использование динамических DNS-сервисов. Многие туннели используют бесплатные или публичные DDNS-сервисы для быстрой смены точки входа.
- Ответы с нестандартно большими данными. TXT-запись в несколько килобайт — это уже не просто SPF-запись, а вероятная полезная нагрузка.
Сетевые и поведенческие аномалии
- DNS-трафик в нерабочее время. Активность от обычных рабочих станций глубокой ночью, когда она не обусловлена задачами автоматизации.
- Попытки разрешения доменов, заблокированных в reputation-сервисах. Запросы к доменам, известным как вредоносные или связанным с ботнетами.
Методы противодействия и инструменты
Единого решения нет, требуется многослойная защита. Начинать стоит с базовых мер.
Контроль и фильтрация на уровне сети
- Централизованный DNS. Запрет прямых DNS-запросов из внутренней сети на внешние резолверы (типа 8.8.8.8). Весь трафик должен проходить через корпоративные DNS-серверы.
- Анализ логов DNS-серверов. Регулярный поиск по указанным выше аномалиям. Помогают инструменты вроде ELK-стека (Elasticsearch, Logstash, Kibana) для визуализации.
- Политики брандмауэра. Ограничение исходящих DNS-запросов (порт 53/UDP, 53/TCP) только для доверенных внутренних DNS-серверов.
Специализированные средства защиты DNS
- Решения класса DNS firewall. Такие системы, как Cisco Umbrella, работают по принципу облачного прокси. Все DNS-запросы перенаправляются через их инфраструктуру, где происходит анализ репутации домена, проверка на наличие туннелирования и блокировка подозрительных запросов в реальном времени.
- Системы обнаружения вторжений (IDS/IPS). Модули, способные анализировать DNS-трафик на предмет известных сигнатур и поведенческих паттернов туннелей.
Поведенческий анализ и машинное обучение
Современные Security Information and Event Management (SIEM) системы и расширенные аналитические платформы могут выстраивать поведенческие профили для хостов. Резкое отклонение от профиля — например, рабочий станции, никогда не обращавшейся к TXT-записям, внезапно начавшей генерировать их потоком, — становится поводом для расследования.
Пример: разбор инцидента
Рассмотрим упрощённый, но показательный пример. Предположим, злоумышленник пытается выкрасть файл с помощью туннеля.
Вредоносное ПО на хосте кодирует фрагмент файла в base64: U3lzdGVtLkNyeXB0b2dyYXBoeQ==. Оно формирует DNS-запрос типа A для домена:
U3lzdGVtLkNyeXB0b2dyYXBoeQ==.data.exfiltrate.xyz
Локальный DNS-сервер, не зная IP-адреса для этого домена, выполняет рекурсивный запрос. В конечном итоге запрос достигает авторитетного сервера для зоны exfiltrate.xyz, контролируемой злоумышленником.
Сервер злоумышленника не просто возвращает IP. Он может отправить в ответе TXT-запись с командой для следующего действия бота:
exfiltrate.xyz. 300 IN TXT "NEXT:send C:\windows\system32\drivers\etc\hosts"
Вот как выглядит этот обмен в сниффере трафика:
Бот получает команду, кодирует указанный файл, разбивает на части и продолжает передачу через следующие DNS-запросы.
Заключение
Блокировка DNS-туннелей требует не столько сложных инструментов, сколько системного взгляда. Первый шаг — признать, что DNS — это полноценный сетевой протокол, а не просто фоновая служба. Второй — настроить его мониторинг и логирование с акцентом на аномалии. Третий — ограничить его использование только необходимыми бизнес-процессами, убрав излишнюю свободу.
Защита строится на трёх китах: предотвращение (фильтрация и политики), обнаружение (мониторинг и анализ) и реакция (инцидент-менеджмент). Пропуск любого из этих этапов оставляет канал открытым.