Как стать автором
Обновить

Комментарии 7

Привет! Спасибо, очень подробно и понятно. Power shell использовать мне кажется плохо, грамотный SOC/Blue-team выявят запуск новых скриптов и обход запрета, на ПК всяких критичных (АРМ КБР И т.п.) PS обычно вырезан вообще. Хотя и множество новых DNS запросов в одну сторону сразу выявит тоже

Добрый день! Спасибо за фидбек! Мы пишем эту утилиту прежде всего по мере наших потребностей, и так получилось, что PS — единственное, на чем было возможно запустить клиента. Сейчас, например, мы столкнулись с ситуацией, когда кроме php ничего нет, поэтому в скором времени в репозиторий добавится и php-клиент.


Что касается тактики обнаружения туннелей по количеству запросов в секунду, на практике такой поведенческий анализ обычно выключен. Ну, а если нет, то у нас предусмотрена возможность делать паузы между запросами.

Ещё на тему обнаружения есть интересная статья от китайских коллег, они это делают с помощью подсчета частоты встречаемости биграмм в домене (A Bigram Based Real Time DNS Tunnel Detection Approach), что гораздо эффективнее подсчёта запросов, но такое пока никто не реализовал в продакшене.

По PowerShell есть ещё такой момент, что система просто неподписанный скрипт по дефолту исполнять не хочет. Тут или вмешаться в политики, или подпись сделать. А если уж на уровне групповых политик выставлен запрет на исполнение неподписанного ps1 кода, то тут даже вмешательство в настройки разрешений исполенения ps1 скриптов не помогут.
Спасибо за статью!

Вы не сталкивались с проблемой передачей данных в base64 через DNS? Проблема бывает в том, что некоторые резолверы не всегда нормально передают кейз букв, в котором был запрошен домен. Например перемешивают строчные и заглавные буквы, www.example.com -> wWw.ExAMplE.Com. В таком случае вся кодировка base64 конечно же сломается.
Проблема решается использованием zbase32, правда эта кодировка позволяет закодировать меньшее количество байт чем base64 в строке той же длины.
Почему вы в своем случае используете base64?

Здравствуйте! Да, мы знаем, что base64 — не идеальный вариант для передачи, поэтому со временем появится возможность выбрать кодировку передаваемых сообщений. Стали использовать base64 изначально, потому что в тех сетях, где нам нужно было прокинуть туннель, его пропускает; скорость выше, чем у base32, а также потому, что в случае с Bash считанные нулевые байты нам удалось корректно передать только через конвейер в base64 непосредственно.

Хочется упомянуть еще SoftEther VPN, который может не только в обычный и https туннель, но и в DNS и ICMP оборачиваться умеет «из коробки».
Зарегистрируйтесь на Хабре, чтобы оставить комментарий