DNS列举的解释
DNS枚举是一种收集有关域配置数据的方法。 DNS或域名系统将人类可读域名(例如www.amazon.com)转换为机器可读的IP地址(例如192.0.2.44)。 DNS枚举的过程返回有关目标的各种重要信息,例如DNS记录类型,主机名,IP地址以及更多取决于该目标系统的配置。DNS枚举的主要目标是尽可能多的信息收集有关A的信息。特定的受害者以识别潜在的漏洞。
在本文中,我将向您展示如何使用Python语言执行DNS枚举。我们将利用dnspython
库,该库将帮助我们执行DNS请求,以我们选择的网站返回我们的DNS记录。
要安装dnspython
您需要做的就是运行此命令:
$ pip install dnspython
完成库后,创建一个名为dns_enumeration.py
的新文件(或任何要调用的文件)。
编码部分
首先,我们需要指定要分析的域(我们将使用twitter.com)以及希望该程序返回的DNS记录类型。对于本教程,我们只会让程序返回六种最常见的DNS记录类型:
import dns.resolver
# Set the target domain and record type
target_domain = "twitter.com" #using twitter as an example
record_types = ["A", "AAAA", "CNAME", "MX", "NS", "SOA", "TXT"]
(不要忘记导入库)
您可能会问,什么是DNS记录类型?您可以想到一组DNS记录,例如Yelp上的业务上市。该列表将为您提供有关企业的一堆有用的信息域名,并且有几个可选记录可以实现其他目的。在这种情况下,记录类型将为我们提供有关域的信息,例如IP地址,IPv6地址,服务器包含DNS记录等。
现在,我们可以继续创建DNS解析器,并创建将执行DNS查找的代码:
# Create a DNS resolver
resolver = dns.resolver.Resolver()
for record_type in record_types:
# Performs DNS lookup for the defined domain and record type
try:
answers = resolver.resolve(target_domain, record_type)
except dns.resolver.NoAnswer:
continue
DNS解析器,也称为解析器,是Internet上的服务器,将域名转换为IP地址。当您使用Internet时,每次您使用其域名连接到网站时,您的计算机都需要知道该网站的IP地址。因此,您的计算机与DNS解析器联系,并获取您要访问的域的当前IP地址。
最后一部分是我们需要从查询中打印出结果(这很简单):
# Prints the results
print(f"{record_type} records for {target_domain}:")
for rdata in answers:
print(f" {rdata}")
(f-strings是字符串文字,在开头和卷曲的括号中包含表达式,将其值代替其值)
运行程序时,您应该得到看起来像这样的输出(取决于您选择的域):
这就是教程的结尾!如果您想进一步深入研究,这里有一些我为您提供更多阅读的链接:
- https://www.cloudflare.com/learning/dns/dns-records/
- https://www.computerhope.com/jargon/d/dns-resolver.htm
- https://book.hacktricks.xyz/network-services-pentesting/pentesting-dns
如果您喜欢这篇文章,请考虑喜欢它并关注我!如果您想在将来看到更多这样的教程,请在下面发表评论!
完整源代码: https://github.com/sleepyrob0t/DNS-Enumeration-Python
-jsquared