本文主要介绍:
1)什么是DNS?
2)使用Nslookup命令探测DNS域传送漏洞
3)使用nmap扫描DNS域传送漏洞
4)使用dig命令检测
5)使用python + Dig批量扫描漏洞主机
6)使用python实现AXFR查询
1)什么是DNS?
DNS(Domain Name System,域名管理系统)是万维网WWW的重要基础。它建立在一个分布式数据库基础之上,在这个数据库里,保存了IP地址和域名的相互映射关系。
正因为DNS的存在,我们才不需要记住大量无规则的IP地址, 而只需要知道对方计算机的名称,就可以访问对应服务。比如,笔者的博客是www.lijiejie.com,当用户在浏览器地址栏输入上述域名,浏览器就将向DNS服务器发送查询,得到目标主机的IP地址,再与对应的主机建立一个HTTP连接,请求网页。相对于记住106.187.34.156这个IP地址,域名www.lijiejie.com自然更有意义、更加清晰明了。
DNS服务器使用的TCP/UDP端口号是53。
最常用的DNS记录有以下几类:
A记录 IP地址记录,记录一个域名对应的IP地址 AAAA记录 IPv6 地址记录,记录一个域名对应的IPv6地址 CNAME记录 别名记录,记录一个主机的别名 MX记录 电子邮件交换记录,记录一个邮件域名对应的IP地址,比如my[at]lijiejie.com 后面的部分lijiejie.com,邮件服务器对应的IP地址 NS记录 域名服务器记录 ,记录该域名由哪台域名服务器解析 PTR记录 反向记录,也即从IP地址到域名的一条记录 TXT记录 记录域名的相关文本信息
作为重要的互联网基础设施,难免成为黑客的重点攻击目标,服务的稳定性尤为重要。DNS服务器分为:主服务器、备份服务器和缓存服务器。在主备服务器之间同步数据库,需要使用“DNS域传送”。域传送是指后备服务器从主服务器拷贝数据,并用得到的数据更新自身数据库。
若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录。造成整个网络的拓扑结构泄露给潜在的攻击者,包括一些安全性较低的内部主机,如测试服务器。凭借这份网络蓝图,攻击者可以节省很少的扫描时间。
大的互联网厂商通常将内部网络与外部互联网隔离开,一个重要的手段是使用Private DNS。如果内部DNS泄露,将造成极大的安全风险。风险控制不当甚至造成整个内部网络沦陷。
2) nslookup命令
笔者首先介绍DNS查询工具nslookup命令的使用。仅使用该命令,就可完成DNS域传送的测试。在windows命令提示符中输入“nslookup ?”,得到如下简略的用法说明:
d:\nslookup ? 用法: nslookup [-opt ...] # 使用默认服务器的交互模式 nslookup [-opt ...] - server # 使用 "server" 的交互模式 nslookup [-opt ...] host # 仅查找使用默认服务器的 "host" nslookup [-opt ...] host server # 仅查找使用 "server" 的 "host"
Nslookup命令以两种方式运行:非交互式和交互式。本 文第一次提到“交互式”的概念,简单说明:交互式系统是指执行过程中允许用户输入数据和命令的系统。而非交互式系统,是指一旦开始运行,不需要人干预就可以自行结束的系统。因此,nslookup以非交互式方式运行,就是指运行后自行结束。而交互式,是指开始运行后,会要求使用者进一步输入数据和命令。
非交互式下命令的语法是是:
nslookup [-option] [hostname] [server] |