hacktricks/network-services-pentesting/pentesting-dns.md

31 KiB
Raw Blame History

53 - DNS渗透测试

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥

DragonJAR Security Conference是一场国际网络安全活动已经举办了十多年将于2023年9月7日至8日在哥伦比亚波哥大举行。这是一个内容丰富的技术活动展示了吸引全球黑客和研究人员的最新研究成果。
立即在以下链接注册,不要错过这个重要的会议!:

{% embed url="https://www.dragonjarcon.org/" %}

基本信息

域名系统DNS是互联网的电话簿。人们通过域名访问在线信息例如nytimes.com或espn.com。Web浏览器通过Internet协议IP地址进行交互。DNS将域名转换为IP地址,以便浏览器可以加载互联网资源。
来源:这里

默认端口: 53

PORT     STATE SERVICE  REASON
53/tcp   open  domain  Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
5353/udp open  zeroconf udp-response
53/udp   open  domain  Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)

不同的DNS服务器

来自https://academy.hackthebox.com/module/112/section/1069的信息

服务器类型 描述
DNS根服务器 DNS的根服务器负责顶级域名TLD。作为最后的实例只有在名称服务器不响应时才会请求它们。因此根服务器是用户和互联网上内容之间的中央接口因为它链接域名和IP地址。互联网名称与数字地址分配机构ICANN)协调根名称服务器的工作。全球共有13个这样的根服务器。
权威名称服务器 权威名称服务器对特定区域拥有授权。它们只回答来自其责任区域的查询,并且它们的信息是具有约束力的。如果权威名称服务器无法回答客户端的查询,则根名称服务器接管该查询。
非权威名称服务器 非权威名称服务器不负责特定的DNS区域。相反它们通过递归或迭代的DNS查询来收集特定DNS区域的信息。
缓存DNS服务器 缓存DNS服务器在指定的时间段内缓存来自其他名称服务器的信息。这个存储的持续时间由权威名称服务器确定。
转发服务器 转发服务器只执行一个功能将DNS查询转发到另一个DNS服务器。
解析器 解析器不是权威DNS服务器而是在计算机或路由器中本地执行名称解析。

枚举

横幅抓取

DNS没有可抓取的“横幅”。最接近的等效物是对大多数BIND名称服务器有效的version.bind. CHAOS TXT的魔术查询。
您可以使用dig执行此查询:

dig version.bind CHAOS TXT @DNS

如果那不起作用,您可以使用指纹识别技术来确定远程服务器的版本--fpdns工具是其中之一,但还有其他选项。

您还可以使用nmap脚本来获取横幅:

--script dns-nsid

任意记录

记录ANY将要求DNS服务器返回所有可用的条目,它愿意披露的。

dig any victim.com @<DNS_IP>

区域传输

该过程简称为异步完全传输区域AXFR)。

dig axfr @<DNS_IP> #Try zone transfer without domain
dig axfr @<DNS_IP> <DOMAIN> #Try zone transfer guessing the domain
fierce --domain <DOMAIN> --dns-servers <DNS_IP> #Will try toperform a zone transfer against every authoritative name server and if this doesn'twork, will launch a dictionary attack

更多信息

DNSDomain Name System是互联网中用于将域名解析为IP地址的系统。在渗透测试中DNS渗透测试是一种常见的技术用于发现和利用与DNS相关的漏洞和弱点。以下是一些常见的DNS渗透测试技术

DNS区域传输

DNS区域传输是一种用于获取目标域名服务器上完整DNS记录的技术。通过执行DNS区域传输渗透测试人员可以获得有关目标网络架构和域名的重要信息。

DNS缓存投毒

DNS缓存投毒是一种攻击技术通过向目标DNS服务器发送恶意的DNS响应将虚假的DNS记录注入到DNS缓存中。这可能导致用户被重定向到恶意网站或受到其他类型的攻击。

DNS劫持

DNS劫持是一种攻击技术通过篡改目标DNS服务器的响应将用户的域名解析请求重定向到攻击者控制的恶意服务器。这使得攻击者能够拦截和窃取用户的敏感信息。

DNS隧道

DNS隧道是一种技术通过在DNS协议中隐藏数据将非法的网络流量伪装成正常的DNS流量。这种技术可用于绕过网络防火墙和检测系统以进行恶意活动。

DNS放大攻击

DNS放大攻击是一种利用DNS协议中的漏洞通过向目标DNS服务器发送小型请求但获取大量响应数据的攻击技术。这种攻击可以导致目标服务器过载造成服务不可用。

DNS隐蔽信道

DNS隐蔽信道是一种利用DNS协议的特性在正常的DNS流量中隐藏和传输数据的技术。这种技术可用于绕过网络监控和检测系统进行隐蔽的通信。

在进行DNS渗透测试时渗透测试人员需要使用各种工具和技术来发现和利用与DNS相关的漏洞和弱点。这些技术可以帮助渗透测试人员评估目标网络的安全性并提供改进安全措施的建议。

dig ANY @<DNS_IP> <DOMAIN>     #Any information
dig A @<DNS_IP> <DOMAIN>       #Regular DNS request
dig AAAA @<DNS_IP> <DOMAIN>    #IPv6 DNS request
dig TXT @<DNS_IP> <DOMAIN>     #Information
dig MX @<DNS_IP> <DOMAIN>      #Emails related
dig NS @<DNS_IP> <DOMAIN>      #DNS that resolves that name
dig -x 192.168.0.2 @<DNS_IP>   #Reverse lookup
dig -x 2a00:1450:400c:c06::93 @<DNS_IP> #reverse IPv6 lookup

#Use [-p PORT]  or  -6 (to use ivp6 address of dns)

自动化

Automation plays a crucial role in the field of DNS pentesting. It helps in streamlining the process and saves time and effort. There are various tools available that can automate different tasks involved in DNS pentesting.

自动化在DNS渗透测试领域起着至关重要的作用。它有助于简化流程节省时间和精力。有各种工具可用于自动化DNS渗透测试中涉及的不同任务。

Enumeration

枚举

Enumeration is the process of gathering information about a target DNS server. It involves finding all the DNS records associated with the target domain. Automated enumeration tools can perform this task efficiently and quickly.

枚举是收集有关目标DNS服务器的信息的过程。它涉及查找与目标域关联的所有DNS记录。自动化枚举工具可以高效快速地执行此任务。

Zone Transfer

区域传输

Zone transfer is a mechanism that allows DNS servers to share DNS records with each other. It can be exploited to gather valuable information about the target domain. Automated tools can be used to check if zone transfer is enabled and perform the transfer if possible.

区域传输是一种机制允许DNS服务器彼此共享DNS记录。可以利用它来收集有关目标域的有价值的信息。可以使用自动化工具来检查区域传输是否已启用并在可能的情况下执行传输。

DNS Cache Poisoning

DNS缓存投毒

DNS cache poisoning is a technique used to manipulate the DNS cache of a target DNS server. It involves injecting malicious DNS records into the cache, which can lead to redirecting users to malicious websites. Automated tools can be used to perform DNS cache poisoning attacks.

DNS缓存投毒是一种用于操纵目标DNS服务器的DNS缓存的技术。它涉及将恶意DNS记录注入缓存这可能会将用户重定向到恶意网站。可以使用自动化工具执行DNS缓存投毒攻击。

DNS Brute Forcing

DNS暴力破解

DNS brute forcing is a technique used to guess or enumerate DNS records by trying all possible combinations. It can be used to discover subdomains or other hidden DNS records. Automated tools can be used to perform DNS brute forcing attacks.

DNS暴力破解是一种通过尝试所有可能的组合来猜测或枚举DNS记录的技术。它可以用于发现子域或其他隐藏的DNS记录。可以使用自动化工具执行DNS暴力破解攻击。

Conclusion

结论

Automation is a valuable asset in DNS pentesting as it helps in efficiently performing various tasks. By using automated tools, pentesters can save time and effort while ensuring a thorough and comprehensive assessment of the target DNS server.

自动化是DNS渗透测试中的宝贵资产它有助于高效执行各种任务。通过使用自动化工具渗透测试人员可以节省时间和精力同时确保对目标DNS服务器进行全面和综合的评估。

for sub in $(cat <WORDLIST>);do dig $sub.<DOMAIN> @<DNS_IP> | grep -v ';\|SOA' | sed -r '/^\s*$/d' | grep $sub | tee -a subdomains.txt;done

dnsenum --dnsserver <DNS_IP> --enum -p 0 -s 0 -o subdomains.txt -f <WORDLIST> <DOMAIN>

使用 nslookup

The nslookup command is a powerful tool for querying DNS (Domain Name System) servers to obtain information about domain names and IP addresses. It is commonly used in network reconnaissance and troubleshooting.

To use nslookup, open a command prompt or terminal and type nslookup followed by the domain name or IP address you want to query. Press Enter to execute the command.

For example, to obtain the IP address of a domain name, type:

nslookup example.com

This will display the IP address associated with the domain name example.com, along with the DNS server that provided the response.

You can also perform reverse DNS lookups by specifying an IP address instead of a domain name. For example:

nslookup 192.168.0.1

This will display the domain name associated with the IP address 192.168.0.1, along with the DNS server that provided the response.

nslookup also supports various options and commands that can be used to customize the query and obtain specific information. To view the available options and commands, type nslookup and press Enter.

nslookup
> SERVER <IP_DNS> #Select dns server
> 127.0.0.1 #Reverse lookup of 127.0.0.1, maybe...
> <IP_MACHINE> #Reverse lookup of a machine, maybe...

有用的Metasploit模块

Metasploit是一款功能强大的渗透测试工具提供了许多有用的模块用于执行各种网络服务的渗透测试。以下是一些常用的Metasploit模块

  • auxiliary/scanner/dns/dns_enum用于执行DNS枚举获取目标域名的相关信息。
  • auxiliary/scanner/dns/dns_recon用于执行DNS侦察收集目标域名的子域名和主机记录。
  • auxiliary/scanner/dns/dns_brute用于执行DNS暴力破解尝试猜测目标域名的子域名和主机记录。
  • auxiliary/scanner/dns/dns_cache_snoop用于执行DNS缓存窥视获取目标域名的缓存记录。
  • auxiliary/scanner/dns/dns_reverse_lookup用于执行DNS反向查找获取目标IP地址的域名。

这些模块可以帮助渗透测试人员发现目标网络中存在的DNS相关漏洞和弱点从而进行进一步的攻击和渗透。在使用这些模块时务必遵守法律和道德规范仅用于合法的渗透测试活动。

auxiliary/gather/enum_dns #Perform enumeration actions

有用的nmap脚本

Nmap是一款功能强大的网络扫描工具它提供了许多有用的脚本用于进行网络服务渗透测试。以下是一些常用的nmap脚本

  • dns-brute.nse用于进行DNS暴力破解尝试枚举目标域名的子域名。
  • dns-cache-snoop.nse用于检查目标DNS服务器的缓存中是否存在敏感信息。
  • dns-zone-transfer.nse用于尝试获取目标域名的DNS区域传输记录。
  • dns-blacklist.nse用于检查目标域名是否被列入DNS黑名单。
  • dns-recursion.nse用于检查目标DNS服务器是否开启了递归查询功能。
  • dns-random-srcport.nse用于发送DNS请求时使用随机源端口以绕过一些防火墙规则。

这些脚本可以帮助渗透测试人员发现目标网络中的潜在漏洞和安全风险。在使用这些脚本时,请确保遵守法律和道德规范,并获得合法的授权。

#Perform enumeration actions
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>

DNS - 反向暴力破解

在DNS渗透测试中反向暴力破解是一种常用的技术用于获取目标网络中的主机名和IP地址的关联信息。这种技术利用了DNS服务器的特性通过尝试不同的主机名来查询其对应的IP地址从而获取目标网络中的潜在目标。

反向暴力破解的过程通常包括以下步骤:

  1. 收集目标网络的域名信息,包括主机名、子域名等。
  2. 构建一个主机名字典,包含可能存在的主机名。
  3. 使用字典中的主机名逐个进行DNS查询获取其对应的IP地址。
  4. 分析查询结果,识别出目标网络中的潜在目标。

反向暴力破解的关键在于构建一个有效的主机名字典。这可以通过收集目标网络的公开信息、使用常见的主机名生成规则、以及使用字典生成工具等方式来实现。同时为了提高效率可以使用多线程或并行查询的方式进行DNS查询。

需要注意的是,在进行反向暴力破解时,应遵守法律和道德规范,并获得合法的授权。否则,这种行为将被视为非法入侵,并可能导致严重的法律后果。

dnsrecon -r 127.0.0.0/24 -n <IP_DNS>  #DNS reverse of all of the addresses
dnsrecon -r 127.0.1.0/24 -n <IP_DNS>  #DNS reverse of all of the addresses
dnsrecon -r <IP_DNS>/24 -n <IP_DNS>   #DNS reverse of all of the addresses
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer

{% hint style="info" %} 如果您能找到解析为内部IP地址的子域名应尝试对该IP范围的NS执行反向DNS暴力破解。 {% endhint %}

另一个工具可以实现这一点:https://github.com/amine7536/reverse-scan

您可以查询反向IP范围到https://bgp.he.net/net/205.166.76.0/24#_dns该工具在BGP方面也很有帮助

DNS - 子域名暴力破解

dnsenum --dnsserver <IP_DNS> --enum -p 0 -s 0 -o subdomains.txt -f subdomains-1000.txt <DOMAIN>
dnsrecon -D subdomains-1000.txt -d <DOMAIN> -n <IP_DNS>
dnscan -d <domain> -r -w subdomains-1000.txt #Bruteforce subdomains in recursive way, https://github.com/rbsec/dnscan

Active Directory 服务器

Active DirectoryAD是一种由微软开发的目录服务用于在网络环境中管理和组织用户、计算机和其他网络资源。在渗透测试中对Active Directory服务器进行测试是非常重要的因为它们存储了关键的身份验证和授权信息。

以下是一些渗透测试中常见的Active Directory服务器测试技术

1. DNS欺骗

DNS欺骗是一种攻击技术通过篡改DNS响应来欺骗用户访问恶意网站或服务器。在渗透测试中可以使用DNS欺骗来劫持Active Directory服务器的DNS查询从而获取敏感信息或执行其他恶意操作。

2. 用户枚举

用户枚举是一种通过查询Active Directory服务器来获取用户信息的技术。渗透测试人员可以使用用户枚举技术来发现有效的用户名以便进行后续的攻击如密码破解或钓鱼攻击。

3. 密码破解

密码破解是一种通过尝试不同的密码组合来获取用户凭据的技术。在渗透测试中可以使用密码破解技术来测试Active Directory服务器上的弱密码以便进一步提升攻击权限。

4. Kerberos攻击

Kerberos是一种网络身份验证协议常用于Windows域环境中的身份验证。渗透测试人员可以使用Kerberos攻击技术来获取有效的Kerberos票据从而获取对Active Directory服务器的访问权限。

5. 域提权

域提权是一种通过利用Active Directory服务器中的漏洞或配置错误来提升攻击者在域中的权限的技术。渗透测试人员可以使用域提权技术来获取更高的权限并进一步探索和攻击Active Directory服务器。

在渗透测试中对Active Directory服务器进行全面的测试是至关重要的以发现潜在的安全漏洞并提供相应的修复建议。

dig -t _gc._tcp.lab.domain.com
dig -t _ldap._tcp.lab.domain.com
dig -t _kerberos._tcp.lab.domain.com
dig -t _kpasswd._tcp.lab.domain.com

nslookup -type=srv _kerberos._tcp.<CLIENT_DOMAIN>
nslookup -type=srv _kerberos._tcp.domain.com

nmap --script dns-srv-enum --script-args "dns-srv-enum.domain='domain.com'"

DNSSec

DNSSecDomain Name System Security Extensions是一种用于增强DNS安全性的扩展协议。它通过数字签名和验证DNS数据的完整性防止DNS劫持和欺骗攻击。

DNSSec的工作原理是在DNS层级中引入公钥加密和数字签名机制。当客户端向DNS服务器发送查询请求时服务器会返回经过数字签名的响应。客户端使用公钥验证响应的完整性确保数据没有被篡改。

DNSSec的部署可以提供以下安全保护

  • 数据完整性验证DNSSec可以确保DNS数据在传输过程中没有被篡改或修改。
  • 防止DNS劫持DNSSec可以防止攻击者篡改DNS响应将用户重定向到恶意网站。
  • 防止欺骗攻击DNSSec可以防止攻击者伪造DNS响应欺骗用户访问恶意服务器。

然而尽管DNSSec提供了更高的安全性但它并不是普遍部署的。许多域名注册商和DNS服务器仍然没有启用DNSSec。因此在进行渗透测试时仍然需要考虑可能存在的DNS安全漏洞。

#Query paypal subdomains to ns3.isc-sns.info
nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal.com ns3.isc-sns.info

IPv6

使用"AAAA"请求进行暴力破解以收集子域名的IPv6地址。

dnsdict6 -s -t <domain>

IPv6地址的反向DNS暴力破解

在进行网络服务渗透测试时我们经常需要获取目标主机的详细信息。其中一个重要的信息是目标主机的DNS记录它可以提供有关主机的关键信息如主机名和IP地址。

在IPv6网络中每个主机都有一个唯一的IPv6地址。为了获取目标主机的DNS记录我们可以使用反向DNS查询。反向DNS查询允许我们通过IP地址查找与之关联的主机名。

在某些情况下目标主机的DNS记录可能没有公开的主机名。这时我们可以使用暴力破解技术来尝试猜测主机名。暴力破解是一种通过尝试所有可能的组合来猜测目标值的方法。

对于IPv6地址的反向DNS暴力破解我们可以使用工具dnsrecondnsenum。这些工具可以自动化地进行暴力破解并尝试猜测与目标IPv6地址关联的主机名。

使用这些工具时我们需要提供一个字典文件其中包含可能的主机名列表。工具将使用字典中的每个主机名尝试进行反向DNS查询以查找与目标IPv6地址关联的主机名。

需要注意的是反向DNS暴力破解可能需要很长时间并且可能会对目标网络造成不必要的负载。因此在进行此类活动时我们应该始终遵守法律和道德准则并获得适当的授权。

总结IPv6地址的反向DNS暴力破解是一种获取目标主机详细信息的方法。通过使用工具和字典文件我们可以尝试猜测与目标IPv6地址关联的主机名。然而我们应该谨慎使用此技术并遵守法律和道德准则。

dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net

DNS递归DDoS

如果启用了DNS递归攻击者可以通过伪造UDP数据包的源地址使DNS将响应发送到受害服务器。攻击者可以滥用ANYDNSSEC记录类型,因为它们通常具有更大的响应。
检查DNS是否支持递归的方法是查询一个域名检查响应中是否包含**"ra"标志**递归可用

dig google.com A @<IP>

不可用

可用

DragonJAR Security Conference是一场国际网络安全活动已经举办了十多年将于2023年9月7日至8日在哥伦比亚波哥大举行。这是一个内容丰富的技术活动展示了最新的西班牙语研究成果吸引了来自世界各地的黑客和研究人员。
立即在以下链接注册,不要错过这个重要的会议!:

{% embed url="https://www.dragonjarcon.org/" %}

发送邮件到不存在的账户

来自书籍:《网络安全评估(第三版)》

只需向目标域发送一封邮件到一个不存在的地址通常可以通过_不可投递通知_NDN揭示有用的内部网络信息。

Generating server: noa.nintendo.com

blah@nintendo.com
#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found ##

Original message headers:

Received: from ONERDEDGE02.one.nintendo.com (10.13.20.35) by
onerdexch08.one.nintendo.com (10.13.30.39) with Microsoft SMTP Server (TLS)
id 14.3.174.1; Sat, 26 Apr 2014 16:52:22 -0700
Received: from barracuda.noa.nintendo.com (205.166.76.35) by
ONERDEDGE02.one.nintendo.com (10.13.20.35) with Microsoft SMTP Server (TLS)
id 14.3.174.1; Sat, 26 Apr 2014 16:51:22 -0700
X-ASG-Debug-ID: 1398556333-0614671716199b0d0001-zOQ9WJ
Received: from gateway05.websitewelcome.com (gateway05.websitewelcome.com  [69.93.154.37]) by
barracuda.noa.nintendo.com with ESMTP id xVNPkwaqGgdyH5Ag for <blah@nintendo.com>; Sat,
26 Apr 2014 16:52:13 -0700 (PDT)
X-Barracuda-Envelope-From: chris@example.org
X-Barracuda-Apparent-Source-IP: 69.93.154.37

以下是此记录中有用的数据:

  • 内部主机名、IP地址和子域布局
  • 邮件服务器正在运行Microsoft Exchange Server 2010 SP3
  • 使用Barracuda Networks设备进行内容过滤

配置文件

host.conf
/etc/resolv.conf
/etc/bind/named.conf
/etc/bind/named.conf.local
/etc/bind/named.conf.options
/etc/bind/named.conf.log
/etc/bind/*

配置Bind服务器时的危险设置

选项 描述
allow-query 定义允许向DNS服务器发送请求的主机。
allow-recursion 定义允许向DNS服务器发送递归请求的主机。
allow-transfer 定义允许从DNS服务器接收区域传输的主机。
zone-statistics 收集区域的统计数据。

HackTricks自动命令

Protocol_Name: DNS    #Protocol Abbreviation if there is one.
Port_Number:  53     #Comma separated if there is more than one.
Protocol_Description: Domain Name Service        #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for DNS
Note: |
#These are the commands I run every time I see an open DNS port

dnsrecon -r 127.0.0.0/24 -n {IP} -d {Domain_Name}
dnsrecon -r 127.0.1.0/24 -n {IP} -d {Domain_Name}
dnsrecon -r {Network}{CIDR} -n {IP} -d {Domain_Name}
dig axfr @{IP}
dig axfr {Domain_Name} @{IP}
nslookup
SERVER {IP}
127.0.0.1
{IP}
Domain_Name
exit

https://book.hacktricks.xyz/pentesting/pentesting-dns

Entry_2:
Name: Banner Grab
Description: Grab DNS Banner
Command: dig version.bind CHAOS TXT @DNS

Entry_3:
Name: Nmap Vuln Scan
Description: Scan for Vulnerabilities with Nmap
Command: nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" {IP}

Entry_4:
Name: Zone Transfer
Description: Three attempts at forcing a zone transfer
Command: dig axfr @{IP} && dix axfr @{IP} {Domain_Name} && fierce --dns-servers {IP} --domain {Domain_Name}


Entry_5:
Name: Active Directory
Description: Eunuerate a DC via DNS
Command: dig -t _gc._{Domain_Name} && dig -t _ldap._{Domain_Name} && dig -t _kerberos._{Domain_Name} && dig -t _kpasswd._{Domain_Name} && nmap --script dns-srv-enum --script-args "dns-srv-enum.domain={Domain_Name}"

Entry_6:
Name: consolesless mfs enumeration
Description: DNS enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit'

DragonJAR Security Conference是一场国际网络安全活动将于2023年9月7日至8日在哥伦比亚波哥大举行。这是一个内容丰富的技术活动展示了最新的西班牙语研究成果吸引了来自世界各地的黑客和研究人员。
立即在以下链接注册,不要错过这个重要的会议!:

{% embed url="https://www.dragonjarcon.org/" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥