DNS服务的原理
DNS(域名系统)服务的原理是将易于人们记忆的域名转换为计算机能够理解的IP地址,其具体步骤如下:
1、用户请求:当你在浏览器中输入一个域名时,计算机会向DNS解析器发送请求。
2、DNS解析器:DNS解析器是一个负责查询DNS记录的服务器。它首先检查自己的缓存中是否有该域名的IP地址。如果有,则直接返回结果;如果没有,它会向其他DNS服务器查询。
3、根DNS服务器:如果解析器找不到结果,它会查询根DNS服务器。根服务器负责将请求引导到相应的顶级域(如.com、.org等)的DNS服务器。
4、顶级域DNS服务器:根服务器会将请求转发到对应的顶级域DNS服务器。这些服务器会提供该域名的权威DNS服务器的地址。
5、权威DNS服务器:最终,解析器会向权威DNS服务器发送请求。这个服务器拥有该域名的详细DNS记录,并返回相应的IP地址。
6、缓存:解析器将得到的IP地址缓存一段时间,以便下次请求同一域名时能够更快地返回结果。
7、用户访问:一旦解析器获得IP地址,它会将结果返回给用户的计算机,用户的浏览器就可以通过该IP地址访问目标网站。
DNS服务所使用的协议和包的大小
1、DNS所使用的协议
-
UDP(用户数据报协议):
- 默认协议:DNS大多数请求和响应都是通过UDP进行的,特别是使用53端口。UDP适用于快速的查询响应,因为它是无连接的,延迟低,开销小。
- 数据报大小:UDP数据报的最大大小为512字节。如果响应超过此大小,DNS将使用标志指示需要进行TCP查询。
-
TCP(传输控制协议):
- 用于大数据包:当DNS响应超过512字节时,或在进行区域传输(zone transfer)时,DNS会使用TCP。TCP提供可靠的数据传输,适合于需要完整性保障的场景。
- 端口:TCP DNS通常也使用53端口。
-
DNS over HTTPS(DoH)和DNS over TLS(DoT):
- DoH:通过HTTPS传输DNS请求和响应,增强隐私和安全性。使用标准的HTTPS协议和端口(通常是443)。
- DoT:通过TLS加密的DNS请求,确保数据的安全性和隐私性,使用标准的TLS端口(通常是853)。
通过上述内容可以看出,DNS服务在通常情况下会使用UDP协议传输数据,并且会使用机器的53端口,所以检测53端口是否开放是一个检测DNS服务是否开放的较好的方法
2、包的大小
DNS请求包大小
- 请求包通常较小,通常在几十字节到几百字节之间。它主要包含请求头部和问题部分。
- 一个简单的A记录查询请求包可能只有几十字节(例如,40-100字节)
DNS返回包大小
- 返回包的大小通常较大,尤其是当响应包含多个记录时。
- 返回包的大小可以从几百字节到几千字节不等。例如:
- 简单的A记录响应(仅包含一个IP地址)可能在100-200字节左右。
- 包含多个记录或附加信息的响应(如CNAME、MX记录等)可能会超过512字节,甚至更大。
DNS放大攻击
1、什么是放大攻击?
通过上述内容,我们可以看出向DNS服务器发出的请求包较小,而DNS服务器返回的包则较大,于是我们可以利用DNS服务的此特性,利用环境中开放的DNS解析器,通过伪造IP的方法,向需要攻击的IP地址返回大量的DNS响应数据包,即利用DNS解析器放大流量的攻击
2、DNS放大攻击的原理
-
DNS协议:DNS(域名系统)用于将域名转换为IP地址。DNS请求通常是小数据包(几十字节),而某些响应(特别是
ANY
查询)可能会返回大量数据(几百到几千字节)。 -
开放DNS解析器:开放DNS解析器是配置为接受来自任何IP地址的DNS请求的服务器。这种服务器不会对请求的来源进行验证,因此任何人都可以向它们发送查询。
-
源地址伪造:DNS请求是使用UDP协议的单播方式,所以很容易通过伪造源IP地址进行攻击。攻击者通过伪造DNS请求的源IP地址,使其看起来像是目标IP地址。这样,当DNS解析器发送响应时,它将响应发送到目标IP地址,而不是攻击者的IP地址。此时伪造的IP地址会因为收到大量返回包而丧失其他服务的能力。
我们对DNS放大攻击做一个简单的比喻
我们将一片网络环境比作食客和做外卖的饭店,一个食客A(攻击者)伪装自己的身份打电话给饭店(DNS解析器),并要求其制作大量外卖,但在填写送餐地址时填写食客B(被攻击者)的地址,此时B就会收到大量的不属于其请求的数据。
3、DNS放大攻击的目的
-
造成拒绝服务(DoS):攻击者的主要目标是通过发送大量流量来淹没目标服务器,使其无法正常处理用户请求,从而导致服务中断或崩溃。
-
扩大攻击效果:利用DNS协议中请求与响应大小的差异,攻击者可以通过相对小的请求引发大规模的响应,从而增强攻击效果。
-
隐蔽性:通过伪造源IP地址,攻击者可以隐藏其真实身份,使攻击难以追踪。
DNS放大攻击的流程
1、选择目标服务器:攻击者选择一个希望攻击的目标服务器(例如某个网站的IP地址)。
2、查找开放DNS解析器:攻击者识别可以响应来自任何IP地址的开放DNS解析器。
3、伪造DNS请求:
攻击者构造DNS请求,通常选择ANY
查询,以获取大量响应。
在请求中伪造源IP地址,将其设置为目标服务器的IP地址。
4、发送请求:攻击者向多个开放DNS解析器发送伪造的DNS请求。
5、响应回送:开放DNS解析器处理请求并将响应发送到伪造的源IP地址(即目标服务器)。
6、目标遭受流量冲击:由于多个DNS解析器向目标服务器发送响应,目标服务器接收到大量流量,可能导致过载和服务中断。
以上就是DNS放大攻击的全部介绍!
标签:解析器,请求,攻击,响应,DNS,IP地址,服务器,放大 From: https://blog.csdn.net/weixin_52038882/article/details/143249063