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.0k5981062 дней назадПроверено 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 обнаружит это и переключится на туннелирование через сырой UDP, если это возможно. Чтобы принудительно использовать DNS-туннелирование в любом случае, используйте опцию -r (особенно полезно при тестировании в вашей собственной сети).

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

Итоговая командная строка в этой примерной ситуации; добавление -r принудительно включает DNS-туннелирование, даже если было бы возможно туннелирование через сырой 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, чтобы прослушивать только один протокол. Сырой режим будет использоваться на том же протоколе, что и для входа.

Клиент может использовать 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

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

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