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