
Недавно я посмотрел вебинар по пентестингу, на котором была продемонстрирована атака DNS-туннелирования. В разделе вопросов и ответов вебинара кто-то спросил, как можно предотвратить такое туннелирование. Совет был таков: не разрешать внутренним DNS-серверам разрешать внешние адреса и запускать все такие внешние разрешения через прокси. Может ли кто-нибудь объяснить, почему это предотвратит туннелирование. Если клиент запускает что-то, что отправляет созданный DNS-пакет на прокси-сервер со скрытой полезной нагрузкой, не дойдет ли он в конечном итоге до соответствующего DNS-сервера и не будет возвращен клиенту через прокси-сервер?
решение1
Короткий ответ: Прокси-серверы, поддерживающие приложения, способны анализировать содержимое пакета с учетом протокола и могут определять, соответствует ли полезная нагрузка повторно собранного пакета, проходящего через него, структурам данных для этого протокола. Таким образом, прокси-сервер знает, пытаетесь ли вы туннелировать данные HTTP (например) в сегментах DNS.
решение2
Еще одна вещь, которую может сделать прокси (или, на самом деле, то, что я бы сделал, если бы беспокоился о туннелировании, и для этого не требуется прокси, а нужен только приличный маршрутизатор) — это просто сильно ограничить объем трафика на порту 53. Это не полностью исключит туннелирование, но значительно снизит его полезность. (Например, разрешить, скажем, 100 кбит данных за 120-секундный интервал. Это эквивалентно максимальной пропускной способности < 100 байт в секунду, поэтому вы не сможете получить огромное количество данных из этого соединения)