DNS隧道 之 端口转发 [ 一 ]
0x01 本次实验环境大致如下:
0x02 我们要实现的最终目的
0x03 首先,下载编译安装dns2tcp,注意,heightlamp,heightlnmp两台机器都要装上,因为就是要在它们之间建立DNS隧道,即一个作为客户端,一个作为服务端,当然,也有对应的win和rb版本,如果你弹回的是一个meterpreter的shell,也可以事先将dns2tcp模块加到msf中,然后绑定到指定的会话上
0x04 dns2tcp安装没什么问题之后,我们开始去配置自己的dns服务器,这也是整个过程中最核心的地方,务必要好好理解
打开dns服务器配置,先创建一个名为klionsec.org
的正向区域,在此区域中新建一条指向heightlnmp机器名为setunnel
的A记录
之后在该域中再新建一个名为Nday
的子域,最后,在该子域中新建一条委派,将委派指向刚刚创建好的A记录,即,sec.nday.klionsec.org
,如下
然后,分别到heightlamp和heightlnmp机器上把下面的解析指向添加本地dns配置中,说白点就是让win2012r2en这台机器为我们解析域名
此时,分别到heightlnmp和heightlamp机器上去用nslookup跟踪下sec.nday.klionsec.org
的解析结果,看是不是都解析到了192.168.3.41上,两台机器解析必须正常,否则隧道是无法建立的
0x05 DNS 配置无误之后,我们回到heightlnmp机器上,开始配置dns隧道的服务端,如下
编辑dns2tcp服务端配置文件
启动服务端
0x06 此时,再回到heightlamp机器上,配置好dns隧道的客户端,如下
配置之前,我们先测下,看看和服务端能不能通
编辑dns2tcp客户端配置文件
启动客户端
在heightlamp上连接本地的1389端口,看看能不能连到Midlnmp的22端口上,很明显,如下图,已经成功连上去了
在heightlamp上观察下经过的dns流量,一目了然
小结:
看到这里,想必大家现在也理解的差不多了,在深刻理解了整个运作流程之后,利用dns隧道进行端口转发,其实就这么简单,确实也是个烂大街的把戏了,不过,碰到一些特别恶劣的环境,还是非常值得一试的,与其说是DNS隧道,不如说是udp隧道,相对更确切些,因为DNS的请求响应默认走的是udp的53端口,另外,有些朋友可能还有些误解,认为只要是53端口就一定跑的是dns服务,就像大家普遍认为的只要是80端口跑的就一定是web服务一样,其实不然,我们区分不同的服务,并非根据端口,而是根据不同服务所使用的协议报文格式来决定的,隧道的意思其实也就是按照指定的协议对数据进行重新封装,当然,除了端口转发,还有各种基于DNS隧道通信的远控,如,典型的Cobalt strike等…至于利用dns log进行sql注入,执行代码,可能大家也都比较熟练了,这里就不细说了