利用DNS服务发现协议

DNS服务发现协议(DNS Service Discovery Protocol)是一种用于局域网主机发现的协议。它借助DNS的PTR、SRV和TXT记录来记录服务信息。Nmap的dns-service-discovery脚本利用该机制,通过向目标主机的UDP 5353端口,发送查询包,从而获取借助该协议的服务信息,如端口号、版本号、服务名等信息。

利用DNSSEC记录枚举域名

DNS安全扩展(Domain Name System Security Extensions,简写DNSSEC)是IETF提供的一系列DNS安全认证机制。通过在DNS服务器中添加DNSSEC记录,保证DNS信息来源的可信度。对于不存在的域名,该机制会给出否定的响应。Nmap的dns-nsec-enum脚本利用该机制,通过向DNS服务器枚举请求指定的域名,而获取该子域名记录。

利用DNS的ECS功能获取IP地址

ECS(EDNS-Client-Subnet)是DNS服务支持的新协议。该协议会在DNS请求包中附加请求域名解析的用户IP地址。这样,DNS服务器就可以根据该地址返回用户更容易访问的服务器IP地址。该技术广泛应用于CDN应用中。Nmap的dns-client-subnet-scan脚本利用该协议,通过提交不同的IP地址,获取指定域名所有的IP地址。

实施DNS Fuzzing攻击

模糊测试Fuzzing是一种常用的识别软件设计缺陷和安全漏洞的方法。对于DNS服务器,攻击者可以构建符合DNS协议的数据包,但其中数据是任意伪造,甚至是错误的。如果DNS服务不能正常处理,就会导致服务无响应,甚至崩溃。DNS的dns-fuzz脚本可以实施DNS Fuzzing,并允许用户设置攻击时长。

利用DNS PTR记录扫描IPv6网络

相比IPv4,IPv6网络具有更大的地址范围。为了快速搜索IP地址,很多网络借助DNS的ARPA记录模式,进行地址规划。同一个网络的主机使用相同的DNS PTR记录作为IP前缀。通过固定IP前缀,就可以快速扫描该网络的主机。Nmap的dns-ip6-arpa脚本利用这种方式,对指定IPv6前缀的网络进行扫描,发现网络内的所有主机。

测试DNS区域配置

通常一个DNS服务器会解析多个域名。为了方便管理,服务器会将为每个域名设置一个区域Zone。该区域名中包含该域名的正向解析和反向解析信息。Nnap的dns-check-zone脚本可以探测指定域名对应的区域设置,如刷新时间、过期时间等。这些信息会按照DNS记录类型进行分别测试和输出。