2013年3月26日,欧洲反垃圾邮件组织Spamhaus对外宣称遭受300G流量的DDoS攻击,攻击者使用了一种DNS反射放大攻击,攻击者伪装Spamhaus的地址向DNS系统发出的DNS请求数据包为36字节,而DNS服务器向的Spamhaus的地址响应数据包长为3000字节,将攻击流量放大了近100倍。紧接着第二年我们又看到了400G的DDoS攻击,这次用的是NTP反射放大攻击,能够将攻击流量放大200倍。 不明觉厉,本期咱们就来自己动手感受一下DNS反射放大攻击,主角是Scapy,Python写的一个功能强大的交互式数据包处理程序,可用来发送、嗅探、解析和伪造网络数据包,常常被用到网络攻击和测试中。官网是http://www.secdev.org/projects/scapy/,你可以从上面找到很多实例和教程。 首先通过实例形象理解一下DNS反射放大攻击,ping一下百度, 能够抓包看到,请求是73字节,而响应是302字节,被放大了4倍多,画红框的是关键字段,一会儿咱们用Scapy编程时会用到, Scapy非常容易使用,把数据包各层需要使用的字段该填的都填上,然后一拼接就成了,各层的字段如下,需要自己填的很少,其它都默认就行, 为了能抓包看到攻击效果,咱们在本地环境来做这个实验,攻击机用Kali虚拟机(192.168.1.4),DNS服务器用Win7虚拟机(192.168.1.44),靶机用普通的Linux虚拟机(192.168.1.55), 这里多介绍一个Windows下简单实用的DNS服务器软件,Simple DNS Plus,下载地址http://files.jhsoftware.dk/sdns/sdns-5-3-103-setup.exe,为了这次攻击实验,配置如下, 接下来就在Kali下写Python脚本来进行攻击实验了, 能够抓包看到,DNS服务器接收了来自Kali伪造的DNS请求报文, 又正常的回给了靶机, 怎么样,看出问题了吧,在局域网里,DNS服务器都没有检查请求报文的MAC和源IP是否匹配,更何况广域网环境里都无从检查。然而,这种A类的请求也就放大个几倍,攻击效果上并没有什么卵用,本文开头提到的Spamhaus事件中用的是TXT类的请求,DNS请求都能有哪些类型,可以参考https://en.wikipedia.org/wiki/List_of_DNS_record_types,Spamhaus事件后,互联网上的DNS服务器基本都处理了TXT类的请求漏洞,这也是后来反射攻击转向NTP的原因,NTP的漏洞修复了,以后还会有其它服务的漏洞被挖掘出来...... 这里还要讨论一个更重要的问题,伪造源IP的数据包在广域网环境里能一层一层的发出去,都是按目的地址选路机制所致,有人会说,运营商都没有义务检查一下自己网络向外发送的数据包的源IP是不是自己的吗,真没这个义务,交换机、路由器、防火墙处理网络报文都是按标准来的,所有的节点都放过了伪造源IP的报文,悲剧。做了NAT的网络反倒是安全了很多,NAT设备上的规则会检查源地址然后再转换,对于一般的僵尸网络,NAT内网中的肉鸡也不容易收到C&C的指令。 |