DNS-туннелирование

Поначалу расскажу про принцип действия данного приема, а потом уже и про мои предположения по поводу защиты от DNS-туннелирования.
Дело в том, если Вы изучал протоколы передачи данных, то должны знать, что TCP/IP основной протокол передачи данных используемый в сетях, но при туннелировании DNS используется несколько дополнительных уровней.
Создано несколько известных мне неплохих программ которые могут создавать такие туннели (в данном случае мы рассматриваем программы работающие под Linux), но одна из таких программ на мой взгляд самая лучшая и скорее всего в большинстве случаев злоумышленник будет использовать именно ее.
Данная программа работает на базе протокола NSFX и состоит из клиента и сервера.
Клиент помещается на компьютер жертву, то есть Ваш ПК, а сервер уже на компьютер проникшего к тебе злоумышленника.
Также для создания DNS-туннеля нужно создать собственный домен, к примеру поддерживается домен incomsoft.com, то создают example.incomsoft.com. Также вносят записи NS для этого домена который будет указывать на сервер NSTX, то есть на ПК злоумышленника. Кроме того для полного функционирования добавляют модуль Ethertap.
В принципе после этого и начинается взаимодействие с твоим сервером как с локальной машиной. Я не ставил своей целью подробное описание DNS-туннелирования поэтому перейдем непосредственно к тому способу защиты который известен мне.

ЗАЩИТА ОТ DNS-ТУННЕЛИРОВАНИЯ.

Честно говоря единого способа, как мне кажется, по методам защиты от этого приема не существует, но свои предложения по этому поводу я все же постараюсь сделать.
Для начала рекомендую поискать на сервере программу клиента, для этого из под root введите такую команду:

root# find / -name nstxcd

Если Вы найдете такую программу, то смело ее удаляйте.
Затем Вы могли бы заметить, что для полной реализации DNS-туннелирования необходимо подключить модуль, поэтому в файле

/etc/modules.conf ищите примерно следующие строки:

alias char-major-36 netlink_dev

alias tap0 ethertap

options tap0 -o tap0 unit=0

Такие строки Вы тоже можете смело удалять, их удаление не причинит вреда системе.
После этого рекомендую заглянуть в анализатор сетевых пакетов Ethereal, там Вы сможете увидеть очень много запросов относительного одного и того же домена, поэтому смело можете удалять данные записи относительно этого домена в файле BIND.
Таким же способом Вы можете узнать где находится злоумышленник.
Мной специально была проведена проверка данного способа на себе (в ходе которой ни один пингвин не пострадал) и могу сказать, что в ethernet Вы можете увидеть примерно следующие записи:

33 1,1598 dns_client dns_server DNS Standart query TXT Po78af.example.incomsoft.com

34 1,2357 dns_server dns_client DNS Standart query response TXT

В крайнем случае можно заблокировать DNS-сервер на несколько минут (я понимаю, что сделать это будет неразумно, но это может быть единственная возможность все восстановить) и начать искать программы или другие лазейки.
Вот в принципе и все. Еще раз хочу сказать, что это мнение основано на собственных наблюдениях и может быть ошибочно, но других способов мне просто не известно.
Также хочу сказать, что пакеты DNS имеют размер 512 байт, а запросы по туннелю больше чем 512 байт, поэтому они будут фрагментироваться, следовательно производительность Вашего сервера резко упадет, хотя те кто с этим сталкивался это уже наверное знают.
Хочется еще посоветовать Вам, что следует поставить систему выявления вторжений – SNORT. На сайте www.snort.org Вы сможете найти последнюю версию.

RSS-материал