<返回更多

使用Iodine进行DNS隧道搭建

2020-07-11    
加入收藏

一、源码下载

Iodine下载地址 GitHub:https://github.com/yarrick/iodine

二、源码编译

执行make命令以编译服务端和客户端二进制文件。运行make install以将二进制文件复制到目标目录。运行make test以编译并运行单元测试。

使用Iodine进行DNS隧道搭建

 


使用Iodine进行DNS隧道搭建

 

编译以后文件如下:

使用Iodine进行DNS隧道搭建

 

在bin目录下,有iodine和iodined两个文件,分别为服务端和客户端。

使用Iodine进行DNS隧道搭建

 

三、隧道工具运行

(1)、参数说明

使用Iodine进行DNS隧道搭建

 

-4 使用IPv4请求

-6 使用IPv6请求

-f 保持前台运行

-r 强制使用DNS隧道进行传输

-P password

-m 最大传输大小

-M 最大传输长度

-T 传输类型

-O 编码类型

Iodine支持多种DNS请求类型,并且NULL和PRIVATE类型期望提供最大的下载带宽。该PRIVATE类型在专用范围内使用值65399。其他可用的类型有TXT,SRV, MX,CNAME和A(返回CNAME)。通常Iodine会自动检测并使用“最佳”请求类型,但是,DNS中继可能会对NULL和TXT施加限制,从而使SRV或MX实际上是最佳选择。但是可以使用该-T选项强制使用设定类型。

(2)、运行

服务端运行,执行 iodined -f 10.0.0.1 test.com

使用Iodine进行DNS隧道搭建

 

Listening to DNS for domain test.com,服务端开始监听所有 test.com的DNS请求,所有指令数据等均通过请求域名的子域进行传输。

客户端运行,执行 iodine -f -r 192.168.XXX.XXX (服务端IP地址)

使用Iodine进行DNS隧道搭建

 

Connected setup complete, transmitting data,客户端运行后,可以发送指令、连接ssh进行数据传输等等。

四、命令传输

新开窗口,运行tcpdump -i dns0 port 53 -w file.pcap,其中参数-i 指定网卡, port 指定端口,DNS使用53端口,-w 写入文件。

使用Iodine进行DNS隧道搭建

 

ssh连接,执行 ssh root@10.0.0.1

使用Iodine进行DNS隧道搭建

 

显示抓取了166个包

使用Iodine进行DNS隧道搭建

 

使用wireshark打开保存的pcap文件,因为我们监听的是ens33网卡,所以会有正常的DNS流量,比如192.168.221.2与192.168.221.129之间的通信,其中192.168.221.129是无服务端,192.168.221.2为网关地址,192.168.221.130为客户端地址。

使用Iodine进行DNS隧道搭建

 

可以看到DNS查询和响应使用了多种类型,包括A、AAAA、PTR、NULL等。打开一个响应报文,如下:

使用Iodine进行DNS隧道搭建

 


使用Iodine进行DNS隧道搭建

 

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>