摘 要:DDoS攻擊表現(xiàn)形式有多種,主要造成后果是導(dǎo)致Web服務(wù)器無法提供網(wǎng)絡(luò)服務(wù),最終造成一系列損失。針對通過某一網(wǎng)頁端口進(jìn)行的DDosS攻擊,提出了一種預(yù)防算法,自定義動態(tài)密鑰,并采用自定義算法調(diào)用,動態(tài)改變被攻擊端口處的文件名。該算法使得攻擊者無法通過加密后的文件來得到原文件名稱,從而達(dá)到預(yù)防此種DDoS攻擊的目的。實(shí)驗(yàn)證明,此算法有效。
關(guān)鍵詞: DDoS攻擊;黑客;預(yù)防算法;密鑰;網(wǎng)絡(luò)攻擊
根據(jù)美國計(jì)算機(jī)應(yīng)急響應(yīng)中心的報(bào)告,到目前為止,還沒有很好的辦法真正解決分布式拒絕服務(wù)(DDoS)攻擊問題。一般認(rèn)為,除非修改TCP/IP協(xié)議的內(nèi)核,否則,從理論上沒有辦法徹底解決DDoS攻擊[1]。已有不少學(xué)者對DDoS攻擊進(jìn)行了一些研究工作[2-6],但效果不甚理想。
1 相關(guān)研究
對源目的IP地址對進(jìn)行累積分析,當(dāng)訪問網(wǎng)絡(luò)中出現(xiàn)的IP地址在一定時(shí)期內(nèi)重復(fù)出現(xiàn)次數(shù)增多,這就隱含著可以根據(jù)歷史IP記錄檢測異常的出現(xiàn)來檢測出DDoS攻擊[7]。DDoS攻擊所造成的網(wǎng)絡(luò)擁塞必須在路由器上進(jìn)行處理,這就是基于IP擁塞控制來實(shí)現(xiàn)的預(yù)防DDoS攻擊[8]。但目前經(jīng)過最新DDoS攻擊統(tǒng)計(jì),大部分通過端口發(fā)布的是虛擬IP,重復(fù)的概率相當(dāng)小,采用這些方法進(jìn)行很多次攻擊但并未檢測出來。
對網(wǎng)絡(luò)流量進(jìn)行分析處理的方法,即對網(wǎng)絡(luò)流量進(jìn)行高頻統(tǒng)計(jì),然后對其相鄰時(shí)刻進(jìn)行相似度分析,根據(jù)相似度的變化來發(fā)現(xiàn)異常,在大流量背景下,此方法更適合大規(guī)模網(wǎng)絡(luò)的異常檢測[9]。異常流量聚集、協(xié)議分析和流量處理,即過濾異常流量并測試當(dāng)前聚積流量的擁塞控制特性,恢復(fù)被誤判的流量[10]。在研究 DDoS攻擊對網(wǎng)絡(luò)流量自相似性影響的基礎(chǔ)上,提出了小波分析檢測 DDoS 攻擊的方法[11]。引入非線性預(yù)處理網(wǎng)絡(luò)流量預(yù)測方法NLPP檢測DDoS攻擊[12]。
目前大部分研究是通過針對網(wǎng)絡(luò)流量分析和對IP分析來檢測DDoS攻擊提出的。本文從預(yù)防的角度提出預(yù)防算法,使攻擊者找不到攻擊的入口,達(dá)不到攻擊的目的,從而為網(wǎng)絡(luò)服務(wù)提供商減少損失。
2 本文算法
2.1 動態(tài)密鑰
2.1.1 自定義字母值
自定義字母值如表1所示。文件名加密前是6個(gè)數(shù)字串+6個(gè)字母串(如:123456abcDEF、658742AsbkKg),文件名加密后是6個(gè)與原文不同的數(shù)字+12個(gè)由字母經(jīng)過密鑰轉(zhuǎn)化的數(shù)字串。如當(dāng)天是2012-6-11(120611),動態(tài)獲取當(dāng)天年月日,原文為(123456abcDEF),加密后為(239477283029100607);如當(dāng)天是2012-11-16(121116),動態(tài)獲取當(dāng)天年月日,原文為(123456abcDEF),加密后為(734577283030050612)。
2.1.2 自定義加密算法
動態(tài)生成的字符(6個(gè)數(shù)字串+6個(gè)字母串)從左向右順序加密如表2所示。
2.1.3 自定義解密算法
加密后生成的18位數(shù)字(前6位數(shù)字+后12位數(shù)字)解密算法如表3所示。
2.1.4 設(shè)計(jì)思想
攻擊者不能確定文件名是否全是數(shù)字串,而且文件名每天都在變化。不易攻擊有幾點(diǎn):
(1)每天12個(gè)字符都是動態(tài)隨機(jī)生成的;
(2)攻擊者只能看到入庫文件名是一串?dāng)?shù)字,如果按照數(shù)字去破解是無法破解并找到真正的文件名;
(3)每天密鑰也是動態(tài)變化的,而且前后密鑰不統(tǒng)一;
(4)字符轉(zhuǎn)成定義值是自定義的,也可以更換,隨便換兩個(gè)值,就無法知道,不是常規(guī)ASCII;
(5)密鑰也是動態(tài)自定義的,其他相關(guān)研究人員借鑒可以換順序。
自定義字母值一是為了安全,自定的順序;二是為了方便計(jì)算、減少算法的復(fù)雜度。字符不用ASCII碼最主要的原因是ASCII碼中有些字符不能作為文件名。
如果想讓加密更復(fù)雜些,完全可以把自定義的字符打亂順序,在本機(jī)保存起來,方便計(jì)算。每個(gè)字符加減值也可按照其他規(guī)律來設(shè)定,隨機(jī)生成數(shù)據(jù)。
加密解決之所以要有規(guī)律,主要是為方便網(wǎng)站管理等人員隨時(shí)可以查到今天文件名是否與配置文件名同步,一旦出現(xiàn)異常現(xiàn)象能及時(shí)查到原因,盡快解決。
2.2 算法調(diào)用實(shí)現(xiàn)過程
自定義動態(tài)密鑰實(shí)現(xiàn)過程:單獨(dú)開發(fā)一個(gè)程序軟件,生成單獨(dú)文件,文件中記錄原文件名、加密后文件名、修改時(shí)間,每天0:00啟動一次。服務(wù)器做好任務(wù)計(jì)劃。程序?qū)崿F(xiàn)過程如圖1所示。
算法調(diào)用主要思想是:攻擊者無法訪問服務(wù)器上web.config文件,借助這一點(diǎn)將原文件名和加密后密鑰字符共同存到web.config里做一個(gè)中轉(zhuǎn)點(diǎn),可以使網(wǎng)頁顯示器的文件名和瀏覽器調(diào)用的文件名達(dá)到分離,這樣攻擊的黑客無法找到能入庫文件的真正文件名,無法找到真正的入口,從而無法用程序去攻擊。
3 實(shí)驗(yàn)
按數(shù)據(jù)庫設(shè)計(jì)的結(jié)構(gòu),準(zhǔn)備一批數(shù)據(jù)包。選用3臺性能較高的主機(jī)。
主機(jī)1:安裝上DDoS攻擊軟件,向另兩臺電腦上的交互頁面同時(shí)發(fā)送相同的數(shù)據(jù)包。同時(shí)還有兩個(gè)文件分別存儲返回的信息報(bào)告(成功發(fā)送或發(fā)送失敗);
主機(jī)2:建好數(shù)據(jù)庫、表、存儲過程,數(shù)據(jù)庫設(shè)置為1 024 MB且不自動增長,建一個(gè)常規(guī)的交互的網(wǎng)頁(表單頁),可以向數(shù)據(jù)庫提交數(shù)據(jù)。同時(shí)建一個(gè)頁面P顯示數(shù)據(jù)庫信息;
主機(jī)3:建好數(shù)據(jù)庫、表、存儲過程,數(shù)據(jù)庫設(shè)置為1 024 MB且不自動增長,建一個(gè)常規(guī)的交互的網(wǎng)頁(表單頁),采用本文提出的自定義動態(tài)加密及調(diào)用算法。同時(shí)建立一個(gè)頁面P顯示數(shù)據(jù)庫信息。
數(shù)據(jù)包里有10 000條信息,每條信息容量大約20 KB。設(shè)置發(fā)送頻率為15條/min(通過反復(fù)實(shí)驗(yàn)發(fā)現(xiàn),頻率設(shè)置太大,常會有返回信息報(bào)錯(cuò),個(gè)別信息沒入庫;設(shè)置太小,實(shí)驗(yàn)周期長,不符合一般黑客攻擊的頻率)。
通過主機(jī)1上兩個(gè)文件返回的信息報(bào)告,同時(shí)參考主機(jī)2、3數(shù)據(jù)庫中的數(shù)據(jù)。1 h內(nèi)主機(jī)1攻擊信息:
60 min×15條/min=900條。
設(shè)信息條數(shù)為函數(shù)y,天數(shù)為x,數(shù)據(jù)庫容量為z,則y=24x×900;z=20×y
主機(jī)2、主機(jī)3中測試頁面P主要是為測試網(wǎng)頁顯示本主機(jī)數(shù)據(jù)庫中數(shù)據(jù)時(shí)打開網(wǎng)頁的速度。由于網(wǎng)頁打開速度受多方面因素影響(數(shù)據(jù)庫容量、CPU占有率、網(wǎng)絡(luò)流量、數(shù)據(jù)處理速度等),每天定時(shí)測試主機(jī)2、主機(jī)3中測試頁P(yáng)打開速度,分析網(wǎng)頁打開速度的走向。
實(shí)驗(yàn)時(shí)間為10天,顯示結(jié)果如圖2、圖3所示。
分析圖2,主機(jī)2受到主機(jī)1的攻擊,到第3天及以后數(shù)據(jù)庫容量不再增長。容量已達(dá)到最大值。主機(jī)3在實(shí)驗(yàn)的10天內(nèi)一直沒有受到主機(jī)1攻擊的數(shù)據(jù),數(shù)據(jù)庫容量幾乎沒有改變。
分析圖3可知,主機(jī)2隨時(shí)間推移頁面打開速度越來越慢,到最后是無限慢,就是打不開,無法連接到數(shù)據(jù)庫,根據(jù)實(shí)驗(yàn)數(shù)據(jù)顯示,快到第3天(即數(shù)據(jù)庫容量快達(dá)到設(shè)定值)時(shí),頁面打開速度快速變慢,當(dāng)在快到20 s左右的連接速度時(shí),即已經(jīng)連接不上數(shù)據(jù)庫,數(shù)據(jù)庫超過容量,此時(shí)自動報(bào)錯(cuò),服務(wù)停止,后面的天數(shù)一直就是連接不上,用虛線表示。主機(jī)3在實(shí)驗(yàn)的10天內(nèi),沒有受到攻擊。數(shù)據(jù)庫沒有影響,頁面打開速度也沒有受到影響。以上實(shí)驗(yàn)結(jié)果證明了本文提出算法的有效性。
自定義動態(tài)密鑰打破傳統(tǒng)公用的加密方法,同時(shí)采用明碼密鑰,而非傳統(tǒng)的一串不認(rèn)識的字符串,方便其他研究人員、開發(fā)人員借鑒。
如果攻擊想把密鑰破解出來,僅看計(jì)算所有字符串時(shí)間,一臺性能不錯(cuò)的電腦(計(jì)算機(jī)速度按40億次/s)去計(jì)算106×526,要花137.295 9 h,這個(gè)時(shí)間僅排列組合計(jì)算時(shí)間,每一次組合完要連接一次文件測試,當(dāng)連接不上返回連接失敗信息,這個(gè)時(shí)間差不多1 s左右,把連接時(shí)間加上,要花的時(shí)間是相當(dāng)驚人的(5.492E×1012 h)。也就是說想破解密鑰找出文件名,一臺計(jì)算機(jī)最長時(shí)間是這兩個(gè)時(shí)間加起來。每天零點(diǎn)重新隨機(jī)生成一批新的數(shù)據(jù)串,就會有一批新的密碼。攻擊者必須在24 h內(nèi)找到密鑰。而且前提是要了解密碼真正的原文組成。從理論上來說幾乎不能攻破。
本文提出的算法已應(yīng)用到網(wǎng)絡(luò)中,已有10個(gè)月時(shí)間無異常現(xiàn)象,解決了網(wǎng)站以前受數(shù)據(jù)包攻擊煩惱。希望本算法給其他科研人員、數(shù)據(jù)安全研究人員及程序開發(fā)人員以借鑒。
參考文獻(xiàn)
[l] 李德全.拒絕服務(wù)攻擊[M].北京:電子工業(yè)出版社,2007:161-180.
[2] MIRKOVIC J.Attacking DDoS at the source[C].Proceedings of the 10th IEEE International Conference on Network Protocols,Paris,F(xiàn)rance,2002:366-369.
[3] FERGUSON P,SENIE D.Network ingress filtering:defeating de-nial of service attacks which employ IP source address spoofing[R].Internet Best Current Practice,RFC 2827,2000.
[4] WALFISH M,VUTUKURU M.DDoS defense by offense[C]. ACM SIGCOMM 2006,2006:1635-1639.
[5] 李德全,蘇璞睿,魏東梅,等.基于路由器編碼的自適應(yīng)包標(biāo)記[J].軟件學(xué)報(bào),2007,18(10):2652-2661.
[6] 曹曉梅,韓志杰,陳貴海.基于流量預(yù)測的傳感器網(wǎng)絡(luò)拒絕服務(wù)攻擊檢測方案[J].計(jì)算機(jī)學(xué)報(bào),2007,30(10):1798-1805.
[7] 孫知信,李清東.基于源目的IP地址對數(shù)據(jù)庫的防范DDoS攻擊策略[J].軟件學(xué)報(bào),2007,18(10):2613-2623.
[8] 吳國鋼.DDoS攻擊與IP擁塞控制研究[J].電子科技大學(xué)學(xué)報(bào),2007,36(3):614-655.
[9] 何慧,張宏莉,張偉哲,等.一種基于相似度的DDoS攻擊檢測方法[J].通信學(xué)報(bào),2004,25(7):176-184.
[10] 孫知信,姜舉良,焦琳.DDoS攻擊檢測和防御模型[J]. 軟件學(xué)報(bào),2007,18(9):2245-2258.
[11] 任勛益,王汝傳,王海艷.基于自相似檢測DDoS攻擊的小波分析方法[J].通信學(xué)報(bào),2006,27(5):6-11.
[12] 楊新宇,楊樹森,李娟.基于非線性預(yù)處理網(wǎng)絡(luò)流量預(yù)測方法的泛洪型DDoS攻擊檢測算法[J].計(jì)算機(jī)學(xué)報(bào),2011,34(2):395-405.