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