淺析CDN安全
目前,CDN技術(shù)到處可見。像網(wǎng)宿、藍(lán)訊、加速樂等都依靠CDN過活,連安全寶也都使用了CDN技術(shù),當(dāng)然很多域名空間商現(xiàn)在也提供CDN服務(wù)。從以往互聯(lián)網(wǎng)的發(fā)展上看,CDN是個(gè)趨勢(shì),很多廠商也都多多少少購買了商業(yè)化的CDN資源,比如360、騰訊、百度、新浪等等等,當(dāng)然大部分流量還是走自建的CDN網(wǎng)絡(luò)。
本文筆者站從安全的角度出發(fā),對(duì)CDN技術(shù)進(jìn)剖析,揭開廠商使用CDN技術(shù)的風(fēng)險(xiǎn)、分析了黑客及黑產(chǎn)新的攻擊方向。實(shí)際上只要對(duì)CDN的工作流程有一定了解,并能夠?qū)?shù)據(jù)報(bào)文的流向比較清楚,就能夠獲取其風(fēng)險(xiǎn)點(diǎn)了,在文中筆者只對(duì)動(dòng)態(tài)頁面的請(qǐng)求流程做討論(靜態(tài)頁面一般不回源),至于靜態(tài)頁大部分由節(jié)點(diǎn)的webcache直接返回,一般不含敏感信息(cookie實(shí)際上是敏感信息),所以不做討論。
一.CDN工作流程如下圖:
1.管理員或者站長將域名的DNS指向CDN廠商的DNS上(當(dāng)然,根據(jù)選擇不同也有可能使用CName方式,但都不影響數(shù)據(jù)流的流向)。
2.用戶需要登錄站點(diǎn),請(qǐng)求DNS以便獲得服務(wù)器IP(此處最終請(qǐng)求的DNS服務(wù)器為CDN廠商的DNS)
3.CDN廠商收到DNS查詢請(qǐng)求及各種信息,通過各種算法選擇一個(gè)離用戶最近的節(jié)點(diǎn),將該節(jié)點(diǎn)的IP 1.1.1.1作為服務(wù)器IP返回給用戶(此處CDN廠商告訴用戶一個(gè)假的服務(wù)器IP)
4.用戶收到DNS響應(yīng),將HTTP請(qǐng)求(該處為登錄請(qǐng)求,請(qǐng)求報(bào)文包含用戶密碼)發(fā)給1.1.1.1
5.CDN節(jié)點(diǎn)接收到請(qǐng)求包判斷請(qǐng)求報(bào)文是否是動(dòng)態(tài)頁面,如果是靜態(tài)則查看webcache,存在緩存直接返回緩存頁面。如果是動(dòng)態(tài)頁面請(qǐng)求或者沒有緩存的靜態(tài)頁面,節(jié)點(diǎn)則直接請(qǐng)求真實(shí)源,以便獲取最新的內(nèi)容。(注:此處對(duì)于動(dòng)態(tài)頁面的請(qǐng)求一般每次都會(huì)做回源操作)
6.接著就是服務(wù)器響應(yīng)請(qǐng)求,此處不做討論
二.CDN的軟肋
由上圖可知,對(duì)于網(wǎng)站的請(qǐng)求報(bào)文都會(huì)經(jīng)過CDN廠商的節(jié)點(diǎn)(不做特殊操作的情況下)。因此安全隱患全都集中在了CDN廠商的節(jié)點(diǎn)上。一般一個(gè)節(jié)點(diǎn)會(huì)提供N多個(gè)網(wǎng)站的加速。不管是360、騰訊、百度還是新浪,只要使用了商業(yè)化的CDN,就相當(dāng)于孤注一擲,將自己的部分安全交給CDN廠商。一旦攻擊者控制了CDN廠商節(jié)點(diǎn)就可以輕易的進(jìn)行抓包并分析。對(duì)于CDN廠商來說,畢竟不是專業(yè)的安全公司,所以在防護(hù)方面肯定會(huì)有所不足CDN廠商節(jié)點(diǎn)遍布全國,數(shù)量眾多,很難保證每個(gè)節(jié)點(diǎn)的安全性(再不行可試下ARP欺騙,從同段IP搞起)
三.從CDN看黑產(chǎn)動(dòng)向
1.以往攻擊者對(duì)目標(biāo)發(fā)起攻擊都會(huì)先對(duì)目標(biāo)IP進(jìn)行掃描和檢測,但由于CDN的存在,很多攻擊者無法直接獲取到源IP,因此轉(zhuǎn)而對(duì)CDN節(jié)點(diǎn)發(fā)起攻擊,一旦攻陷節(jié)點(diǎn),那拿到站點(diǎn)權(quán)限就是遲早的事情,另外在這個(gè)信息發(fā)達(dá)的時(shí)代一般都是買一送多,大數(shù)據(jù)時(shí)代,一個(gè)結(jié)點(diǎn)的網(wǎng)站夠撐死你了。目測接下來對(duì)CDN節(jié)點(diǎn)的攻擊會(huì)成為黑色產(chǎn)業(yè)鏈的熱門話題(估計(jì)已經(jīng)很熱了,只是我不知道)
2.CDN廠商實(shí)際上可以成為黑產(chǎn)的大數(shù)據(jù)提供商,對(duì)于應(yīng)用軟件你可以本地分析看是否在后臺(tái)偷偷上傳數(shù)據(jù),對(duì)于CDN你能么,筆者建議少用免費(fèi)的CDN服務(wù),除非你已經(jīng)麻木了,或者你做了特殊的手段。
3.大型企業(yè)會(huì)增加對(duì)自建CDN的安全維護(hù)成本,同時(shí)攻擊者會(huì)將大部分時(shí)間放在對(duì)企業(yè)CDN網(wǎng)絡(luò)的攻擊上
四.由CDN到DNS劫持
百度經(jīng)常被黑、某黑闊站點(diǎn)又被hellen干掉了、XXX也被整了。到頭來都是DNS劫持。難道DNS劫持就只能換個(gè)頁面?或只能讓用戶訪問惡意站點(diǎn)?看了CDN的工作原理,結(jié)合APT攻擊。長時(shí)間盯著就OK了。某天的某一時(shí)刻,某人說能控制某域名的DNS解析,問怎么利用。估計(jì)看了前面原理的人都想到了如何進(jìn)一步利用DNS劫持了,筆者在這里發(fā)表幾個(gè)個(gè)人的方法,僅供參考。
1.搭建小型CDN網(wǎng)絡(luò),一個(gè)節(jié)點(diǎn)、一個(gè)自己的域名、一個(gè)自己搭建的DNS服務(wù)器。修改域名DNS指向自己搭建的DNS,從而將站點(diǎn)的訪問流量全部牽引到自己的節(jié)點(diǎn)上,在自己節(jié)點(diǎn)裝抓包軟件(如何搭建CDN網(wǎng)絡(luò)可以找找相關(guān)資料)
2.搭建中轉(zhuǎn)服務(wù)器(代理服務(wù)器),將域名解析到自己的服務(wù)器上,由攻擊者的服務(wù)器進(jìn)行中轉(zhuǎn)(實(shí)際上利用本地的HOST及某些數(shù)據(jù)轉(zhuǎn)發(fā)軟件就可以實(shí)現(xiàn))。這個(gè)比上面一點(diǎn)好多了,少了個(gè)DNS服務(wù)器。
3.完全利用HTTP協(xié)議,寫個(gè)PHP腳本,對(duì)接收到的報(bào)文進(jìn)行轉(zhuǎn)發(fā),當(dāng)然筆者在這邊通過測試,該方法效率不高,剛開始忘記cookie的處理,導(dǎo)致用戶無法登錄,后面對(duì)cookie進(jìn)行了處理后成功轉(zhuǎn)發(fā),但缺點(diǎn)是“速度像蝸牛”!