一種web惡意掃描行為異常檢測(cè)方法與系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種面向WEB惡意掃描行為的異常檢測(cè)方法與系統(tǒng),屬于WEB安全領(lǐng)域。
【背景技術(shù)】
[0002]WEB掃描是一種常見的WEB訪問行為,一般是指網(wǎng)絡(luò)爬蟲按一定的規(guī)則獲取目標(biāo)網(wǎng)站的內(nèi)容。WEB惡意掃描與正常掃描的區(qū)別在于,前者的目標(biāo)是通過掃描發(fā)現(xiàn)網(wǎng)站漏洞、敏感信息、授權(quán)入口等信息,而后者的目標(biāo)則是獲取網(wǎng)站正常提供的內(nèi)容信息,如Html頁(yè)面、圖片、CSS文件等。由于二者的目標(biāo)有著本質(zhì)性的差別,因此其訪問行為也有著明顯的差別:
[0003]首先,WEB惡意掃描的訪問請(qǐng)求與正常WEB掃描的訪問請(qǐng)求在語義上有明顯不同。如,WEB惡意掃描會(huì)發(fā)送“/robots, txt/1.php”來判斷網(wǎng)站是否存在文件類型解析錯(cuò)誤漏洞,發(fā)送“/Vebl.rar”來探測(cè)有沒有存儲(chǔ)不當(dāng)?shù)膫浞菸募嬖冢l(fā)送“/servlet/ContentServer ? pagename = <script>alert (’Vulnerable’)〈/script〉,,來判斷網(wǎng)站有沒有跨站腳本漏洞等。而正常WEB掃描會(huì)根據(jù)網(wǎng)站鏈接發(fā)送請(qǐng)求,如“/abc/def/201309/201309_3629160.html”、“/images/xian06.gif” 等。
[0004]其次,WEB惡意掃描發(fā)出的請(qǐng)求中,錯(cuò)誤相應(yīng)碼(如,401,404等)的比例一般會(huì)較高,而正常的WEB掃描由于其目標(biāo)是獲取網(wǎng)站提供的資源,因此其請(qǐng)求中200的比例一般會(huì)較高。但是有些WEB惡意掃描會(huì)首先進(jìn)行正常的網(wǎng)頁(yè)爬取,確定網(wǎng)站結(jié)構(gòu)后,再進(jìn)行惡意內(nèi)容掃描,這樣會(huì)造成其請(qǐng)求中錯(cuò)誤相應(yīng)碼的比例下降。
[0005]再次,正常的WEB掃描一般都采用GET方法請(qǐng)求,少量爬蟲會(huì)采用HEAD方法,而有些WEB惡意掃描會(huì)采用大量HEAD方法來快速判斷網(wǎng)站是否存在目標(biāo)文件,或者采用HJT、DELETE等方法來測(cè)試網(wǎng)站是否可以修改內(nèi)容。
[0006]WEB惡意掃描檢測(cè)一般歸為WEB攻擊檢測(cè),通常是逐條檢測(cè)WEB請(qǐng)求是否攻擊后,再判斷攻擊者的整體行為是否屬于惡意掃描,一般如果攻擊次數(shù)或攻擊時(shí)長(zhǎng)超過一定閾值,就認(rèn)為攻擊行為屬于WEB惡意掃描。WEB攻擊檢測(cè)常見的方法可以分為二類:
[0007]一類是規(guī)則檢測(cè),通過攻擊規(guī)則匹配,識(shí)別針對(duì)網(wǎng)站漏洞的WEB攻擊,如SQL注入攻擊、跨站腳本攻擊等。規(guī)則檢測(cè)方法可以對(duì)WEB惡意掃描行為進(jìn)行實(shí)時(shí)檢測(cè)與攔截,但是只能檢測(cè)已知的攻擊請(qǐng)求,無法發(fā)現(xiàn)未知的攻擊請(qǐng)求。
[0008]另一類是基于正常數(shù)據(jù)的異常檢測(cè),通過對(duì)網(wǎng)站的正常訪問流量學(xué)習(xí),建立訪問白名單或正向訪問模型,只允許白名單列表中的請(qǐng)求或符合正向訪問模型的請(qǐng)求訪問。這類方法的準(zhǔn)確性極大的依賴于正常歷史數(shù)據(jù),如果沒有正常歷史數(shù)據(jù),或者正常歷史數(shù)據(jù)涵蓋的正常訪問行為種類過少,或者歷史數(shù)據(jù)中混入了攻擊數(shù)據(jù),這類方法的誤報(bào)率和漏報(bào)率都會(huì)大大升高?,F(xiàn)有的異常檢測(cè)技術(shù)中,大多屬于這一類。如《一種應(yīng)用于應(yīng)用層的web入侵防御方法及系統(tǒng)》(CN201110117191)中公開了一種應(yīng)用于應(yīng)用層的web入侵防御方法,該方法根據(jù)預(yù)設(shè)的危險(xiǎn)行為來給訪問者的行為打分,通過累加威脅值對(duì)訪問行為進(jìn)行防御。其中,預(yù)設(shè)的危險(xiǎn)行為是通過對(duì)大量的歷史正常行為學(xué)習(xí)后建立正向模型參數(shù)得到的?!斗雷o(hù)WEB攻擊的方法》(CN201410737526)中公開了一種防護(hù)Web攻擊的方法,該方法通過黑白名單混合的方法進(jìn)行攻擊防護(hù),其中白名單也是通過對(duì)正常行為學(xué)習(xí)后得到的。
【發(fā)明內(nèi)容】
[0009]針對(duì)現(xiàn)有技術(shù)存的技術(shù)問題,本發(fā)明的目的在于提供一種新型的WEB惡意掃描行為的異常檢測(cè)方法及系統(tǒng),其不依賴于正常訪問數(shù)據(jù),能夠從海量的網(wǎng)站訪問用戶中識(shí)別惡意掃描用戶。
[0010]本發(fā)明所述方法的技術(shù)方案是通過對(duì)WEB訪問歷史記錄(如WEB訪問日志)中的訪問用戶進(jìn)行關(guān)鍵詞特征與統(tǒng)計(jì)特征抽取,利用正常用戶訪問行為具有相似性以及多數(shù)性的特點(diǎn),首先根據(jù)關(guān)鍵詞特征計(jì)算用戶行為的語義異常值,再根據(jù)啟發(fā)式算法利用統(tǒng)計(jì)特征對(duì)語義異常值進(jìn)行修正,從而得到用戶的訪問異常分值,最后計(jì)算用戶異常分值的閾值,將異常分值超過閾值的用戶識(shí)別為惡意掃描用戶。
[0011]一種WEB惡意掃描行為異常檢測(cè)方法,其方法步驟包括:
[0012]I)對(duì)WEB訪問歷史記錄進(jìn)行預(yù)處理,解析WEB訪問歷史記錄,標(biāo)記知名搜索弓I擎爬蟲用戶,對(duì)每個(gè)用戶的WEB請(qǐng)求字符串進(jìn)行分詞處理,提取關(guān)鍵詞向量,同時(shí)對(duì)每個(gè)用戶的訪問行為,分別從總的訪問量、不同請(qǐng)求方法的訪問量、不同頁(yè)面類型的訪問量、不同響應(yīng)碼的訪問量四個(gè)方面統(tǒng)計(jì),得到統(tǒng)計(jì)特征向量;
[0013]2)遍歷所有用戶的關(guān)鍵詞向量,統(tǒng)計(jì)每個(gè)關(guān)鍵詞對(duì)應(yīng)的用戶數(shù)量,構(gòu)建全局關(guān)鍵詞表,表中記錄每一關(guān)鍵詞及其對(duì)應(yīng)的用戶數(shù)量;
[0014]3)根據(jù)全局關(guān)鍵詞表計(jì)算每個(gè)關(guān)鍵詞的生僻度,遍歷用戶關(guān)鍵詞向量,根據(jù)關(guān)鍵詞的生僻度計(jì)算每一用戶的原始異常分值,再根據(jù)用戶的統(tǒng)計(jì)特征向量,修正原始異常分值,得到最終異常分值;
[0015]4)對(duì)用戶最終異常分值由小到大排序構(gòu)成異常值序列,計(jì)算異常值序列的突變點(diǎn),將異常點(diǎn)對(duì)應(yīng)的最終異常分值作為閾值,如果無突變點(diǎn),則不存在閾值;
[0016]5)如果存在閾值,則判斷用戶的最終異常分值是否大于該閾值,如果是,則識(shí)別用戶為惡意掃描用戶。
[0017]更進(jìn)一步,所述WEB請(qǐng)求字符串可以為WEB請(qǐng)求中的各主要字段內(nèi)容的全部或部分,如請(qǐng)求URL、請(qǐng)求用戶代理信息USER-AGENT、請(qǐng)求BODY內(nèi)容等。
[0018]更進(jìn)一步,所述分詞處理方法如下:
[0019]將WEB請(qǐng)求字符串轉(zhuǎn)化為小寫字母,使用指定停詞符對(duì)WEB請(qǐng)求字符串進(jìn)行分解,記錄每個(gè)詞出現(xiàn)的次數(shù),構(gòu)建用戶關(guān)鍵詞向量。
[0020]更進(jìn)一步,所述指定停詞符包括但不限于””等字符。
[0021]更進(jìn)一步,所述用戶訪問行為統(tǒng)計(jì)特征向量包括用戶總的訪問次數(shù)、收到的錯(cuò)誤響應(yīng)碼次數(shù)、輔助元素訪問次數(shù)、HTTP協(xié)議中的PUT與DELETE請(qǐng)求方法次數(shù),其中輔助元素指層疊樣式表、圖片、音頻、Office文檔、PDF等文件。
[0022]更進(jìn)一步,所述用戶關(guān)鍵詞向量Ku= Kk^cki) |0彡i彡m-Ι},其中m為用戶關(guān)鍵詞的數(shù)量,h為第i個(gè)關(guān)鍵詞,Ckl為關(guān)鍵詞Ic1在用戶所有WEB請(qǐng)求字符串中出現(xiàn)的次數(shù)。
[0023]更進(jìn)一步,所述全局關(guān)鍵詞表GK = {(ki,ucki) I O彡i彡N-1, I彡ucki< Nj,其中N為所有用戶不同關(guān)鍵詞的總數(shù),uCklS關(guān)鍵詞k 1在WEB請(qǐng)求字符串中出現(xiàn)過的用戶數(shù),N u為總的用戶數(shù)。
[0024]更進(jìn)一步,所述關(guān)鍵詞生僻度的計(jì)算方法如下:
[0025]對(duì)于用戶關(guān)鍵詞向量Ku= {(k i,cki) |0彡i彡m-Ι}與全局關(guān)鍵詞表GK = Kki,ucki) N-1},1^的生僻度 Pki= Log(c ki)*Log(Nu/ucki*ucki),其中 Log(x)為自然對(duì)數(shù)函數(shù)。
[0026]更進(jìn)一步,所述用戶原始異常分值計(jì)算方法如下:
[0027]如果用戶被標(biāo)記為知名搜索引擎爬蟲,則其原始異常值為0,否則將該用戶關(guān)鍵詞向量中的所有關(guān)鍵詞的生僻度累加得到該用戶原始異常分值。
[0028]更進(jìn)一步,所述用戶最終異常分值修正方法如下:
[0029]選取修正參數(shù)Wp ^^與w 3,計(jì)算最終異常分值=原始異常分值*Exp (W1,錯(cuò)誤響應(yīng)碼的次數(shù)/總的訪問次數(shù))*Exp (w2,輔助元素訪問次數(shù)/總的訪問次數(shù))+w3*PUT與DELETE方法的次數(shù)/總的訪問次數(shù),其中Exp (a, b)為指數(shù)函數(shù),a為底數(shù),b為指數(shù)。
[0030]更進(jìn)一步,所述異常值序列的突變點(diǎn)的計(jì)算方法如下:
[0031]選擇突變參數(shù)T,對(duì)于序列SA = {>彡i彡Nu-1, a ^ α 1+1},計(jì)算序列SB ={β」0彡j彡Nu_2},其中如果a.j+1-a.j>T,則β ,= α』+1-α』,否則Pj=O0對(duì)于序列SB,計(jì)算序列SC = { γ k 1彡k彡Nu