專利名稱:一種跨站腳本攻擊的檢測方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)安全技術(shù)區(qū)域,具體涉及一種跨站腳本攻擊的檢測方法和裝置。
背景技術(shù):
網(wǎng)絡(luò)中的各種終端瀏覽器如IE、FireFoX、MyIE等,它們負責在用戶輸入URL或者 點擊某個鏈接之后向Web服務(wù)器發(fā)送HTTP的請求(常見的如GET、POST),Web服務(wù)器在 接收到HTTP請求之后,會執(zhí)行相應(yīng)的操作,典型的是返回所請求的頁面,在這些返回的頁 面中,常常會夾雜著惡意的跨站腳本,這些腳本一旦返回給終端的瀏覽器,就會對用戶的終 端實施不同程度的攻擊,如盜取用戶賬號、盜取用戶硬盤上的敏感信息等,這種攻擊非常常 見,被稱作跨站腳本攻擊(Cross Site Scripting,簡稱為XSS)??缯灸_本攻擊的實施步驟 比較繁瑣,與其它類型的攻擊相比,跨站腳本攻擊屬于間接攻擊(或稱為被動攻擊),如圖1 所示,攻擊者往往是通過首先誘使受害者訪問由攻擊者事先精心構(gòu)造好的一個不易辨認的 有害鏈接,受害者在點擊了該鏈接之后會訪問攻擊者安排好的惡意網(wǎng)站,或者受害者在點 擊了該鏈接之后,事先安排好的還有惡意腳本的網(wǎng)頁會返回到客戶的瀏覽器,此時網(wǎng)頁中 的惡意腳本會自動執(zhí)行,從而完成對受害者的攻擊。近年來隨著Web應(yīng)用的大量普及,更多 的應(yīng)用和商業(yè)活動依賴于Web系統(tǒng)展開,Web安全問題也越來越突出,在這些紛繁復雜的安 全問題中,跨站腳本攻擊一直是位居前列且急需解決的Web安全問題,目前大多數(shù)的解決 辦法只能在攻擊者將跨站腳本注入到頁面中的行為進行檢測,而對大量存在的、已經(jīng)被成 功注入了跨站腳本的頁面,在用戶訪問這些有害頁面的過程中,卻無法實施有效的檢測,因 為頁面本身就自帶大量的腳本,這些腳本與攻擊者注入的跨站腳本混在一起,難于區(qū)分,因 此也就很難檢測?,F(xiàn)有的一種應(yīng)用于Web Server設(shè)備上的用于防止跨站攻擊的方案,是通過在Web Server端對HTTP請求進行分析和過濾,主要是對請求的頁面進行網(wǎng)頁入口點的判斷和授 權(quán)的驗證。這種方式雖然能對由客戶端發(fā)起的反射式跨站腳本攻擊起到一定的檢測作用, 但是如果該網(wǎng)頁沒有授權(quán)認證,或者當用戶訪問一個網(wǎng)頁的時候,該網(wǎng)頁已經(jīng)包含了惡意 腳本,即存儲式跨站腳本攻擊時,該方案就不再適用,但是這種情況在跨站腳本攻擊當中又 占了絕大多數(shù)的比例。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種跨站腳本攻擊的檢測方法和裝置,能夠在網(wǎng) 絡(luò)安全監(jiān)測設(shè)備或者網(wǎng)絡(luò)終端上識別與提取頁面中夾帶的跨站攻擊腳本,同時又避免了頁 面中自身攜帶的合法的腳本被誤殺。為了解決上述技術(shù)問題,本發(fā)明提出一種跨站腳本攻擊的檢測方法,包括a、對于捕獲到的HTTP返回頁面,找到其中的活躍標簽;將所捕獲的HTTP返回頁面 中包括該活躍標簽在內(nèi)的各層標簽的概率P取倒數(shù)之后相加,并求出算術(shù)平均值作為所述 活躍標簽的內(nèi)嵌JavaScript合理指數(shù)EJSRF ;提取出各活躍標簽內(nèi)的JavaScript腳本;所
4述活躍標簽是與JavaScript腳本之間不存在其它HTML標簽的HTML標簽,所述標簽的概率 P為該標簽內(nèi)直接出現(xiàn)JavaScript腳本的概率;b、對提取出的JavaScript腳本進行編碼還原,得到該JavaScript腳本被編碼 的字節(jié)數(shù)量EBN ;進行語義還原,得到該JavaScript腳本中使用字符串變量的次數(shù)SDN ; 將經(jīng)過編碼和語義還原的JavaScript腳本與預設(shè)的跨站腳本攻擊特征進行匹配,得出該 JavaScript腳本的特征匹配程度SMD ;C、將所述EJSRF、EBN, SDN和SMD加權(quán)相加,將相加得到的和與預定的閾值進行 比較,如果計算結(jié)果超過了給定的閾值,則判定所捕獲到的HTTP返回頁面包含跨站腳本攻
擊ο進一步地,上述方法還可具有以下特點所述步驟a具體包括al、存儲各HTTP標簽的統(tǒng)計信息,包括該HTML標簽的出現(xiàn)次數(shù)N、該HTML標簽作 為活躍標簽出現(xiàn)的次數(shù)M ;a2、捕獲到的HTTP返回頁面后,按照嵌套的順序從外向內(nèi)依次提取所捕獲的HTTP 返回頁面中的一個HTML標簽;如果所有標簽都已提取完,則執(zhí)行步驟b ;a3、將該標簽的N加1 ;如果該標簽直接嵌套了 JavaScript腳本,將該標簽的M加 1,記錄該標簽Tag的嵌套層次NL,提取該標簽中的JavaScript腳本,然后執(zhí)行步驟a4 ;否 則返回步驟a2;a4、將該標簽的概率P的倒數(shù),和所捕獲的HTTP返回頁面中位于該標簽外的各層 標簽的概率P的倒數(shù)累加,然后求出累加所得的和的算數(shù)平均值作為該標簽的EJSRF ;所述 標簽的概率P的倒數(shù)為該標簽的N除以M ;當沒有概率P為0的標簽時,除數(shù)為該標簽的NL, 否則除數(shù)為該標簽的NL減去概率P為0的標簽的個數(shù)。進一步地,上述方法還可具有以下特點所述步驟b具體包括bl、首先對提取出的JavaScript腳本進行逐字符的編碼還原,把通過16進制或10 進制編碼轉(zhuǎn)換的JavaScript腳本轉(zhuǎn)換成編碼前的腳本,得到被編碼的字符數(shù)量EBN ;b2、對經(jīng)過步驟bl編碼還原之后的JavaScript腳本進行語義還原,代入字符串常 量或字符串變量的語義以還原進行過字符串拼接的語句,得到對字符串拼接的次數(shù)SDN ;b3、將經(jīng)過編碼還原和語義轉(zhuǎn)換后的JavaScript腳本與一預定的XSS攻擊特征數(shù) 據(jù)庫中的XSS攻擊特征進行比對,得出該JavaScript腳本的SMD。進一步地,上述方法還可具有以下特點所述步驟b3中將所述JavaScript腳本所匹配的所有XSS攻擊特征的權(quán)重相加;各XSS攻擊特征 的權(quán)重分別為1到10中的一個值,包括1和10。進一步地,上述方法還可具有以下特點EJSRF、EBN、SDN 和 SMD 的權(quán)重分別為 0. 4,0. 3,0. 2 禾口 0. 1。為了解決上述技術(shù)問題,本發(fā)明還提出一種跨站腳本攻擊的檢測裝置,包括指數(shù)計算單元,用于將所捕獲的HTTP返回頁面中包括所述活躍標簽在內(nèi)的各層 標簽的概率P取倒數(shù)之后相加,并求出算術(shù)平均值作為所述活躍標簽的內(nèi)嵌JavaScript合
5理指數(shù)EJSRF ;所述活躍標簽是與JavaScript腳本之間不存在其它HTML標簽的HTML標簽; 所述標簽的概率P為該標簽內(nèi)直接出現(xiàn)JavaScript腳本的概率;提取單元,用于對于捕獲到的HTTP返回頁面,找到其中的活躍標簽并通知所述指 數(shù)計算單元;提取出各活躍標簽內(nèi)的JavaScript腳本;編碼還原單元,用于對提取出的JavaScript腳本進行編碼還原,得到該 JavaScript腳本被編碼的字節(jié)數(shù)量EBN ;語義還原單元,用于對編碼還原后的JavaScript腳本進行語義還原,得到該 JavaScript腳本中使用字符串變量的次數(shù)SDN ;匹配程度計算單元,將經(jīng)過編碼和語義還原的JavaScript腳本與預設(shè)的跨站腳 本攻擊特征進行匹配,得到該JavaScript腳本的特征匹配程度SMD ;判斷單元,用于將所述EJSRF、EBN、SDN和SMD加權(quán)相加,將相加得到的和與預定的 閾值進行比較,如果計算結(jié)果超過了給定的閾值,則判定所捕獲到的HTTP返回頁面包含跨 站腳本攻擊。進一步地,上述裝置還可具有以下特點所述提取單元具體包括存儲模塊,用于存儲各HTTP標簽的統(tǒng)計信息,包括該HTML標簽的出現(xiàn)次數(shù)N、該 HTML標簽作為活躍標簽出現(xiàn)的次數(shù)M ;活躍標簽識別模塊,用于按照嵌套的順序從外向內(nèi)依次提取所捕獲的HTTP返 回頁面中的一個HTML標簽,將存儲模塊中該標簽的N加1 ;如果該標簽直接嵌套了 JavaScript腳本,則將存儲模塊中該標簽的M加1,在存儲模塊中記錄該標簽Tag的嵌套層 次NL,提取該標簽中的JavaScript腳本放入所述存儲模塊,并通知所述指數(shù)計算單元該標 簽為活躍標簽;否則提取下一個標簽;所述指數(shù)計算單元計算所述算數(shù)平均值時,從所述存儲模塊中讀取所述活躍標簽 M和N,以及所捕獲的HTTP返回頁面中位于該標簽外的各層標簽的M和N,將所讀取的各標 簽的N分別除以M后進行累加作為被除數(shù);當沒有概率P為0的標簽時,將所述活躍標簽的 NL作為除數(shù),否則將所述活躍標簽的NL減去概率P為0的標簽的個數(shù)后作為除數(shù)。進一步地,上述裝置還可具有以下特點所述編碼還原單元對JavaScript腳本進行編碼還原是指將通過16進制或10進 制編碼轉(zhuǎn)換的JavaScript腳本逐字符的轉(zhuǎn)換成編碼前的腳本;所述語義還原單元對JavaScript腳本進行語義還原是指代入字符串常量或字符 串變量的語義以還原進行過字符串拼接的語句;所述匹配程度計算單元將JavaScript腳本與預設(shè)的跨站腳本攻擊特征進行匹配 是指將JavaScript腳本與一預定的XSS攻擊特征數(shù)據(jù)庫中的XSS攻擊特征進行比對。進一步地,上述裝置還可具有以下特點所述匹配程度計算單元得到JavaScript腳本的特征匹配程度SMD是指將所述 JavaScript腳本所匹配的所有XSS攻擊特征的權(quán)重相加;各XSS攻擊特征的權(quán)重分別為1 到10中的一個值,包括1和10。進一步地,上述裝置還可具有以下特點判斷單元將所述EJSRF, EBN, SDN和SMD加權(quán)相加時,EJSRF, EBN, SDN和SMD的權(quán)
6重分別為0. 4,0. 3,0. 2和0. 1。本發(fā)明的技術(shù)方案解決了傳統(tǒng)上無法或很難對頁面中夾雜的跨站腳本進行發(fā)現(xiàn)、 識別的難題,采用綜合HTML標簽分析分析的方法(包括標簽的EJSRF分析、JavaScript編 碼變形分析、JavaScript語義變性分析、XSS攻擊特征模式匹配這4種方法)對Web頁面中 夾帶的惡意跨站腳本進行識別、提取。這種以HTML標簽分析為核心的跨站腳本識別與提取 技術(shù)能夠高效準確地區(qū)分Web頁面中正常的JavaScript與惡意的跨站腳本,使得網(wǎng)絡(luò)安全 檢測設(shè)備和網(wǎng)絡(luò)終端能夠精確識別、過濾含有惡意跨站腳本的Web頁面,同時又能夠保證 合法的(沒有夾雜惡意跨站腳本)的Web頁面正常通過。
圖1為XSS的攻擊場景示意圖;圖2為實施例一的跨站腳本攻擊的檢測方法的具體實施流程圖;圖3為實施例二的跨站腳本攻擊的檢測裝置的具體實施框圖。
具體實施例方式下面將結(jié)合附圖及實施例對本發(fā)明的技術(shù)方案進行更詳細的說明。實施例一,一種跨站腳本攻擊的檢測方法,如圖2所示,包括a、對于捕獲到的HTTP返回頁面,找到其中的活躍標簽(Active Tag,縮寫為AT); 將所捕獲的HTTP返回頁面中包括該活躍標簽在內(nèi)的各層標簽的概率P取倒數(shù)之后相加,并 求出算術(shù)平均值作為所述活躍標簽的內(nèi)嵌JavaScript合理指數(shù)EJSRF ;提取出各活躍標簽 內(nèi)的JavaScript腳本;其中,所述活躍標簽是與JavaScript腳本之間不存在其它HTML標簽的HTML標 簽,所述標簽的概率P為該標簽內(nèi)直接出現(xiàn)JavaScript腳本的概率;b、對提取出的JavaScript腳本進行編碼還原,得到該JavaScript腳本被編碼 的字節(jié)數(shù)量EBN(Encoding Bytes Number);進行語義還原,得到該JavaScript腳本中利 用語義變形的方式進行字符串拼接的次數(shù)(即字符串變量被使用的次數(shù))SDN(Semantic Deform Numbe)進行統(tǒng)計;將經(jīng)過編碼和語義還原后的JavaScript腳本與預設(shè)的XSS攻擊 特征進行匹配,得出該JavaScript腳本的特征匹配程度SMD(JavaScript Signature Match Degree);c、將所述EJSRF、EBN、SDN和SMD加權(quán)相加,并將相加得到的和與預定的閾值進行 比較,如果計算結(jié)果超過了給定的閾值,則判定所述提取出的JavaScript腳本是惡意的跨 站腳本,而所捕獲的HTTP返回頁面中包含XSS攻擊;否則認為該JavaScript腳本是合法 的,是Web頁面自帶的安全的JavaScript腳本,而所捕獲的HTTP返回頁面合法。對每個捕獲到的HTTP返回頁面進行上述步驟a到c即可檢測HTTP返回頁面中是 否包含XSS攻擊;對不同的HTTP返回頁面可以并行進行上述步驟,另外在進行步驟b前提 取出JavaScript腳本即可,計算EJSRF的步驟可以和步驟b并行。本實施例中,所述概率P是通過對大量的HTTP返回頁面進行學習得到的,具體說 是統(tǒng)計出各HTTP返回頁面中各種HTML標簽出現(xiàn)次數(shù)N,同時統(tǒng)計出每種標簽內(nèi)直接包含 JavaScript腳本的次數(shù)M,由M/N計算出每種HTML標簽內(nèi)直接出現(xiàn)JavaScript腳本的可
7能性,即各種HTML標簽的概率P。例如總共學習了 100個HTML頁面,其中<Font>標簽出現(xiàn)了 10000次,在這出現(xiàn)的 10000次<Font>標簽中,有1000個<Font>標簽中直接出現(xiàn)了 JavaScript,那么,就得到 <Font> 標簽直接內(nèi)嵌 JavaScript 的概率為 P = 1000/10000 = 0.1o這里,HTML標簽內(nèi)直接包含JavaScript腳本是指JavaScript腳本直接出現(xiàn)在 了該HTML標簽之內(nèi),也就是說,在該HTML標簽與JavaScript腳本之間不能存在其它的 HTML標簽,該HTML標簽即所述活躍標簽;對于活躍標簽,需要記錄下該標簽所在的嵌套層 次(Nest Level,縮寫為NL),即該標簽為所在HTTP返回頁面中的第幾層標簽,也就是所在 HTTP返回頁面中位于該標簽外的標簽的層數(shù)加1。本實施例中,可以在計算HTTP返回頁面中的活躍標簽的EJSRF的同時,更新該 HTTP返回頁面中出現(xiàn)的各標簽的統(tǒng)計信息,從而可動態(tài)更新這些標簽的概率P,以提高準 確度;所述步驟a具體包括al、建一個HTML標簽緩沖區(qū),此緩沖區(qū)存儲所有已知的HTTP返回頁面中的HTTP 標簽的統(tǒng)計信息,可以分別用不同緩沖區(qū)單元存儲不同HTTP標簽的統(tǒng)計信息;一個HTTP標 簽的統(tǒng)計信息包括該HTML標簽的出現(xiàn)次數(shù)N、該HTML標簽作為活躍標簽(AT)出現(xiàn)的次數(shù) (即直接包含JavaScript腳本的次數(shù))M、該標簽所在的嵌套層次(NL)等屬性;a2、捕獲到的HTTP返回頁面后,按照嵌套的順序從外向內(nèi)依次提取所捕獲的HTTP 返回頁面中的一個HTML標簽Tag ;如果所有標簽都已提取完,則執(zhí)行步驟b ;a3、將與該標簽Tag對應(yīng)的HTML標簽緩沖區(qū)單元中統(tǒng)計信息里的出現(xiàn)次數(shù)N加1, 如果該標簽Tag是活躍標簽(AT),還需要將所述統(tǒng)計信息里該標簽Tag作為活躍標簽(AT) 出現(xiàn)的次數(shù)M加1,并記錄該標簽Tag的嵌套層次NL,提取該標簽中的JavaScript腳本,然 后執(zhí)行步驟a4 ;如果該標簽Tag不是活躍標簽(AT),那么返回步驟a2 ;a4、將該HTML標簽的概率P的倒數(shù),和所捕獲的HTTP返回頁面中位于該HTML標 簽外的各層標簽的概率P的倒數(shù)累加,然后求出累加所得的和的算數(shù)平均值作為該HTML標 簽的EJSRF ;所述標簽的概率P的倒數(shù)為該標簽的N除以M ;當沒有概率P為0的標簽時,除 數(shù)為該HTML標簽的NL,否則除數(shù)為該HTML標簽的NL減去概率P為0的標簽的個數(shù)。實際應(yīng)用中,當網(wǎng)絡(luò)情況較穩(wěn)定時,也不排除當對大量HTTP返回頁面進行學習并 得到統(tǒng)計信息及概率P后,在計算活躍標簽的EJSRF時不進行變動;這樣計算活躍標簽的 EJSRF時只需要進行上述步驟a2、a4以及a3中提取活躍標簽中的JavaScript腳本的部分 即可,即不更新統(tǒng)計信息,以降低實現(xiàn)復雜度。本實施例中,所述步驟al中構(gòu)建的HTML標簽緩沖區(qū)為線性緩沖區(qū),允許容納的最大HTML標簽數(shù)量是固定的, 當要存儲的HTML標簽數(shù)量超過最大緩沖區(qū)單元數(shù)量時,新的HTML標簽將被丟棄。本實施例中,所述步驟a2中為了能夠?qū)Ξ斍皹撕炦M行分析,對于每個HTTP返回頁面,構(gòu)建一個存儲當前標簽 的嵌套棧,該嵌套棧的棧頂為當前正在分析的標簽,從棧頂至棧底依次是當前標簽、前標 簽的上一級標簽、當前標簽的上兩級標簽......HTTP返回頁面的第一層標簽。每次在HTTP返回頁面提取到一個新的標簽,都要將該標簽壓入到所述標簽的嵌 套棧中,對該標簽分析完成之后(即遇到了該標簽的結(jié)束標識),都要將該標簽從標簽的嵌
8套棧中彈出,如果頁面不存在錯誤,當分析完一個HTTP返回頁面之后,標簽的嵌套棧應(yīng)該 正好為空。本實施例中,所述步驟a3具體包括31、首先將與該標簽Tag對應(yīng)的HTML標簽緩沖區(qū)單元中統(tǒng)計信息里的出現(xiàn)次數(shù) N加1;從該標簽Tag的內(nèi)容部分(即標簽頭加上空格之后的部分)開始分析,如果遇到了 JavaScript腳本的起始標簽〈script〉或〈script,則認為該標簽內(nèi)直接嵌套了 JavaScript 腳本,此時認定該標簽是活躍標簽(AT),否則,認為該標簽不是活躍標簽;32、如果該標簽是活躍標簽(AT),則將所述統(tǒng)計信息里該標簽Tag作為活躍標簽
(AT)出現(xiàn)的次數(shù)M加1,并記錄該標簽Tag的嵌套層次NL,并將夾在〈script〉......</
script)或〈script. . . />之間的JavaScript內(nèi)容緩存到JSP緩沖區(qū)中,同時需要記錄下所 緩存的JavaScript腳本的字節(jié)數(shù)。本實施例中,所述步驟a4中,先根據(jù)HTML標簽出現(xiàn)的總次數(shù)N、各個HTML標簽作 為活躍標簽(AT)出現(xiàn)的次數(shù)M,計算出各個HTML標簽作為活躍標簽出現(xiàn)(即標簽內(nèi)直接包
含JavaScript腳本)的概率P,例如,如果統(tǒng)計得到<font>......</font>標簽一共出現(xiàn)了
100次,其中作為活躍標簽出現(xiàn)的次數(shù)為1次,那么<font>......</font>標簽作為活躍標
簽出現(xiàn)的概率P就是10Z0,將該概率P記錄到HTML標簽緩沖區(qū)的<font>......</font>標
簽單元中;將所提取的標簽壓入標簽的嵌套棧中,然后計算該AT的EJSRF。例如,如果當前正 在分析的活躍標簽為<font>......</font>標簽,其嵌套關(guān)系為<HTML><B0DY><TABLE><TR><TD><F0NT>〈SCRIPT〉...〈/SCRIPT〉</F0NT></TD></TR></TABLE></B0DY></HTML>那么在標簽的嵌套棧中,從棧頂?shù)綏5姿4娴臉撕炓来问?lt;F0NT>、<TD>、<TR>、
〈TABLE〉、<B0DY>、<HTML>,在計算<F0NT>......</F0NT>標簽的EJSRF的時候,需要將標簽
的嵌套棧中的所有HTML標簽的作為活躍標簽出現(xiàn)概率P的數(shù)值取倒數(shù)后相加,求得算數(shù)平 均數(shù)作為EJSRF ;需要注意的是,如果某個HTML標簽作為活躍標簽出現(xiàn)的概率P是0,那么 此HTML標簽不參與此次計算,例如,如果<HTML>標簽作為AT出現(xiàn)的概率P是0、<B0DY>標
9簽作為AT出現(xiàn)的概率P是98%,<TABLE>標簽作為AT出現(xiàn)的概率P是30%,<TR>標簽作 為AT出現(xiàn)的概率P是70%,<TD>標簽作為AT出現(xiàn)的概率P是40%,<F0NT>標簽作為AT 出現(xiàn)的概率P是1 %,那么計算出<F0NT>標簽的EJSRF的值就是(100/98+100/30+100/70+100/40+100/1)/5 = 21. 66。其中,當沒有概率P為0的標簽時,計算EJSRF時需要累加的所述倒數(shù)的個數(shù),也 就是除數(shù)為NL ;如果存在概率P為0的標簽,則計算EJSRF時需要累加的倒數(shù)的個數(shù)(即
除數(shù))為NL減去概率P為0的標簽的個數(shù);比如標簽<F0NT>......</F0NT>的NL為6,存
在一個概率P為0的標簽,因此是將5個所述倒數(shù)相加,并除以5得到標簽<F0NT>......</
FONT〉的 EJSRF。本實施例中,所述步驟b是分析活躍標簽(AT)內(nèi)的JavaScript腳本的可疑變 形程度,即對該腳本的編碼變形、語義變換程度進行分析,并給出具體的可疑變形分值 (Suspicious Deform Value,縮寫為 SDV);可以預先構(gòu)建一跨站腳本攻擊特征庫(XSS Signature DataBase,縮寫為XSSDB), 將所有可收集到的XSS攻擊特征添加到XSSDB之中;對活躍標簽(AT)內(nèi)的JavaScript進行編碼和語義還原,將該JavaScript還原為 未變形的等價編碼與語義,然后再將還原后的JavaScript與XSSDB中的XSS攻擊特征進 行對比,根據(jù)匹配程度,給出該JavaScript腳本的特征匹配程度(JavaScript Signature Match Degree,縮寫為 SMD)。本實施例中,所述步驟b具體包括bl、首先對提取出的JavaScript腳本進行逐字符的編碼還原,把通過16進制或10 進制編碼轉(zhuǎn)換的JavaScript腳本轉(zhuǎn)換成編碼前的腳本,同時統(tǒng)計被編碼的字符數(shù)量EBN ;比如AT內(nèi)的JavaScript是如下的一段腳本% 3Cscript% 3Ealert% 28document. cookie% 29% 3C% 2Fscript% 3E將該JavaScript腳本進行編碼還原,使該JavaScript腳本內(nèi)的所有字符都還原 成可打印的ASCII字符如下<script>alert(document, cookie)</script)可以看出,在這段JavaScript中,采用了 16進制編碼對特殊字符<>()/進行了 編碼,并且被編碼的字符的個數(shù)是5,那么,就可以得出該JavaScript腳本的EBN為5。b2、其次對經(jīng)過步驟bl編碼還原之后的JavaScript腳本進行語義還原,將通過字 符串常量或字符串變量進行字符串拼接的語句進行語義分析,代入字符串常量或字符串變 量的語義以還原出拼接之后的字符串,并用拼接之后的字符串替代原腳本中的語句,同時 對這種利用語義變形的方式進行字符串拼接的次數(shù)(字符串變量被使用的次數(shù))SDN進行 統(tǒng)計。比如AT內(nèi)的JavaScript是如下的一段腳本〈script〉var url = “ http://www.hacker.com";var doc = “ document “var Ioc = “ location";var src = eval (doc+" . 〃 +loc);
10
src. href = url ;〈/script〉對這段JavaScript進行語義還原,記錄各變量的語義,并將各變量用其語義替代 后得到的腳本如下〈script〉document, location, href = “ http://www.hacker.com";〈/script〉可以看出,該腳本對字符串進行了拼接,通過3個字符串變量拼接出了一個字符 串賦值語句,并且每個字符串變量在定義的時候都用字符串常量進行了初始化,其中,字符 串變量url被使用了 1次,字符串變量doc被使用了 1次,字符串變量Ioc被使用了 1次, 字符串變量src被使用了 1次,所以得到該JavaScript腳本的SDN為1+1+1+1 = 4。b3、將經(jīng)過編碼還原和語義轉(zhuǎn)換后的JavaScript與XSSDB中的XSS攻擊特征進行 比對,得出該JavaScript腳本的SMD。假設(shè)XSSDB攻擊特征庫中的特征的描述如下<signature><rule>......</rule><right>......</right></signature>其中<rule>......</rule>中的字符串即為XSS攻擊特征,如<rule>document. cookie</rule><right>......</right>中存放的是該特征的權(quán)重,取值從1至10,包括1和10,
如<right>7. 5</right>然后將該JavaScript所匹配的所有特征的權(quán)重相加,例如,匹配上了三個特征, 這三個特征的權(quán)重分別為7. 5,6. 0,8. 0,那么就可以得出該JavaScript腳本的XSSDB匹配 度SMD為SMD = 7. 5+6. 0+8. 0 = 21. 5本實施例中,所述步驟b還可以包括步驟根據(jù)JavaScript腳本的EBN與SDN加權(quán)得出該JavaScript腳本的SDV。相應(yīng)的在步驟c中,是用根據(jù)JavaScript腳本的EJSRF、SDV和SMD加權(quán)相加得到 的結(jié)果與所述閾值比較,來判斷該JavaScript腳本是否為惡意的。本實施例中,所述步驟c中加權(quán)相加后得出JavaScript腳本的XSS攻擊可能性分 值 XAS (XSS Attacks Score),XAS 的計算方法如下XAS = Alpha X EJSRF+Beta X EBN+Gama X SDN+Delta X SMD ;其中,Alpha+Beta+Gama+Delta = 1。Alpha為EJSRF的權(quán)重系數(shù),在大多數(shù)情況下,EJSRF作為整個系統(tǒng)判斷XSS攻擊 的最重要的系數(shù),本實施例中其值大于0. 4 ;Beta為EBN的權(quán)重系數(shù),EBN作為判斷XSS攻擊的僅次于EJSRF的影響因素,本實 施例中其值大于0.3;
11
Gama為SDN的權(quán)重系數(shù),由于SDN在判斷XSS攻擊過程中的重要性僅次于EBN,本 實施例中其值大于0.2;Delta為SMD的權(quán)重系數(shù),由于SMD在判斷XSS中的重要程度最低,本實施例中其 值不超過0. 1。本實施例的一種實施方式中,Alpha= 0. 4、Beta = 0. 3、Gama = 0. 2、Delta = 0. 1 ;實際應(yīng)用中可以根據(jù)實際情況和需求更改。如果計算出來的XAS大于預設(shè)的閥值,就認為該JavaScript是攻擊者注入的惡意 跨站腳本,否則,認為該JavaScript是Web頁面自帶的安全的JavaScript。實施例二,一種跨站腳本攻擊的檢測裝置,如圖3所示,包括指數(shù)計算單元,用于將所捕獲的HTTP返回頁面中包括所述活躍標簽在內(nèi)的各層 標簽的概率P取倒數(shù)之后相加,并求出算術(shù)平均值作為所述活躍標簽的內(nèi)嵌JavaScript合 理指數(shù)EJSRF ;所述活躍標簽是與JavaScript腳本之間不存在其它HTML標簽的HTML標簽; 所述標簽的概率P為該標簽內(nèi)直接出現(xiàn)JavaScript腳本的概率;提取單元,用于對于捕獲到的HTTP返回頁面,找到其中的活躍標簽并通知所述指 數(shù)計算單元;提取出各活躍標簽內(nèi)的JavaScript腳本;編碼還原單元,用于對提取出的JavaScript腳本進行編碼還原,得到該 JavaScript腳本被編碼的字節(jié)數(shù)量EBN ;語義還原單元,用于對編碼還原后的JavaScript腳本進行語義還原,得到該 JavaScript腳本中使用字符串變量的次數(shù)SDN ;匹配程度計算單元,將經(jīng)過編碼和語義還原的JavaScript腳本與預設(shè)的跨站腳 本攻擊特征進行匹配,得到該JavaScript腳本的特征匹配程度SMD ;判斷單元,用于將所述EJSRF、EBN、SDN和SMD加權(quán)相加,將相加得到的和與預定的 閾值進行比較,如果計算結(jié)果超過了給定的閾值,則判定所捕獲到的HTTP返回頁面包含跨 站腳本攻擊。本實施例中,所述提取單元具體包括存儲模塊,用于存儲各HTTP標簽的統(tǒng)計信息,包括該HTML標簽的出現(xiàn)次數(shù)N、該 HTML標簽作為活躍標簽出現(xiàn)的次數(shù)M ;活躍標簽識別模塊,用于按照嵌套的順序從外向內(nèi)依次提取所捕獲的HTTP返 回頁面中的一個HTML標簽,將存儲模塊中該標簽的N加1 ;如果該標簽直接嵌套了 JavaScript腳本,則將存儲模塊中該標簽的M加1,在存儲模塊中記錄該標簽Tag的嵌套層 次NL,提取該標簽中的JavaScript腳本放入所述存儲模塊,并通知所述指數(shù)計算單元該標 簽為活躍標簽;否則提取下一個標簽;所述指數(shù)計算單元計算所述算數(shù)平均值時,從所述存儲模塊中讀取所述活躍標簽 M和N,以及所捕獲的HTTP返回頁面中位于該標簽外的各層標簽的M和N,將所讀取的各標 簽的N分別除以M(即概率P的倒數(shù))后進行累加作為被除數(shù);當沒有概率P為0的標簽 時,將所述活躍標簽的NL作為除數(shù),否則將所述活躍標簽的NL減去概率P為0的標簽的個 數(shù)后作為除數(shù)。本實施例中,所述編碼還原單元對JavaScript腳本進行編碼還原是指將通過16 進制或10進制編碼轉(zhuǎn)換的JavaScript腳本逐字符的轉(zhuǎn)換成編碼前的腳本;
所述語義還原單元對JavaScript腳本進行語義還原是指代入字符串常量或字符 串變量的語義以還原進行過字符串拼接的語句;所述匹配程度計算單元將JavaScript腳本與預設(shè)的跨站腳本攻擊特征進行匹配 是指將JavaScript腳本與一預定的XSS攻擊特征數(shù)據(jù)庫中的XSS攻擊特征進行比對。本實施例中,所述匹配程度計算單元得到JavaScript腳本的特征匹配程度SMD是 指將所述JavaScript腳本所匹配的所有XSS攻擊特征的權(quán)重相加;各XSS攻擊特征的權(quán)重 分別為1到10中的一個值,包括1和10。本實施例中,判斷單元將所述EJSRF、EBN、SDN和SMD加權(quán)相加時,EJSRF、EBN、SDN 和SMD的權(quán)重分別為0. 4、0. 3、0. 2和0. 1。其它實現(xiàn)細節(jié)可以同實施例一中相同。當然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟 悉本領(lǐng)域的技術(shù)人員當可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變 形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護范圍。
1權(quán)利要求
一種跨站腳本攻擊的檢測方法,包括a、對于捕獲到的HTTP返回頁面,找到其中的活躍標簽;將所捕獲的HTTP返回頁面中包括該活躍標簽在內(nèi)的各層標簽的概率P取倒數(shù)之后相加,并求出算術(shù)平均值作為所述活躍標簽的內(nèi)嵌JavaScript合理指數(shù)EJSRF;提取出各活躍標簽內(nèi)的JavaScript腳本;所述活躍標簽是與JavaScript腳本之間不存在其它HTML標簽的HTML標簽,所述標簽的概率P為該標簽內(nèi)直接出現(xiàn)JavaScript腳本的概率;b、對提取出的JavaScript腳本進行編碼還原,得到該JavaScript腳本被編碼的字節(jié)數(shù)量EBN;進行語義還原,得到該JavaScript腳本中使用字符串變量的次數(shù)SDN;將經(jīng)過編碼和語義還原的JavaScript腳本與預設(shè)的跨站腳本攻擊特征進行匹配,得出該JavaScript腳本的特征匹配程度SMD;c、將所述EJSRF、EBN、SDN和SMD加權(quán)相加,將相加得到的和與預定的閾值進行比較,如果計算結(jié)果超過了給定的閾值,則判定所捕獲到的HTTP返回頁面包含跨站腳本攻擊。
2.如權(quán)利要求1所述的方法,其特征在于,所述步驟a具體包括al、存儲各HTTP標簽的統(tǒng)計信息,包括該HTML標簽的出現(xiàn)次數(shù)N、該HTML標簽作為活 躍標簽出現(xiàn)的次數(shù)M ;a2、捕獲到的HTTP返回頁面后,按照嵌套的順序從外向內(nèi)依次提取所捕獲的HTTP返回 頁面中的一個HTML標簽;如果所有標簽都已提取完,則執(zhí)行步驟b ;a3、將該標簽的N加1 ;如果該標簽直接嵌套了 JavaScript腳本,將該標簽的M加1,記 錄該標簽Tag的嵌套層次NL,提取該標簽中的JavaScript腳本,然后執(zhí)行步驟a4 ;否則返 回步驟a2 ;a4、將該標簽的概率P的倒數(shù),和所捕獲的HTTP返回頁面中位于該標簽外的各層標簽 的概率P的倒數(shù)累加,然后求出累加所得的和的算數(shù)平均值作為該標簽的EJSRF ;所述標簽 的概率P的倒數(shù)為該標簽的N除以M ;當沒有概率P為0的標簽時,除數(shù)為該標簽的NL,否 則除數(shù)為該標簽的NL減去概率P為0的標簽的個數(shù)。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述步驟b具體包括bl、首先對提取出的JavaScript腳本進行逐字符的編碼還原,把通過16進制或10進 制編碼轉(zhuǎn)換的JavaScript腳本轉(zhuǎn)換成編碼前的腳本,得到被編碼的字符數(shù)量EBN ;b2、對經(jīng)過步驟b 1編碼還原之后的JavaScript腳本進行語義還原,代入字符串常量或 字符串變量的語義以還原進行過字符串拼接的語句,得到對字符串拼接的次數(shù)SDN ;b3、將經(jīng)過編碼還原和語義轉(zhuǎn)換后的JavaScript腳本與一預定的XSS攻擊特征數(shù)據(jù)庫 中的XSS攻擊特征進行比對,得出該JavaScript腳本的SMD。
4.如權(quán)利要求3所述的方法,其特征在于,所述步驟b3中將所述JavaScript腳本所匹配的所有XSS攻擊特征的權(quán)重相加;各XSS攻擊特征的權(quán) 重分別為1到10中的一個值,包括1和10。
5.如權(quán)利要求1或2所述的方法,其特征在于EJSRF、EBN、SDN 和 SMD 的權(quán)重分別為 0. 4,0. 3,0. 2 禾口 0. 1。
6.一種跨站腳本攻擊的檢測裝置,其特征在于,包括指數(shù)計算單元,用于將所捕獲的HTTP返回頁面中包括所述活躍標簽在內(nèi)的各層標簽 的概率P取倒數(shù)之后相加,并求出算術(shù)平均值作為所述活躍標簽的內(nèi)嵌JavaScript合理指數(shù)EJSRF ;所述活躍標簽是與JavaScript腳本之間不存在其它HTML標簽的HTML標簽;所 述標簽的概率P為該標簽內(nèi)直接出現(xiàn)JavaScript腳本的概率;提取單元,用于對于捕獲到的HTTP返回頁面,找到其中的活躍標簽并通知所述指數(shù)計 算單元;提取出各活躍標簽內(nèi)的JavaScript腳本;編碼還原單元,用于對提取出的JavaScript腳本進行編碼還原,得到該JavaScript腳 本被編碼的字節(jié)數(shù)量EBN;語義還原單元,用于對編碼還原后的JavaScript腳本進行語義還原,得到該 JavaScript腳本中使用字符串變量的次數(shù)SDN ;匹配程度計算單元,將經(jīng)過編碼和語義還原的JavaScript腳本與預設(shè)的跨站腳本攻 擊特征進行匹配,得到該JavaScript腳本的特征匹配程度SMD ;判斷單元,用于將所述EJSRF、EBN、SDN和SMD加權(quán)相加,將相加得到的和與預定的閾值 進行比較,如果計算結(jié)果超過了給定的閾值,則判定所捕獲到的HTTP返回頁面包含跨站腳 本攻擊。
7.如權(quán)利要求6所述的裝置,其特征在于,所述提取單元具體包括存儲模塊,用于存儲各HTTP標簽的統(tǒng)計信息,包括該HTML標簽的出現(xiàn)次數(shù)N、該HTML 標簽作為活躍標簽出現(xiàn)的次數(shù)M ;活躍標簽識別模塊,用于按照嵌套的順序從外向內(nèi)依次提取所捕獲的HTTP返回頁面 中的一個HTML標簽,將存儲模塊中該標簽的N加1 ;如果該標簽直接嵌套了 JavaScript腳 本,則將存儲模塊中該標簽的M加1,在存儲模塊中記錄該標簽Tag的嵌套層次NL,提取該 標簽中的JavaScript腳本放入所述存儲模塊,并通知所述指數(shù)計算單元該標簽為活躍標 簽;否則提取下一個標簽;所述指數(shù)計算單元計算所述算數(shù)平均值時,從所述存儲模塊中讀取所述活躍標簽M和 N,以及所捕獲的HTTP返回頁面中位于該標簽外的各層標簽的M和N,將所讀取的各標簽的 N分別除以M后進行累加作為被除數(shù);當沒有概率P為0的標簽時,將所述活躍標簽的NL作 為除數(shù),否則將所述活躍標簽的NL減去概率P為0的標簽的個數(shù)后作為除數(shù)。
8.如權(quán)利要求6或7所述的裝置,其特征在于所述編碼還原單元對JavaScript腳本進行編碼還原是指將通過16進制或10進制編 碼轉(zhuǎn)換的JavaScript腳本逐字符的轉(zhuǎn)換成編碼前的腳本;所述語義還原單元對JavaScript腳本進行語義還原是指代入字符串常量或字符串變 量的語義以還原進行過字符串拼接的語句;所述匹配程度計算單元將JavaScript腳本與預設(shè)的跨站腳本攻擊特征進行匹配是指 將JavaScript腳本與一預定的XSS攻擊特征數(shù)據(jù)庫中的XSS攻擊特征進行比對。
9.如權(quán)利要求8所述的裝置,其特征在于所述匹配程度計算單元得到JavaScript腳本的特征匹配程度SMD是指將所述 JavaScript腳本所匹配的所有XSS攻擊特征的權(quán)重相加;各XSS攻擊特征的權(quán)重分別為1 到10中的一個值,包括1和10。
10.如權(quán)利要求6或7所述的裝置,其特征在于判斷單元將所述EJSRF、EBN、SDN和SMD加權(quán)相加時,EJSRF、EBN、SDN和SMD的權(quán)重分 別為 0. 4,0. 3,0. 2 和 0. 1。
全文摘要
本發(fā)明提出一種跨站腳本攻擊的檢測裝置,包括指數(shù)計算單元、提取單元、編碼還原單元、語義還原單元、匹配程度計算單元和判斷單元,各單元彼此協(xié)作,采用綜合HTML標簽分析分析的方法(包括標簽的EJSRF分析、JavaScript編碼變形分析、JavaScript語義變性分析、XSS攻擊特征模式匹配這4種方法)對Web頁面中夾帶的惡意跨站腳本進行識別、提取。這種以HTML標簽分析為核心的跨站腳本識別與提取技術(shù)能夠高效準確地區(qū)分Web頁面中正常的JavaScript與惡意的跨站腳本,使得網(wǎng)絡(luò)安全檢測設(shè)備和網(wǎng)絡(luò)終端能夠精確識別、過濾含有惡意跨站腳本的Web頁面,同時又能夠保證合法的(沒有夾雜惡意跨站腳本)的Web頁面正常通過。
文檔編號G06F21/00GK101901221SQ20091008503
公開日2010年12月1日 申請日期2009年5月27日 優(yōu)先權(quán)日2009年5月27日
發(fā)明者葉潤國, 李博 申請人:北京啟明星辰信息技術(shù)股份有限公司;北京啟明星辰信息安全技術(shù)有限公司