『DNS隧道工具』— iodine

『DNS隧道工具』— iodine一 入坑必读 1 简介因为 iodine 碘 的原子序数为 53 这恰好是 DNS 端口号 故取名为 iodine iodine 基于 C 语言开发 分为服务端程序 iodined 和客户端程序 iodine kali 系统内置 服务端程序 iodined 提供特定域名的 DNS 解析服务 当客户端请求该域名的解析 就可以建立通道连接 支持 EDNS base32 base64 base128 等多种编码规范 更

一、入坑必读

1、简介

因为 iodine(碘)的原子序数为53,这恰好是DNS端口号,故取名为iodine。

iodine基于C语言开发,分为服务端程序 iodined 和客户端程序 iodine,kali系统已内置。

支持EDNS、base32,base64,base128等多种编码规范,更多使用方法和功能特性请参考官方文档http://code.kryo.se/iodine/

使用热度: ★★★★☆

2、专业词

  • Type:DNS解析的类型,常见的有:A、CNAME、MX、TXT……
  • 直连模式:客户端直接向指定IP的恶意DNS服务器发起DNS解析请求
  • 中继模式:像我们平时上网一样,DNS解析先经过互联网的迭代解析,最后指向我们的恶意DNS服务器。相比直连,速度较慢,但是更安全。

3、放哪儿

攻击机 被控机
服务端 | 客户端 客户端 | 服务端
解释: 环境搭建完成后,由于服务端和客户端会处于同一个局域网,因此两端均可任意放于主控机和被控机上(具体还是得视情况而定)

4、支持Type

  • A
  • TXT
  • CNAME
  • MX
  • NULL
  • SRV
  • PRIVATE

5、兼容说明

  • 服务端为Linux才可使用raw-mode模式(可启动参数加 -r 跳过raw-mode)
  • 客户端为Win10时,环境搭建后,可连接成功,但无法ping通(即不可用!)
  • 除以上情况,一般均可正常使用

6、全套下载地址

  • CSDN:https://download.csdn.net/download/localhost01/

二、原理简述

  1. 通过TAP虚拟网卡(即需要单独安装tap-driver),在服务端机器(相应程序iodined)建立一个局域网(如ip为10.0.0.1);
  2. 客户端机器(相应程序iodine)也需要TAP建立虚拟网卡;
  3. DNS隧道流程:iodine客户端->DNS服务商->iodined服务端
  4. 服务端程序 iodined 提供特定域名的DNS解析服务。当客户端请求该域名的解析,就可以建立通道连接。
  5. 两者通过DNS隧道,同处于一个局域网(即两张虚拟网卡IP会在同一个局域网)。

因此,正式使用时,需要购买一个域名。并在服务商控制台配置该域名将NS转由iodined服务端去解析!

而使用方法就很简单了。由于客户端和服务端都在同一个局域网(说白了,都能ping通),那么只需要直接访问服务端即可。

如3389,就直接mstsc10.0.0.1:3389

三、安装使用

1、安装

iodine支持直接转发中继两种模式。客户端和服务端建立通信后,可以看到客户机上多出一块名为dns0的虚拟网卡。

本节使用iodine直连模式建立DNS通道。

  1. 准备2台Linux机器,其中一台作为DNS隧道的主控机,另外一台作为被控机。

    当然github上也有相应的windows版,可以直接开箱即用。不过windows版需先安装TAP。安装方法如下:

    下载openVPN,安装时仅选择TAP-Win32 driver即可。安装后,可以发现服务器多出一块网卡。

  2. https://github.com/yarrick/iodine上克隆下来,运行make install以编译服务器和客户端二进制文件。当然也可以直接从上面的下载地址下载,免去编译,即拿即用
  3. 编译成功后,把服务端扔到主控机上,输入iodined --help验证是否安装成功
  4. 把客户端扔到被控机上,输入iodine --help验证是否安装成功

2、使用

在服务端机器上,执行:

sudo iodined -P  -f -DD 192.168.0.1 abc.com 

其中:

  • abc.com 自定义DNS传输的主域名
  • 192.168.0.1 自定义的局域网虚拟IP
  • 自定义密码,客户端需要同样密码才能连接

在客户端机器上,执行:

sudo iodine -P  -f -r -T TXT 
  
    abc.com 
    
  

其中:


  • 可选,表示不走
    DNS服务商这一步,直接向
    iodine服务端所在的
    服务器IP请求DNS解析,即
    直连
  • -r 由于iodine有时可能会自动切换DNS隧道为UDP通道,故该参数作用是:强制在任何情况下使用DNS隧道
  • -f 将使客户端保持在前台运行
  • -t 使用的DNS类型
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199964.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午11:49
下一篇 2026年3月20日 上午11:49


相关推荐

  • Netty实战

    Netty实战Netty 实战此处观看更加使用 Netty 实现一个简单的 RPC 框架 RPC 是什么 原理是什么网上很多大神都有在总结 我就不再重复 如果对 RPC 还不是很了解的同学不妨先去了解一下基本的概念这个实例仅仅只是学习 Netty 的一个很小的样例 实际上 它离真正的 RPC 还差得远 写这个的目的仅仅只是为了熟悉 Netty 一个真正的 RPC 至少应该具备以下的功能 注册中心网络传输序列化和反序列化动态代理负载均衡传输协议需求 模仿 dubbo 消费者和提供者约定接口和协议 消费者远程调用提供者的服务

    2026年3月19日
    2
  • 将JSON数组转化为List集合[通俗易懂]

    将JSON数组转化为List集合[通俗易懂]假如我们向redis中存放了一个JSON数组,从中获取的时候需要将JSON数组转化为List集合,然后将List对象返回给前端。1.引入hutool和fastjson依赖<!–hutool–><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId&gt

    2022年6月29日
    133
  • unity3D入门_unity怎么学

    unity3D入门_unity怎么学UnityShader中级(Unity2019unity教程初级中级高级扫码时备注或说明中留下邮箱付款后如未回复请加微信630105904联系本博主

    2022年8月10日
    9
  • IIS 发生意外错误 0x8ffe2740「建议收藏」

    IIS 发生意外错误 0x8ffe2740「建议收藏」IIS发生意外错误0x8ffe2740 1、IIS发生意外错误0x8ffe2740原因如果系统中存在端口冲突就有可能发生本情况.IIS默认使用80端口进行HTTP通信.如果除IIS外的应用程序正在运行并且正在相同的IP地址上使用80端口,在您试图使用…

    2022年7月14日
    19
  • AutoSAR系列讲解 – 总目录

    AutoSAR系列讲解 – 总目录博主想在开始前先讲一下我们的具体安排,这里就以目录加说明的形式展示出来,同时这也可以作为大家学习AutoSAR的参考。由于实践篇需要在很久以后才会更新,所以这里我们先罗列一下理论篇的内容,实践篇等开始更新的时候我再补充上

    2022年7月20日
    26
  • navicat for mac激活码【中文破解版】

    (navicat for mac激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号