Главная
Архив новостей
Безопасность в Unix
Безопасность в Windows
Сборник FAQ'ов
Телефония, фрикинг
Кредитные карты
Криптография
Истории о хакерах
Программы, утилиты
_el@sp.sz.ru

RB2 Network


Team Void

Cтатья прислана CmdrTaco (http://cmdrtaco.net)

Мне всегда было интересно наблюдать, как функциональность протоколов расширяется до бессмысленных (а иногда и не до таких уж бессмысленных) пределов, заставляя их делать вещи, для которых они не предусмотрены. Я видел, как DNS расширялся до многих вещей, но до сегодняшнего дня, самой интересной из них были MUD, работающие на DNS. В этом же тексте описывается создание IP-тоннеля внутри DNS. Это невероятно.

FrodoID (frodo@sysv.de) пишет: "Во многих странах можно использовать Internet абсолютно бесплатно, используя модемные пулы с PPP Microsoft. Эти номера, конечно, при нормальных обстоятельствах просто так вам это сделать не дадут. Но знаете ли вы, что вы можете установить полнофункциональное и даже двухстороннее тоннелирование IP через серверы имен? Да, вы поняли правильно, "IP-over-DNS"".

Используя бесплатные номера, на которых при обычных условиях разрешена отправка только на некоторые избранные серверы, теперь вы можете бродить по сети - абсолютно полноценным образом и делая все то, что делали бы на обычном dialup-экаунте. Такие телефонные номера есть у Microsoft.

Объяснение такое. Большинство этих PPP пулов Microsoft разрешают вам использовать сервер имен. Запрос DNS - это все лишь одна из разновидностей коммуникации между клиентом и сервером - клиент запрашивает информацию на сервере имен, известном ему; сервер, которому посылается запрос перенаправляет данные другому серверу имен или непосредственно на сервер, ответственный за данную информацию. Последний сервер направляет данные по тому же маршруту назад.

Это может показаться бесполезным для тоннелирования, но подумайте об оформлении IP-пакетов в запросы сервера имен и о формировании приходящего трафика в соответствующие ответы. Запрос в этом случае выглядел бы, например как "KJhjh33.dd_2sT-XXT.dAAoi_f.mydnstunnel.org" (трафик шифруется в полноценные имена хостов), ответ будет содержать ответный траффик в записи TXT. Таким образом можно построить полноценный IP тоннель. Все что вам нужно - это клиент и фальшивый сервер имен - две конечные точки коммуникации.

Однако это не так просто. DNS-протокол выглядит довольно хаотичным и позволяет передачу только 512 байт - так что необходима фрагментация. И он использует не TCP, а UDP, так что придется создать механизм, который бы гарантировал корректность сборки фрагментов (то есть, нужно создать протокол, заново вводящий некоторые функции IP и TCP). К тому же, клиент может связываться с фальшивым сервером имен в любой момент, но сервер может только отвечать, быть инициатором соединения он не может. Так что нужна некоторая регулярная сверка со стороны клиента, чтобы сделать связь двсторонней.

Мы назвали протокол, достигающей этого "NSTX", расшифровывающийся как "Nameserver Transfer Protocol". Неуклюжесть протокола DNS (только посмотрите на эти заголовки: никакого выравнивания границ или подгонки полей!) и тот факт, что мы пытались использовать его для того, на что он рассчитан не был (DNS, скорее, телефонная книга, чем средство связи) явно не облегчало разработку и внедрение NSTX.

Но наконец нам это удалось. И все отлично сработало на бесплатном номере Microsoft PPP в Германии (который, естественно, был предназначен только для скачивания нескольких обновлений и патчей) - очень стабильно и без задержек. Многие компании держат "закрытые" сети, которые также не разрешают исходящие соединения, но у них есть сервер имен, в той же сети, который может перевести в IP любое имя хоста. Это еще одно применение IP-тоннеля - для двусторонних соединений между закрытой сетью и внешнего мира.

Любой, кому интересно поиграть с этим новым видом тоннеля, о котором ранее задумывалось всего несколько человек, может зайти на http://nstx.dereference.de , где находится полный исходный код. Он представляет из себя решение, состоящее из фальшивого сервера имен и клиента - обе конечные точки для тоннеля "IP-over-DNS". Обе программы используют устройство Linux Ethertap, чтобы создать сетевой тоннельный интерфейс. Фальшивый сервер имен полностью соответствует спецификациям DNS, клиент посылает стандартные запросы, используя хитрый механизм для выкачки из очереди пришедшего на сервер траффика. Менеджерам по безопасности стоит проверить, не стоят ли у них серверы имен там, где они явно не должны быть. Также вам может понравится идея использования телефонных dialup-номеров Mircosoft абсолютно бесплатно.
 Boni.


<== Back to main page