Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
iodine — Туннелирование данных IPv4 через DNS-серверы для обхода ограничений брандмауэра и обеспечения скрытого сетевого доступа при тестировании на проникновение. | Kitploit
Инструменты/GitHubGitHub/yarrick/iodine
Обход IDS/IPSЭксфильтрация данныхСетевая безопасностьТестирование на ПроникновениеКомандование и УправлениеRed TeamingИнструмент Удаленного ДоступаТоп в Эксфильтрация данных №2Топ в Обход IDS/IPS №13
8.0k59913611 дней назадПроверено Kitploit
GitHub
yarrick/iodine

iodine

Туннелирование данных IPv4 через DNS-серверы для обхода ограничений брандмауэра и обеспечения скрытого сетевого доступа при тестировании на проникновение.

РепозиторийСайт

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

iodine - https://code.kryo.se/iodine

Это программное обеспечение позволяет туннелировать данные IPv4 через DNS-сервер. Это может быть полезно в различных ситуациях, когда доступ в интернет ограничен межсетевым экраном, но DNS-запросы разрешены.

СБОРКА

Для сборки iodine вам нужен meson. Выполните следующие команды для сборки в каталоге build:

meson setup build
cd build
ninja

Для сборки и запуска тестов вам нужна библиотека check. Запустите их, выполнив ninja test в каталоге сборки.

БЫСТРЫЙ СТАРТ

Попробуйте это в своей собственной локальной сети! Выполните следующие простые шаги:

  • На вашем сервере выполните: ./iodined -f 10.0.0.1 test.com. Если вы уже используете сеть 10.0.0.0, используйте другую внутреннюю сеть, например 172.16.0.0.
  • Введите пароль.
  • На клиенте выполните: ./iodine -f -r 192.168.0.1 test.com. Замените 192.168.0.1 на IP-адрес вашего сервера.
  • Введите тот же пароль.
  • Теперь у клиента есть IP-адрес туннеля 10.0.0.2, а у сервера — 10.0.0.1.
  • Попробуйте пропинговать друг друга через туннель.
  • Готово! :)

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

КАК ИСПОЛЬЗОВАТЬ

Примечание: сервер и клиент должны использовать абсолютно одинаковый протокол. В большинстве случаев это означает запуск одной и той же версии iodine. К сожалению, реализация обратной и прямой совместимости протоколов обычно неосуществима.

Сторона сервера

Чтобы использовать этот туннель, вам нужен контроль над реальным доменом (например, mydomain.com), и сервер с публичным IP-адресом для запуска iodined. Если этот сервер уже запускает DNS-программу, измените её порт прослушивания и затем используйте опцию -b в iodined, чтобы позволить iodined пересылать DNS-запросы. (Обратите внимание, что эта процедура не рекомендуется в производственных средах, поскольку DNS-пересылка iodined не является полностью прозрачной, например, передачи зон работать не будут.) В качестве альтернативы вы можете пересылать поддомен с вашего DNS-сервера в iodined, который тогда должен работать на другом порту (-p).

Затем делегируйте поддомен (скажем, t1.mydomain.com) серверу iodined. Если вы используете BIND для своего домена, добавьте две строки, подобные этим, в файл зоны:

t1		IN	NS	t1ns.mydomain.com.		; note the dot!
t1ns		IN	A	10.15.213.99

Строка NS — это всё, что нужно для маршрутизации запросов для поддомена t1 на сервер t1ns. Мы используем короткое имя для поддомена, чтобы сохранить как можно больше пространства, доступного для передачи данных. В конце строки NS находится имя вашего сервера iodined. Это может быть любое имя, указывающее куда угодно, но в данном случае его легко сохранить в том же файле зоны. Оно должно быть именем (не IP-адресом), и это имя само должно иметь запись A (не CNAME).

Если ваш сервер iodined имеет динамический IP, используйте провайдера динамического DNS. Просто укажите строку NS на него, а строку A опустите:

t1		IN	NS	myname.mydyndnsprovider.com.	; note the dot!

Затем перезагрузите или перезапустите вашу программу сервера имён. Теперь любые DNS-запросы для доменов, заканчивающихся на t1.mydomain.com, будут отправляться на ваш сервер iodined.

Наконец, запустите iodined на вашем сервере. Первый аргумент — это IP-адрес внутри туннеля, который может быть из любого диапазона, который вы ещё не используете (например, 192.168.99.1), а второй аргумент — назначенный домен (в данном случае t1.mydomain.com). Использование опции -f сохранит работу iodined на переднем плане, что помогает при тестировании. iodined откроет виртуальный интерфейс ("tun device"), а также начнёт прослушивать DNS-запросы на UDP-порту 53. Введите пароль в командной строке (-P pass) или после того, как сервер запустится. Теперь всё готово для клиента.

Если есть вероятность, что вы будете использовать туннель iodine из неожиданных сред, запустите iodined с опцией -c. Итоговая командная строка в этой примерной ситуации:

./iodined -f -c -P secretpassword 192.168.99.1 t1.mydomain.com

Сторона клиента

Вся настройка выполнена, просто запустите iodine. Она принимает один или два аргумента: первый — локальный ретранслирующий DNS-сервер (необязательный), а второй — домен, который вы использовали (t1.mydomain.com). Если вы не укажете первый аргумент, будет использована текущая DNS-настройка системы.

Если DNS-запросы разрешены к любому компьютеру, вы можете напрямую указать адрес сервера iodined в качестве первого аргумента (в примере: t1ns.mydomain.com или 10.15.213.99). В этом случае также может оказаться, что любой трафик разрешён к DNS-порту (53 UDP) любого компьютера. Iodine обнаружит это и, если возможно, переключится на туннелирование через raw UDP. Чтобы принудительно использовать DNS-туннелирование в любом случае, используйте опцию -r (особенно полезно при тестировании в собственной сети).

Туннельный интерфейс клиента получит IP-адрес, близкий к адресу сервера (в данном случае 192.168.99.2 или .3 и т. д.), и подходящий MTU. Введите тот же пароль, что и на сервере, либо как опцию командной строки, либо после запуска клиента. Использование опции -f оставит клиент iodine работать на переднем плане.

Итоговая командная строка в этой ситуации; добавление -r принудительно включает DNS-туннелирование, даже если raw UDP-туннелирование было бы возможно:

./iodine -f -P secretpassword t1.mydomain.com

С любой стороны теперь вы должны иметь возможность пропинговать IP-адрес на другом конце туннеля. В данном случае ping 192.168.99.1 с клиента iodine и 192.168.99.2 с сервера iodine.

ПРОЧАЯ ИНФОРМАЦИЯ

IPv6

Данные внутри туннеля передаются только по IPv4.

Сервер по умолчанию принимает входящие запросы как по IPv4, так и по IPv6. Используйте опции -4 или -6, чтобы слушать только один протокол. Raw-режим будет использоваться на том же протоколе, что и при входе.

Клиент может использовать IPv4- или IPv6-серверы имён для подключения к iodined. Ретранслирующие серверы имён при необходимости автоматически выполнят преобразование между протоколами. Используйте опции -4 или -6, чтобы заставить клиента использовать определённую версию IP для своих DNS-запросов.

Если ваш сервер слушает IPv6 и доступен, добавьте для него запись AAAA в вашу настройку DNS. Расширение приведённого выше примера будет выглядеть так:

t1		IN	NS	t1ns.mydomain.com.		; note the dot!
t1ns		IN	A	10.15.213.99
t1ns		IN	AAAA	2001:db8::1001:99

Маршрутизация

Можно направить весь трафик через DNS-туннель. Для этого сначала добавьте маршрут к хосту сервера имён, используемого iodine, через проводной/беспроводной интерфейс с шлюзом по умолчанию в качестве шлюза. Затем замените шлюз по умолчанию на IP-адрес сервера iodined внутри DNS-туннеля и настройте сервер для выполнения NAT.

Однако учтите, что туннелируемый трафик данных вообще не шифруется и может быть относительно легко прочитан и изменён внешними сторонами. Для максимальной безопасности запустите VPN через DNS-туннель (=двойное туннелирование) или используйте доступ по secure shell (SSH), возможно, с перенаправлением портов. Последнее также можно использовать для веб-сёрфинга, если вы запустите веб-прокси (например, Privoxy) на своём сервере.

Тестирование

Сервер iodined отвечает на запросы NS, отправленные для поддоменов домена туннеля. Если ваш поддомен iodined — t1.mydomain.com, отправьте запрос NS для foo123.t1.mydomain.com, чтобы проверить, работает ли делегирование. dig — хороший инструмент для этого:

% dig -t NS foo123.t1.mydomain.com
ns.io.citronna.de.

Кроме того, сервер iodined будет отвечать на запросы, начинающиеся с 'z', для любого из поддерживаемых типов запросов, например:

dig -t TXT z456.t1.mydomain.com
dig -t SRV z456.t1.mydomain.com
dig -t CNAME z456.t1.mydomain.com

Во всех этих случаях ответ должен выглядеть как искажённый текст.

Скачать инструмент