林心陽,胡曦明,2,馬苗,2 ,李鵬,2
(1.陜西師范大學(xué)計算機(jī)科學(xué)學(xué)院,西安 710119;2.現(xiàn)代教學(xué)技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,西安 710119)
分布式拒絕服務(wù)攻擊(DDoS:Distributed Denial of Service)指將多個計算機(jī)聯(lián)合起來作為攻擊平臺,對一個或多個目標(biāo)發(fā)動DDoS攻擊,耗盡被攻擊網(wǎng)絡(luò)的系統(tǒng)資源,從而使被攻擊網(wǎng)絡(luò)無法處理合法用戶的請求[1]。反射型DDoS則是一種新的變種,其利用了DNS、NTP、SMTP等網(wǎng)絡(luò)協(xié)議工作原理中普遍存在的點(diǎn)對多點(diǎn)型請求與響應(yīng)過程。攻擊方通過向網(wǎng)絡(luò)中發(fā)送偽造的請求報文,引起網(wǎng)絡(luò)中的大量設(shè)備作為應(yīng)答方,向目標(biāo)設(shè)備發(fā)送大量無端的響應(yīng)報文,由此利用點(diǎn)對多點(diǎn)型請求與響應(yīng)過程制造出對DDoS攻擊的反射放大效果,給網(wǎng)絡(luò)安全帶來極大威脅。
在物聯(lián)網(wǎng)環(huán)境中,網(wǎng)絡(luò)攝像頭、打印機(jī)、智能家電等物聯(lián)網(wǎng)設(shè)備普遍采用UPnP(即插即用)協(xié)議作為網(wǎng)絡(luò)通訊協(xié)議,而UPnP設(shè)備的發(fā)現(xiàn)主要是通過簡單服務(wù)發(fā)現(xiàn)協(xié)議(SSDP:Simple Service Discovery Protocol)進(jìn)行相互感知的。由于UPnP設(shè)備的數(shù)量龐大,基于SSDP的物聯(lián)網(wǎng)DDoS反射放大攻擊,其攻擊帶寬放大倍數(shù)統(tǒng)計平均可達(dá)30倍以上[2]。近年來,在DDoS反射放大攻擊流量中,SSDP漸漸取代DNS、NTP等成為被利用的主要協(xié)議[3],因此基于SSDP的物聯(lián)網(wǎng)DDoS反射放大攻擊及防御技術(shù)成為物聯(lián)網(wǎng)安全領(lǐng)域的熱點(diǎn)和難點(diǎn)。
簡單服務(wù)發(fā)現(xiàn)協(xié)議是封裝在UDP上的一種應(yīng)用層協(xié)議,端口號為1900。按照協(xié)議的規(guī)定,當(dāng)一個控制點(diǎn)(客戶端)接入網(wǎng)絡(luò)的時候,它可以向一個特定的多播地址的SSDP端口用M-SEARCH方法發(fā)送“ssdp:discover”消息[4]。當(dāng)設(shè)備監(jiān)聽到這個保留的多播地址上由控制點(diǎn)發(fā)送消息時,設(shè)備會分析控制點(diǎn)的請求服務(wù),如果自身提供了控制點(diǎn)的請求服務(wù),設(shè)備將通過單播的方式直接響應(yīng)控制點(diǎn)的請求。
當(dāng)一個設(shè)備計劃從網(wǎng)絡(luò)上卸載時,它也應(yīng)當(dāng)向一個特定多播地址的SSDP協(xié)議端口使用NOTIFY方法發(fā)送“ssdp:byebye”消息?;赟SDP的物聯(lián)網(wǎng)DDoS反射放大攻擊原理如圖1所示。
在反射放大攻擊中,所謂“反射”,是指攻擊者并不直接攻擊目標(biāo)服務(wù)IP,而是通向組播地址發(fā)送構(gòu)造的請求報文,將被攻擊方的IP地址偽造成報文的源IP地址。所有支持該協(xié)議的設(shè)備都會收到搜索報文如圖1虛線所示。所謂“放大”,是指這些設(shè)備會將數(shù)倍于請求報文的回復(fù)數(shù)據(jù)發(fā)送到被攻擊方,從而對其間接形成DDoS攻擊,如圖1中實(shí)線所示。這個過程利用SS?DP協(xié)議“組播請求、單播響應(yīng)”的特點(diǎn),實(shí)現(xiàn)了攻擊的反射放大。
圖1 反射放大攻擊原理
物聯(lián)網(wǎng)環(huán)境的概念非常寬泛,包括傳感器等工業(yè)用物聯(lián)網(wǎng),服務(wù)器、打印設(shè)備等商用物聯(lián)網(wǎng),天氣環(huán)境監(jiān)測網(wǎng)絡(luò)系統(tǒng)等公共服務(wù)用物聯(lián)網(wǎng)。這些日趨廣泛的物聯(lián)網(wǎng)環(huán)境都極易受到DDoS的威脅[5]。其中,由智能冰箱、恒溫控制器、家用路由器和監(jiān)控攝像頭等設(shè)備組成的智能家居物聯(lián)網(wǎng)環(huán)境由于其設(shè)備購置成本低,組網(wǎng)靈活,攻擊與防御范圍可控等優(yōu)點(diǎn)適合于作為在教學(xué)中開展攻擊和防御實(shí)驗(yàn)的網(wǎng)絡(luò)環(huán)境。
在基于智能家居的物聯(lián)網(wǎng)環(huán)境中,如何找到可被SSDP攻擊利用的智能設(shè)備成為攻擊實(shí)現(xiàn)的前提和關(guān)鍵。為此,本文提出一種基于Python進(jìn)行Socket編程對物聯(lián)網(wǎng)內(nèi)的UPnP設(shè)備進(jìn)行探測的解決方案,采用該方案可以有效地探測物聯(lián)網(wǎng)內(nèi)可被攻擊利用進(jìn)行反射的設(shè)備。
首先,通過向協(xié)議的固定組播地址239.255.255.250發(fā)送一個搜索報文(ssdp:discover);然后,捕獲響應(yīng)報文進(jìn)行報文內(nèi)容的提取,從而可以全面而準(zhǔn)確地發(fā)現(xiàn)物聯(lián)網(wǎng)內(nèi)可被攻擊利用進(jìn)行反射的設(shè)備;最后,通過計算得出此實(shí)驗(yàn)物聯(lián)網(wǎng)環(huán)境下SSDP協(xié)議的帶寬放大因子(BAF,Bandwidth Amplification Factor),即回復(fù)報文的總字節(jié)數(shù)與請求報文字節(jié)數(shù)的比值。關(guān)鍵步驟實(shí)現(xiàn)如表1所示。
表1 實(shí)驗(yàn)環(huán)境嗅探關(guān)鍵步驟
通過對程序運(yùn)行結(jié)果進(jìn)行整理和統(tǒng)計,列出在探測報文發(fā)出后應(yīng)答報文(HTTP/1.1 200 OK)的源IP、響應(yīng)報文個數(shù)及平均長度如表2。這些響應(yīng)報文即為DDoS攻擊進(jìn)行流量反射的媒介。
表2 UPnP設(shè)備探測報文應(yīng)答統(tǒng)計表
設(shè)B為發(fā)出的搜索報文字節(jié)數(shù),bi為第i個應(yīng)答報文的字節(jié)數(shù),從而依式(1)求出實(shí)驗(yàn)BAF值[6]:
其中,由Wireshark抓取所發(fā)出的數(shù)據(jù)包得B=133bytes。可見,實(shí)驗(yàn)BAF高于近年SSDP攻擊中測得BAF的平均值30.08,保證了實(shí)驗(yàn)的參考價值[7]。
在工作和生活中常見的電子設(shè)備都可能隨時遭受基于SSDP協(xié)議的DDoS威脅,而在互聯(lián)網(wǎng)內(nèi)最易受到攻擊的則是服務(wù)器[8]。在物聯(lián)網(wǎng)實(shí)驗(yàn)環(huán)境的探測后,針對實(shí)驗(yàn)環(huán)境及常見攻擊特點(diǎn)設(shè)計模擬攻擊實(shí)驗(yàn)方案如圖2所示。
圖2 實(shí)驗(yàn)方案設(shè)計流程圖
在網(wǎng)段內(nèi)對智能家居物聯(lián)網(wǎng)中的個人電腦、An?droid手機(jī)、路由器、網(wǎng)絡(luò)機(jī)頂盒進(jìn)行攻擊實(shí)驗(yàn),并根據(jù)設(shè)備特性用不同的方式觀察其實(shí)驗(yàn)效果。跨網(wǎng)段對互聯(lián)網(wǎng)中服務(wù)器進(jìn)行攻擊,并由服務(wù)器資源狀態(tài)走勢圖觀察實(shí)驗(yàn)效果,本文實(shí)驗(yàn)中使用阿里云服務(wù)器作為被攻擊對象。
(1)攻擊的實(shí)現(xiàn)
用Python的scapy模塊編寫腳本實(shí)現(xiàn)包含IP欺騙的SSDP搜索請求報文發(fā)送,通過控制發(fā)包數(shù)量及速率,指定目標(biāo)設(shè)備的IP地址為發(fā)出報文的源IP地址,使局域網(wǎng)內(nèi)所有設(shè)備響應(yīng)均發(fā)送至該設(shè)備,從而實(shí)現(xiàn)對局域網(wǎng)內(nèi)智能終端進(jìn)行攻擊,關(guān)鍵步驟如表3。
表3 攻擊實(shí)現(xiàn)關(guān)鍵步驟
由于Windows系統(tǒng)默認(rèn)會對所發(fā)出報文進(jìn)行IP查驗(yàn),因此無法進(jìn)行IP欺騙,即不能發(fā)出SSDP攻擊報文,故選擇在Linux(Ubuntu16.1.4)系統(tǒng)上配置Python環(huán)境,運(yùn)行攻擊腳本。
(2)網(wǎng)段內(nèi)攻擊實(shí)驗(yàn)
①主機(jī)攻擊實(shí)驗(yàn)
對IP為192.168.1.108的主機(jī)進(jìn)行攻擊,在攻擊持續(xù)的時間內(nèi),打開Windows資源監(jiān)視器發(fā)現(xiàn)網(wǎng)絡(luò)帶寬資源由于攻擊而被大量占用,如圖3所示。
圖3 受到攻擊時網(wǎng)絡(luò)資源狀況
在被攻擊主機(jī)上打開Wireshark抓包得到由攻擊主機(jī)偽造源IP發(fā)出大量搜索報文以及收到大量的來自局域網(wǎng)內(nèi)設(shè)備的SSDP響應(yīng)報文如圖4、5所示。
圖4 偽造IP搜索報文
圖5 SSDP響應(yīng)攻擊報文
在攻擊結(jié)束后,查看資源監(jiān)視器,網(wǎng)絡(luò)逐漸恢復(fù)正常狀態(tài),網(wǎng)絡(luò)資源情況如圖6。
圖6 攻擊結(jié)束后網(wǎng)絡(luò)資源狀況
根據(jù)網(wǎng)絡(luò)資源狀況的對比可知攻擊產(chǎn)生了較為明顯的效果。在模擬攻擊過程中由于Python多線程運(yùn)行的特點(diǎn)及發(fā)包速率受到Python scapy模塊發(fā)包性能的限制,攻擊流量較小。但從攻擊主機(jī)和被攻擊的主機(jī)兩者的帶寬占用比值來看,攻擊放大倍數(shù)約為10倍,達(dá)到較好的放大效果,能夠很好地模擬SSDP反射放大攻擊過程。同時若使用多臺主機(jī)形成DDoS攻擊,或局域網(wǎng)內(nèi)可用支持UPnP的設(shè)備數(shù)量更多,則攻擊流量大小必將成倍增加。
②其他終端攻擊實(shí)驗(yàn)
以下對智能手機(jī)、家用路由器以及網(wǎng)絡(luò)電視機(jī)頂盒進(jìn)行DDoS攻擊模擬。
首先,對局域網(wǎng)內(nèi)一臺Android手機(jī)(IP=192.168.1.102)進(jìn)行SSDP攻擊,通過軟件PingTools可觀察到在遭受攻擊的時間里手機(jī)的網(wǎng)絡(luò)使用率激增,在攻擊結(jié)束后恢復(fù)正常如圖7。
圖7 被攻擊手機(jī)網(wǎng)絡(luò)使用率走勢圖
編寫腳本攻擊家庭路由器(IP=192.168.1.1),在攻擊持續(xù)時間內(nèi)局域網(wǎng)內(nèi)的設(shè)備均受到一定程度的影響,正在播放視頻的電視及手機(jī)均出現(xiàn)嚴(yán)重的卡頓現(xiàn)象。在局域網(wǎng)內(nèi)手機(jī)上通過PingTools查看路由器信號強(qiáng)度走勢如圖8,路由器信號強(qiáng)度由100%下降并穩(wěn)定在76%。
圖8 路由器信號強(qiáng)度走勢圖
最后,對局域網(wǎng)中家庭電視的網(wǎng)絡(luò)機(jī)頂盒(IP=192.168.1.105)進(jìn)行SSDP攻擊,在攻擊持續(xù)的時間內(nèi),手動調(diào)節(jié)視頻進(jìn)度以排除提前緩存因素影響,電視視頻播放畫質(zhì)明顯下降并且出現(xiàn)持續(xù)的閃屏現(xiàn)象。
(3)跨網(wǎng)段攻擊實(shí)驗(yàn)
由于SSDP協(xié)議并沒有檢查搜索請求報文是否來自于設(shè)備所在的局域網(wǎng)絡(luò)的機(jī)制,即便M-SEARCH報文來自于互聯(lián)網(wǎng),設(shè)備也會積極應(yīng)答這個報文[9]。如果設(shè)備將1900這個UDP端口暴露在互聯(lián)網(wǎng)中,那么這個端口就有可能成為UDP放大攻擊的絕佳目標(biāo)。為探究攻擊報文是否可以穿越互聯(lián)網(wǎng),進(jìn)行如下實(shí)驗(yàn)進(jìn)行驗(yàn)證。
將發(fā)出的攻擊報文源地址改為互聯(lián)網(wǎng)上的云服務(wù)器地址,在Linux系統(tǒng)上運(yùn)行腳本,對該服務(wù)器發(fā)起SSDP攻擊。由于攻擊方處于表1所示的家居物聯(lián)網(wǎng)環(huán)境中,所以局域網(wǎng)中的終端在本實(shí)驗(yàn)中起到反射和放大作用。發(fā)起兩次攻擊分別持續(xù)10min(12:25至12:35)、70min(12:40至 13:50),在此過程中查看服務(wù)器資源狀態(tài)如圖9。
圖9 服務(wù)器出/入報文速率走勢圖
其中,由圖中可見在[12:49:30]時刻入報文速率為586個/秒,明顯高于攻擊發(fā)生前,可見攻擊者可以跨網(wǎng)段攻擊互聯(lián)網(wǎng)中任意一臺具有公網(wǎng)IP的服務(wù)器。
SSDP協(xié)議成為黑客發(fā)起DDoS攻擊的幫兇,在一定程度上是由于該協(xié)議存在漏洞造成的[10]。對本文的實(shí)驗(yàn)過程進(jìn)行分析得出結(jié)論:在SSDP實(shí)現(xiàn)發(fā)現(xiàn)設(shè)備的過程中可加入IP地址校驗(yàn)機(jī)制,即當(dāng)一臺智能設(shè)備收到搜索請求報文后能夠自動進(jìn)行IP地址檢查,若IP為非局域網(wǎng)內(nèi)IP則不進(jìn)行響應(yīng)。由此將SSDP報文限制在局域網(wǎng)內(nèi),可以避免互聯(lián)網(wǎng)內(nèi)大規(guī)模的SSDP反射放大攻擊。
客觀上我們無法阻止黑客對我們的服務(wù)器發(fā)動DDoS攻擊,除非主動斷開互聯(lián)網(wǎng)連接。但我們可以在理解攻擊的原理及過程后,采取如下兩種有效措施將這種攻擊的危害大大降低。
(1)對于不需要啟用UPnP服務(wù)的設(shè)備,手動停止該服務(wù)或關(guān)閉1900端口(配置防火墻)。
在Windows系統(tǒng)中可以在“控制面板-管理工具-服務(wù)-屬性-啟動類型”中將SSDP Discovery Service服務(wù)停止,其進(jìn)程名是svchost.exe。在Linux系統(tǒng)中可以在終端下通過命令進(jìn)行服務(wù)關(guān)閉操作。
(2)引入流量清洗技術(shù),對業(yè)務(wù)流量進(jìn)行實(shí)時監(jiān)控分析。
如果檢測短時間內(nèi)可能遭受DDoS攻擊,則進(jìn)行流量清洗,將收到的UDP攻擊包丟棄,對特定端口進(jìn)行限速等。根據(jù)不同的防護(hù)等級需求,可選取采用三個層次的流量清洗:本地清洗、運(yùn)營商清洗、云清洗。
若教師期望在課堂上進(jìn)行防御下的攻擊驗(yàn)證實(shí)驗(yàn),學(xué)生可按上述方法將計算機(jī)的SSDP服務(wù)停止,其1900端口將不會被利用從而受到攻擊,攻擊者得到的反射報文數(shù)量也會明顯減少,即可證明攻擊可被有效地防御。
本文針對反射放大型DDoS所帶來的網(wǎng)絡(luò)安全問題,利用家居物聯(lián)網(wǎng)環(huán)境中的智能終端進(jìn)行攻擊實(shí)驗(yàn)。首先對物聯(lián)網(wǎng)環(huán)境中可開展攻擊與防御的設(shè)備進(jìn)行嗅探,然后利用Python開發(fā)了基于SSDP的物聯(lián)網(wǎng)DDoS反射放大攻擊實(shí)驗(yàn)軟件,通過實(shí)驗(yàn)驗(yàn)證了該軟件可以應(yīng)用于家居物聯(lián)網(wǎng)及互聯(lián)網(wǎng)環(huán)境下的DDoS反射放大攻擊實(shí)驗(yàn)。在此基礎(chǔ)上,針對物聯(lián)網(wǎng)環(huán)境中的放射放大型DDoS的防御,進(jìn)一步分析了SSDP協(xié)議存在的安全漏洞并提出改進(jìn)方案及防御策略。
本文的實(shí)驗(yàn)過程方案可在物聯(lián)網(wǎng)環(huán)境下實(shí)現(xiàn)多場景再現(xiàn),不局限于某一種局域網(wǎng)環(huán)境或設(shè)備。因此,教師可根據(jù)教學(xué)目標(biāo)開展當(dāng)堂實(shí)驗(yàn),使教室內(nèi)的多媒體設(shè)備、移動終端及個人電腦成為課堂實(shí)驗(yàn)工具,形成理論與實(shí)踐的結(jié)合的授課模式。