DNS(Domain Name System,域名系统),因特网上作为域名和IP地址互相映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议使用的端口为53(TCP/UDP),一般在进行DNS解析的时候通常使用的是UDP协议,但是在主服务器向备服务器同步数据的时候通常使用的是TCP协议.
概括地讲,所谓 tunnel 就是把下一层(比如IPv4层)的包封装到上一层(比如 SSH,HTTP)或者同一层(比如IPv6层)的协议中进行传输,从而实现网络之间的穿透。很明显,这种实现有个前提,那就是:发送端和接收端必须各有一个解析这种包的程序或者内核模块才能实现正常通信。DNS隧道技术简单来说就是将网络流量封装成DNS流量,再通过DNS的正常走向将流量传出来.这里的流量封装通常由一个客户端来完成,而降封装的DNS流量还原成正常的流量将由一个服务端来完成.
简介
攻击者通常会采用多种方式来进行权限的维持和对目标进行持久化访问.通常攻击者会通过正向连接或者反向连接这两种方式对目标进行控制,正向连接就是被攻击的机器主动连接攻击者控制端,例如:通常攻击者会在被黑的机器上监听某一个端口然后攻击者主动去连接这个端口,从而进行控制.还有一种方式是反向连接,反向连接就是被黑的机器主动连接控制端,这种方式比较灵活因此也是在当前攻击中运用的较多的一种方式.例如:MSF中的各种reverse shell,各种远控木马.本文介绍的DNS隧道技术就是类似于反弹shell的原理,DNS服务端接受来自于客户端的流量进行处理,客户端主动请求服务端DNS服务器进行通信,大致如下:
在复杂和较为安全的网络环境中,防守方对内部网络出去的流量是有严格的控制的,一般通过防火墙来实现,攻击者拿到内网机器的权限后如果想保持长久的对目标的控制并且不被发现,难度是比较大的,因为一些敏感操作(比如:执行命令、内部数据外传等)可能会触犯防火墙或者安全设备的规则,有时候拿下一台机器容易,但是长久控制就比较难.通过DNS隧道可以比较好的维持对目标的长期控制并且不易被发现.DNS隧道将