一種針對DNS緩存服務(wù)器的杠桿式攻擊
筆者發(fā)現(xiàn)一臺國內(nèi)的機器流量異常,檢查發(fā)現(xiàn)這臺機器上運行的DNS緩存服務(wù)被人用作了攻擊的放大杠桿,這里簡單記一下。
發(fā)現(xiàn)流量異常,首先當然是檢查服務(wù)器上的TCP會話,發(fā)現(xiàn)了一些不太正常的東西,關(guān)閉之后流量減少,但仍然沒有回到正常水平。
于是聽包。這一聽發(fā)現(xiàn)一大片:
07:39:53.271744 IP 158.XX.XX.238.53019 > XX.XX.XX.XX.53: 56854+ [1au] ANY? isc.org. (36)
07:39:53.271772 IP 158.XX.XX.238.53019 > XX.XX.XX.XX.53: 56854+ [1au] ANY? isc.org. (36)
07:39:53.271784 IP 158.XX.XX.238.53019 > XX.XX.XX.XX.53: 56854+ [1au] ANY? isc.org. (36)
07:39:53.271792 IP 158.XX.XX.238.53019 > XX.XX.XX.XX.53: 56854+ [1au] ANY? isc.org. (36)
07:39:53.274225 IP 92.XX.XX.148.31650 > XX.XX.XX.XX.53: 23600+ [1au] ANY? isc.org. (36)
07:39:53.274252 IP 92.XX.XX.148.31650 > XX.XX.XX.XX.53: 23600+ [1au] ANY? isc.org. (36)
07:39:53.274262 IP 92.XX.XX.148.31650 > XX.XX.XX.XX.53: 23600+ [1au] ANY? isc.org. (36)
07:39:53.274270 IP 92.XX.XX.148.31650 > XX.XX.XX.XX.53: 23600+ [1au] ANY? isc.org. (36)
07:39:53.291822 IP 158.XX.XX.238.13616 > XX.XX.XX.XX.53: 56854+ [1au] ANY? isc.org. (36)
07:39:53.291850 IP 158.XX.XX.238.13616 > XX.XX.XX.XX.53: 56854+ [1au] ANY? isc.org. (36)
07:39:53.291860 IP 158.XX.XX.238.13616 > XX.XX.XX.XX.53: 56854+ [1au] ANY? isc.org. (36)
07:39:53.291869 IP 158.XX.XX.238.13616 > XX.XX.XX.XX.53: 56854+ [1au] ANY? isc.org. (36)
07:39:53.291877 IP 92.XX.XX.148.56278 > XX.XX.XX.XX.53: 23600+ [1au] ANY? isc.org. (36)
顯然,這樣來自同一個 IP 地址,在短時間內(nèi)反復查詢同一個域名的現(xiàn)象是不正常的。為什么會是 isc.org?暫時不清楚,但是這樣的行為,顯然是利用這臺機器作為放大攻擊的杠桿。攻擊者發(fā)出偽造成最終受害者為源 IP 地址的DNS查詢包(這類包的尺寸較回應(yīng)來說要小的多)到受害的DNS緩存服務(wù)器,而這些緩存服務(wù)器由于在本地已經(jīng)有了查詢到的域名信息副本(這些域名是存在的),會立即向最終的受害者發(fā)出回應(yīng)。這樣,攻擊者就能夠用較小的帶寬代價占滿最終受害者的下行帶寬,實現(xiàn) DDoS 攻擊了。
由于是DDoS,在防御一方的角度看,阻止這類攻擊并不容易。不過,在傳統(tǒng)的網(wǎng)絡(luò)設(shè)計中,DNS緩存服務(wù)器是放在DMZ 里的,因此可以通過在路由上直接過濾掉全部來自外部的 DNS 回應(yīng)包來緩解這類攻擊造成的影響。在運行DNS緩存服務(wù)器的管理員方面,則應(yīng)限制對自己運行的DNS緩存服務(wù)器的訪問,例如只在內(nèi)網(wǎng)接口上監(jiān)聽DNS查詢請求,而外網(wǎng)接口只用來發(fā)出DNS請求和接收這些請求的回應(yīng),避免被壞人利用成為DDoS的杠桿。