◆李世杰 倪 洪
面向DDoS防御設(shè)備安全性測(cè)試的Scapy應(yīng)用
◆李世杰 倪 洪
(福建警察學(xué)院 福建 350007)
分布式拒絕服務(wù)(DDoS)的攻擊機(jī)制是針對(duì)最新的網(wǎng)絡(luò)協(xié)議所設(shè)計(jì)的,在防御上比較困難,需要部署網(wǎng)絡(luò)安全設(shè)備來(lái)對(duì)其進(jìn)行控制。因此網(wǎng)絡(luò)安全設(shè)備的有效性至關(guān)重要,必須通過(guò)嚴(yán)格的攻擊測(cè)試,本文介紹了利用Scapy實(shí)現(xiàn)DDoS攻擊的測(cè)試方法。Scapy具有強(qiáng)大的功能和靈活的擴(kuò)展性,能夠偽造或者解碼大量的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包,利用Scapy能夠簡(jiǎn)單、快速實(shí)現(xiàn)DDoS攻擊。本文研究了實(shí)現(xiàn)的過(guò)程和部分代碼,同時(shí)有針對(duì)性地使用DDoS deflate腳本和iptables配置防御策略,來(lái)驗(yàn)證Scapy應(yīng)用在DDoS防御設(shè)備的安全性測(cè)試中是直接有效的。
DDoS;攻擊測(cè)試;Scapy;網(wǎng)絡(luò)安全;SYN Flood
分布式拒絕服務(wù)(DDoS)攻擊是危害性巨大的網(wǎng)絡(luò)安全威脅,它通過(guò)消耗目標(biāo)主機(jī)的網(wǎng)絡(luò)帶寬或系統(tǒng)資源,導(dǎo)致網(wǎng)絡(luò)超負(fù)荷甚至癱瘓,從而無(wú)法提供給合法用戶正常的網(wǎng)絡(luò)服務(wù)[1]。2018年發(fā)布的《NETSCOUT威脅情報(bào)報(bào)告》說(shuō)明,以SSDP、Memcached和物聯(lián)網(wǎng)僵尸網(wǎng)絡(luò)為主的DDoS攻擊在2018年上半年發(fā)起了約280萬(wàn)次攻擊,超過(guò) 300GB的DDoS攻擊達(dá)到47次,是上一年的7倍之多,而中國(guó)超過(guò)500GB的攻擊也達(dá)到17次之多[2]。
事實(shí)證明,DDoS攻擊越來(lái)越迅猛,它的創(chuàng)新性、危害效果從未如此強(qiáng)勁,因此需要更有效的網(wǎng)絡(luò)安全設(shè)備來(lái)對(duì)其進(jìn)行控制,而設(shè)備的安全性測(cè)試是一個(gè)亟須解決的問(wèn)題。市面上常規(guī)的一些測(cè)試工具如LOIC、Wireshark等,能夠滿足一些網(wǎng)絡(luò)設(shè)備的安全性測(cè)試,但是由于其自身的擴(kuò)展和功能局限問(wèn)題,它們已經(jīng)不能完全滿足當(dāng)前網(wǎng)絡(luò)安全設(shè)備的測(cè)試需求。Scapy作為功能強(qiáng)大的交互式數(shù)據(jù)包處理程序,具有較強(qiáng)的擴(kuò)展性和操作性,利用Scapy 可以輕松地實(shí)現(xiàn)DDoS攻擊,進(jìn)行網(wǎng)絡(luò)安全設(shè)備測(cè)試時(shí)在一定程度上簡(jiǎn)化了測(cè)試程序,同時(shí)縮減了測(cè)試時(shí)間,提升了測(cè)試效率。
分布式拒絕服務(wù)攻擊(DDoS)是Distributed Denial of Service的簡(jiǎn)稱,指通過(guò)C/S模式,聯(lián)合多臺(tái)計(jì)算機(jī)對(duì)目標(biāo)主機(jī)發(fā)動(dòng)攻擊,使攻擊能力倍增,大量消耗被攻擊目標(biāo)的系統(tǒng)資源,從而無(wú)法處理合法用戶的請(qǐng)求[3]。一般有以下幾類[4]:
(1)SYN Flood
SYN Flood是自從1996年被發(fā)現(xiàn)到現(xiàn)在為止仍然流行、破壞力較大的攻擊之一。它利用TCP協(xié)議缺陷,通過(guò)發(fā)送大量偽造的TCP連接請(qǐng)求,消耗系統(tǒng)資源和內(nèi)存等[5]。
(2)HTTP Flood
HTTP Flood使用代理服務(wù)器或者僵尸主機(jī)模仿用戶正常訪問(wèn)行為,向目標(biāo)服務(wù)器發(fā)送大量請(qǐng)求,從而消耗服務(wù)器的CPU、內(nèi)存以及數(shù)據(jù)庫(kù)等資源[6]。由于HTTP Flood通過(guò)模仿正常用戶的請(qǐng)求行為進(jìn)行攻擊,所以安全人員無(wú)法提出一套十全十美的方案能夠清楚地區(qū)分合法用戶或者非法攻擊者。
(3)反射放大攻擊
反射攻擊中加入了第三方反射主機(jī),與直接泛洪攻擊相比,反射攻擊具有更強(qiáng)的隱蔽性,往往能夠產(chǎn)生成倍的攻擊流量。在反射放大攻擊中,攻擊者偽造被攻擊方的IP地址并發(fā)起組播,這樣與被攻擊方有關(guān)聯(lián)的設(shè)備都會(huì)收到偽裝的請(qǐng)求報(bào)文,同時(shí)因?yàn)轫憫?yīng)報(bào)文的大小往往是請(qǐng)求報(bào)文的好幾倍,所以將攻擊流量放大[7]。
Scapy是使用Python編寫(xiě)的一個(gè)功能強(qiáng)大的網(wǎng)絡(luò)掃描器、交互式數(shù)據(jù)包處理程序[8]、嗅探工具等。它能夠輕松偽造、解碼、編輯、發(fā)送、嗅探、應(yīng)答、匹配請(qǐng)求、捕捉和回復(fù)大量的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包,它還具有端口掃描、Fuzzing 測(cè)試、tracerouting、單元測(cè)試等功能。
3.2.1實(shí)現(xiàn)SYN Flood攻擊
Scapy易于實(shí)現(xiàn)偽造IP地址,可以發(fā)送任意形式的數(shù)據(jù)包,利用這些特點(diǎn)我們可以實(shí)現(xiàn)DoS攻擊。利用偽造的源IP和構(gòu)建的tcp數(shù)據(jù)的功能實(shí)現(xiàn)SYN Flood攻擊,代碼如下:
其中srcList用于存放偽造的IP地址;random.randrange函數(shù)用于實(shí)現(xiàn)隨機(jī)從srcList列表中獲取一個(gè)偽造的IP地址;for循環(huán)用來(lái)表示每次發(fā)送數(shù)據(jù)包時(shí)源端口都改變;循環(huán)中改變的端口號(hào)傳遞給sport。
3.2.2控制Client
上面已實(shí)現(xiàn)SYN Flood攻擊,而DDoS攻擊是DoS的升級(jí)版,通過(guò)控制多臺(tái)主機(jī)同時(shí)對(duì)目標(biāo)主機(jī)發(fā)起攻擊,因此需要在Server端發(fā)送命令控制Client端對(duì)同一目標(biāo)發(fā)起攻擊。
(1)Server端代碼實(shí)現(xiàn)
Server向Client發(fā)送命令,主函數(shù)中創(chuàng)建socket;接著進(jìn)行地址和端口號(hào)的綁定,0.0.0.0表示綁定所有的網(wǎng)絡(luò)地址,監(jiān)聽(tīng)58868端口,規(guī)定最大連接數(shù)為1024;然后新開(kāi)一個(gè)線程,循環(huán)等待客戶端的連接;最后輸入命令,控制Client向目標(biāo)地址發(fā)起SYN泛洪攻擊。給出部分代碼:
(2)Client端代碼實(shí)現(xiàn)
在Client端需創(chuàng)建socket,在腳本啟動(dòng)后主動(dòng)連接Server端,等待并解析命令,實(shí)現(xiàn)對(duì)目標(biāo)地址的SYN泛洪攻擊。給出部分代碼如下:
上面我們已經(jīng)利用Scapy實(shí)現(xiàn)了DDoS攻擊,在此基礎(chǔ)上我們搭建了一個(gè)實(shí)驗(yàn)環(huán)境用來(lái)測(cè)試攻擊的有效性,實(shí)驗(yàn)拓?fù)淙鐖D1所示,其中攻擊者是基于Linux系統(tǒng)的計(jì)算機(jī),在計(jì)算機(jī)中我們利用Scapy編寫(xiě)程序攻擊服務(wù)器,服務(wù)器的ip地址為192.168.1.88,網(wǎng)絡(luò)分析儀中有wireshark,利用wireshark截獲數(shù)據(jù)包進(jìn)行分析。
圖1 實(shí)驗(yàn)拓?fù)?/p>
網(wǎng)絡(luò)分析儀截獲了攻擊者發(fā)送的大量SYN數(shù)據(jù)包,如圖2所示。可以看出,不同的源IP 地址對(duì)服務(wù)器發(fā)送了大量的SYN數(shù)據(jù)包,服務(wù)器進(jìn)行回應(yīng),但是三次握手沒(méi)有成功,服務(wù)器一直在尋找給他發(fā)送SYN包的主機(jī),由此我們成功利用Scapy對(duì)服務(wù)器進(jìn)行了DDoS攻擊,攻擊方法簡(jiǎn)單有效。
圖2 wireshark截獲的數(shù)據(jù)包
(1)配置DDoS deflate
DDoS deflate是一款免費(fèi)的、輕量級(jí)、自動(dòng)防御或減輕DDoS攻擊的腳本[9]。它通過(guò)netstat監(jiān)測(cè)、跟蹤創(chuàng)建大量網(wǎng)絡(luò)連接的IP地址,如果某個(gè)節(jié)點(diǎn)連接數(shù)超過(guò)用戶設(shè)置的最大連接閾值,該程序就會(huì)調(diào)用iptables禁止某些IP。
(2)配置iptables
Iptables,是用戶和內(nèi)核防火墻之間的聯(lián)系通道,主要負(fù)責(zé)從用戶命令行界面接收命令,執(zhí)行相應(yīng)的內(nèi)核操作[10]。用戶利用規(guī)則進(jìn)行插入、修改和刪除等操作,從而進(jìn)行防火墻配置和數(shù)據(jù)包過(guò)濾等操作,使用戶可以自制規(guī)則,允許想要的網(wǎng)絡(luò)流量進(jìn)入系統(tǒng),滿足特定需求。管理員可根據(jù)被保護(hù)主機(jī)的業(yè)務(wù)需求和實(shí)際負(fù)載能力設(shè)置最大連接數(shù)。當(dāng)超過(guò)最大值時(shí),防火墻將會(huì)判定該機(jī)子正在遭受攻擊,立即啟用應(yīng)對(duì)措施。
在服務(wù)器上部署DDoS deflate腳本搭配iptables防火墻是一種常用的防御DDoS攻擊策略,我們利用Scapy實(shí)現(xiàn)DDoS攻擊來(lái)測(cè)試這種策略的有效性。
(1)利用系統(tǒng)自帶工具System Monitor,獲取正常情況下,一分鐘內(nèi)系統(tǒng)資源使用情況,如圖3所示,CPU使用率為29%和28%,內(nèi)存應(yīng)用率為26.8%、交換區(qū)引用率為0.8% ,網(wǎng)絡(luò)運(yùn)行較穩(wěn)定,整體曲線幅度平穩(wěn)。
(2)運(yùn)行基于Scapy實(shí)現(xiàn)的DDoS攻擊腳本后,系統(tǒng)在無(wú)防御情況下遭受攻擊,查看系統(tǒng)狀態(tài)。如圖4所示,CPU使用率從29%左右增長(zhǎng)至54.8%,內(nèi)存占用率劇增至85.4%、交換區(qū)占有率從0.8%至2.7% ,網(wǎng)絡(luò)利用率從64bytes/s增至1.6MB/s,整體曲線持續(xù)遞增,可能導(dǎo)致系統(tǒng)崩潰。
(3)由DDoS deflate調(diào)用iptables策略開(kāi)啟防火墻防御,系統(tǒng)逐漸恢復(fù)。系統(tǒng)狀態(tài)情況如圖5所示,CPU應(yīng)用率從85.4%分別恢復(fù)為39%和28.3%左右,內(nèi)存占用率從54.8%恢復(fù)至35.3%,網(wǎng)絡(luò)利用率明顯下降。
圖3 系統(tǒng)正常使用狀態(tài)圖
圖4 遭受攻擊的系統(tǒng)狀態(tài)圖
圖5 調(diào)用iptables后系統(tǒng)狀態(tài)圖
DDoS攻擊是當(dāng)今互聯(lián)網(wǎng)最重要的安全威脅之一,它具有危害大、涉及廣和防御難等特點(diǎn),網(wǎng)絡(luò)安全設(shè)備對(duì)防御DDoS起到至關(guān)重要的作用。但是網(wǎng)絡(luò)安全設(shè)備的有效性必須通過(guò)測(cè)試,文章介紹的利用Scapy實(shí)現(xiàn)DDoS攻擊是一種直接有效的測(cè)試方法。文章重點(diǎn)介紹了如何利用Scapy實(shí)現(xiàn)DDoS攻擊,并給出了相關(guān)實(shí)現(xiàn)代碼,利用scapy進(jìn)行網(wǎng)絡(luò)設(shè)備測(cè)試在一定程度上簡(jiǎn)化了測(cè)試程序,縮減了測(cè)試時(shí)間,提升了測(cè)試效率,為防御DDoS攻擊,維護(hù)網(wǎng)絡(luò)信息安全做出重大貢獻(xiàn)。
[1]張永錚,肖軍,云曉春,王風(fēng)宇.DDoS攻擊檢測(cè)和控制方法[J].軟件學(xué)報(bào),2012,23(08):2058-2072.
[2]章繼剛. NETSCOUT Arbor:DDoS攻擊形勢(shì)不容樂(lè)觀[D].網(wǎng)絡(luò)安全和信息化,2018.
[3]唐林.DDoS攻擊工具演變及防御技術(shù)研究[J].信息與電腦(理論版),2017:212-213.
[4]肖甫,馬俊青,黃洵松,王汝傳.SDN環(huán)境下基于KNN的DDoS攻擊檢測(cè)方法[J].南京郵電大學(xué)學(xué)報(bào)(自然科學(xué)版),2015,35(01):84-88.
[5]Hussain S M,Beigh G R.Impact of DDoS attack(UDP Flooding)on queuing models.Intemational Conference on Computer and Communication Technology 2013 Vol.pp.210-216.
[6]袁志.一種抵御HTTP洪水攻擊的方法[J].計(jì)算機(jī)應(yīng)用與軟件,2012:277-279.
[7]林心陽(yáng),胡曦明,馬苗,李鵬.基于SSDP的物聯(lián)網(wǎng)DDoS反射放大攻擊及防御實(shí)驗(yàn)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2018:22-26+33.
[8]李兆斌,茅方毅,王瑤君,劉倩.Scapy在網(wǎng)絡(luò)設(shè)備安全性測(cè)試中的應(yīng)用[J].北京電子科技學(xué)院學(xué)報(bào),2016:76-80.
[9]Muhammad Aamir,Syed Mustafa Ali Zaidi.DDoS attack detection with feature engineering and machine learning: the framework and performance evaluation.International Journal of Information Security,2019,Vol.18(6),pp.761-785.
[10]趙亞楠,馬兆豐.Linux中Netfilter/iptables的研究與應(yīng)用[J].中國(guó)科技論文,2014,9(10):1174-1177+1187.