SQL注入WEB攻擊的實時入侵檢測系統

SQL注入WEB攻擊的實時入侵檢測系統

《SQL注入WEB攻擊的實時入侵檢測系統》是杭州安恆信息技術股份有限公司於2008年1月11日申請的專利,該專利申請號為2008100021680,公布號為CN101370008,公布日為2009年2月18日,發明人是范淵、楊永清、盧天華。

《SQL注入WEB攻擊的實時入侵檢測系統》涉及一種SQL注入WEB攻擊的實時入侵檢測系統,包括:為網站提供學習正常資料庫和Web套用標準查詢語句(SQL)查詢數據的方法;為網站提供捕獲實時資料庫和Web套用SQL查詢數據的方法;基於正常資料庫和Web套用SQL訪問數據與實時資料庫和Web套用SQL訪問數據的典型SQL注入攻擊檢測方法。該發明不僅可以檢測常見的SQL注入攻擊的檢測技術,同時具備低誤告警、高偵查率的特點。

2021年6月24日,《SQL注入WEB攻擊的實時入侵檢測系統》獲得第二十二屆中國專利優秀獎。

(概述圖為《SQL注入WEB攻擊的實時入侵檢測系統》摘要附圖)

基本介紹

  • 中文名:SQL注入WEB攻擊的實時入侵檢測系統
  • 公布號:CN101370008
  • 申請人:杭州安恆信息技術股份有限公司
  • 發明人:范淵、楊永清、盧天華
  • 申請號:2008100021680
  • 申請日:2008年1月11日
  • 公布日:2009年2月18日
  • 地址:浙江省杭州市濱江區偉業路1號高新軟體園311室
  • 代理機構:杭州豐禾專利事務所有限公司
  • 代理人:王曉峰、張慧英
  • Int. Cl.:H04L29/06;H04L12/24
  • 類別:發明專利
專利背景,發明內容,專利目的,技術方案,有益效果,附圖說明,技術領域,權利要求,實施方式,專利榮譽,

專利背景

異常網路入侵檢測有別於傳統的入侵檢查,它通過對比當前的數據和先前獲得的“安全模型”,看兩者之間的差異是否超出了誤差範圍來偵查新的數據。異常入侵偵查的優勢之一是它不需要一個很大的特徵資料庫。
截至2008年1月,基於特徵檢測的入侵偵查系統(IDS)是世界上使用最廣泛的系統,因為它能夠非常迅速而且準確地檢測已知攻擊。然而,基於特徵檢測的IDS對未知攻擊的檢測能力非常弱,因為一旦攻擊者對攻擊行為稍做變形,特徵就很難得到匹配。因此,攻擊者可以很容易地躲避特徵IDS。
另一方面,異常網路入侵偵查對於想要躲過特徵IDS的未知網路攻擊或者一個類似已知的攻擊也是有效的。然而,異常網路入侵偵查的缺點是因它的高誤告警率而導致了現實中的不實用。
直到2000年,網際網路(WEB)的網路流量完全超過了其他的套用系統,成為了世界上使用最廣泛的協定。隨著網路的普及,越來越多的商業交易和交流通過網路傳輸,越來越多的人們喜歡在網路上做他們最喜愛的事:網上購物、網上銀行交易,收發電子郵件等等。同時,Web的安全問題也成為了最熱門的話題。即使是那些發明網路的人也沒有預料到網路在今天能取得這么巨大的成功;開始時,他們也可能並沒有忽視網路的安全問題。另一個方面原因越來越多的黑客將注意力轉移到Web套用系統的常見弱點上使得網路套用與服務成為受攻擊次數增長最快的領域。雖然許多公司投入很大的資源來處理這些安全問題,但是面對很多Web套用弱點,幾乎沒有防禦能力。不時發生新的Web攻擊。2002年計算機安全研究所(CSI)計算機犯罪與安全調查顯示:以年為計算單位,超過半數的資料庫都受到過某些攻擊,平均每次攻擊造成接近4百萬美元的損失。這項調查同樣表明如今網路犯罪已經司空見慣了。網路犯罪包括了從破壞計算機(如網頁篡改)的低端犯罪到盜取個人信息和商業欺騙的高端犯罪。
超文本傳輸協定(HTTP)和網路套用可能是Web上最容易受攻擊的部分,其中一個原因在於網路的廣泛使用和HTTP、CGI(通用網關接口)和網路套用創建時對安全方面的考慮甚少。另一個原因是防火牆的HTTP80連線埠(或者8080,HTTPs443連線埠等)對於WEB套用總是開放的。
與其他的協定不同,針對WEB套用的攻擊涵蓋了從作業系統(OS)、WEB服務到套用/資料庫的各個層次。這些攻擊包括:非法輸入、緩衝區溢出、跨站點腳本攻擊(XSS)、拒絕服務、會話劫持和SQL注入。
在所有的攻擊中,SQL注入是最普遍的攻擊方式之一。WEB攻擊的趨勢可以與自動化相比,即快速找到弱點然後攻擊。大多數時候,攻擊者只需要一個瀏覽器及與網際網路的連線。然而,也有用於快速掃描和檢測弱點的輔助工具。
SQL注入是網路攻擊的一種形式,並且只需要一個瀏覽器,就能攻擊Web套用系統(如ASP、JSP、PHP、CGI等)本身,而不是運行著作業系統(OS)的Web伺服器或服務。即使Web套用系統之間並不相同,但是他們主要的體系還是十分相似的。舉例說明,如果Web套用系統的參數檢查不嚴密或處理不當,就可能會被注入亂碼參數,導致Web套用系統形成一個特殊的SQL結構並傳送到資料庫。許多Web套用系統從Web用戶取得參數,然後向資料庫做SQL查詢。舉個例子,當一個用戶從Web網頁登錄到網站時,Web網頁取得登錄用戶的用戶名和密碼然後向資料庫做SQL查詢來確定是否是有效的用戶名和密碼。那么,攻擊者可能先傳送一個偽造的用戶名和/或密碼並通過SQL注入改變SQL查詢而成功登錄。
參數輸入
用戶名
密碼
常例
John
John12345
SQL注入例子
Joe
‘J’or‘1’=’1
SQL注入過程因條件不同而操作不同。下面一起講述。第一種情況是,Web套用系統根本不能對所有的參數進行合法性檢查或者檢查不足,因此就直接用輸入值構成SQL。第二種情況是,SQL由Web套用系統使用輸入參數簡單構成,未對輸入參數進行“長度檢查、特殊字元過濾”等等必要操作。Web套用系統還在套用層次上創建一個用偽造輸入參數建立的SQL查詢,並傳送到資料庫層去執行。例如,在一個登錄過程中,SQL可以通過從USERNAME=‘$username’,password=‘$password’的USERPROFILE中選擇一個USERID來建立。在這個登錄例子中當參數填入的時候,建立的SQL會從USERNAME=‘Joe’,password=‘J’or‘1’=‘1’的USERPROFILE中選擇USERID。這個‘1’=‘1’通常能保證返回的條件是true,所以攻擊者能有效登錄Web套用系統。
為了偵查SQL注入攻擊,許多人嘗試基於特徵檢測的方法,主要包括以下幾種方式:1)檢測是否存在特殊字元;2)檢測輸入參數中是否匹配已知的模式,如1=1,‘a’=‘a’等等;3)類似於2),將任何被公布的已知格式放入檢測列表,或者使用正則表達做部分格式匹配從而獲取更多格式。
即使基於上述特徵能夠檢測到部分SQL注入攻擊,但其局限性是顯而易風的,主要表現在:1)只能檢測到已知的SQL注入特徵;2)新型的SQL注入攻擊技術會不斷的產生,而且攻擊特徵與以往有所不同;3)已經發現的SQL注入攻擊變形繁多,並且逃逸技術已經非常普遍。
單純基於特徵的檢測技術誤告率很高,或者說根本沒什麼效果。例如,一個合法的用戶也可能會輸入一些特殊的字元。因此,如果系統只是簡單地通過特殊字元判斷,那么這種簡單的判斷方式就會導致很高的誤告警率。如果系統想捕捉準確的已知格式,如1=1,那么當攻擊者可能改變成z=z或者jf8rut=jf8rut時就無效了。值得強調的是,系統幾乎不可能在同一時間窮盡所有可能的格式。
因此有必要研發一個低誤告警、高偵查率的,針對Web套用SQL注入攻擊的檢測技術。

發明內容

專利目的

《SQL注入WEB攻擊的實時入侵檢測系統》目的在於提供一個先進異常SQL注入檢測系統,這個系統將資料庫層與Web套用層相關聯,因此檢測技術更加精確,更加有力並且低誤告警。
《SQL注入WEB攻擊的實時入侵檢測系統》的目標是為異常入侵檢測提供一種新的方式,即基於狀態碼、參數長度、請求流量、返回流量、特殊字元等進行異常檢測。
《SQL注入WEB攻擊的實時入侵檢測系統》的較長遠目標是提供一個資料庫層和Web套用層相關聯的異常SQL注入檢測系統,用來檢測流行的、危害大的Web套用攻擊——SQL注入,同時降低誤告警。
《SQL注入WEB攻擊的實時入侵檢測系統》深層次的目標是提供一個單機運行的計算機軟體產品,可以實現以下功能:針對某個網站通過學習創建正常資料庫和Web套用SQL訪問數據模型;實時捕獲資料庫和Web套用SQL查詢數據;基於已經創建的正常訪問數據模型與實時捕獲的網站訪問數據的比較,完成SQL注入攻擊的異常入侵檢測。學習創建正常資料庫和Web套用SQL訪問模型;實時捕獲網站資料庫和web套用SQL訪問數據;基於已經創建的正常訪問數據模型與實時捕獲的網站訪問數據的比較,完成SQL注入攻擊的異常入侵檢測。
《SQL注入WEB攻擊的實時入侵檢測系統》長遠一點的目標是提供一個軟/硬體一體的系統,該系統通過一個可操作的處理器來執行一系列的指令,在學習模式下可以針對某個網站通過學習創建正常資料庫和Web套用SQL訪問模型;在檢測模式下可以實時捕獲資料庫和Web套用SQL訪問數據,並且基於已經創建的正常訪問數據模型與實時捕獲的網站訪問數據的比較,完成SQL注入攻擊的異常入侵檢測。該系統還可以配置相應的存儲,用於保存學習模式及檢測模式下的運行結果。
《SQL注入WEB攻擊的實時入侵檢測系統》更長遠一點的目標是提供一個系統,該系統能夠將資料庫層面的異常訪問與WEB套用層面的異常訪問進行有效的關聯。
《SQL注入WEB攻擊的實時入侵檢測系統》的基本目標是提供一種靈活、正確的方法來檢測Web套用安全(與SQL注入攻擊相關),用於克服傳統技術設備的不足之處。
《SQL注入WEB攻擊的實時入侵檢測系統》的目標是提供一個低誤告警率的檢測系統。
《SQL注入WEB攻擊的實時入侵檢測系統》的另一個目標是提供一個異常SQL注入檢測系統,它可以通過資料庫層和Web套用層的攻擊關聯,在攻擊特徵/攻擊模式未知的情況下,能夠檢測到全新的0-day攻擊。該系統事先並不知道攻擊具有怎樣的一個攻擊特徵/攻擊模式。
《SQL注入WEB攻擊的實時入侵檢測系統》的另一個目標是提供一個可配置的系統,它可以檢測其他Web套用攻擊,如通過偽造參數方式進行的跨站腳本攻擊等。

技術方案

《SQL注入WEB攻擊的實時入侵檢測系統》通過以下技術方案達到上述目的:
一種SQL注入WEB攻擊的實時入侵檢測系統,包括為網站提供學習正常資料庫和Web套用標準查詢語句SQL查詢數據的裝置;為網站提供捕獲實時資料庫和Web套用SQL查詢數據的裝置;基於正常資料庫和Web套用SQL訪問數據與實時資料庫和Web套用SQL訪問數據的典型SQL注入攻擊檢測的裝置,該檢測的裝置包括:基於正常Web套用SQL訪問數據和實時Web套用SQL訪問數據產生第一個異常分數的裝置;基於正常資料庫SQL訪問數據和實時資料庫SQL訪問數據產生第二個異常分數的裝置;將第一個異常分數與第二個異常分數採用如下公式進行關聯並測定關聯分數(S)以決定給予系統高度關注、一般關注或不予關注三種情況的裝置:S=S1×S2/(S1+S2)。
作為優選,為網站提供學習正常資料庫和Web套用標準查詢語句SQL查詢數據的裝置包括:測定資料庫層屬性的裝置;和測定Web套用層屬性的裝置。
作為優選,測定資料庫層屬性的裝置可以偵聽網站的WEB伺服器與資料庫之間流量。
作為優選,測定資料庫層屬性的裝置可以從資料庫審計特徵中獲得資料庫層屬性。
作為優選,測定資料庫層屬性的裝置可以採集該網站發起的SQL運算元據。
作為優選,資料庫層屬性包括:用戶數據、運算元據、目標對象數據和狀態碼數據。
作為優選,Web套用層屬性至少包括狀態碼、網站請求流量、網站返回流量和值長度。
作為優選,基於正常資料庫和Web套用SQL訪問數據與實時資料庫和Web套用SQL訪問數據的典型SQL注入攻擊檢測的裝置可以適用於檢測0-daySQL注入攻擊。
作為優選,所述的系統可以檢測無法預知的類似攻擊特徵/攻擊模式。
一種SQL注入WEB攻擊的實時入侵檢測方法,所述的檢測方法由以下步驟組成:從網站訪問數據學習正常資料庫和Web套用標準查詢語句SQL的模型;為網站捕獲實時資料庫和網站套用SQL訪問數據;基於正常資料庫和Web套用SQL訪問數據與實時資料庫和Web套用SQL訪問數據檢測的異常的典型SQL注入攻擊,該檢測步驟包括:基於正常Web套用SQL訪問數據和實時Web套用SQL訪問數據產生第一個異常分數;基於正常資料庫SQL訪問數據和實時資料庫SQL訪問數據產生第二個異常分數;將第一個異常分數與第二個異常分數採用如下公式進行關聯並測定關聯分數(S)以決定給予系統高度關注、一般關注或不予關注三種情況:S=S1×S2/(S1+S2)。
作為優選,從網站訪問數據學習正常資料庫和Web套用標準查詢語句SQL的模型的步驟包括:測定資料庫層屬性;和測定Web套用層屬性。
作為優選,測定資料庫層屬性的步驟包含了:偵聽網站的WEB伺服器與資料庫間的流量。
作為優選,測定資料庫層屬性的步驟包括了:從資料庫審計特徵獲取資料庫層屬性。
作為優選,測定資料庫層屬性的步驟包括了:採集網站發起的SQL運算元據。
作為優選,資料庫層屬性包括用戶數據、運算元據、目標對象數據和狀態碼數據。
作為優選,Web套用層的屬性至少包含狀態碼、網站請求流量、網站返回流量和值長度。
作為優選,基於正常資料庫和Web套用SQL訪問數據與實時資料庫和Web套用SQL訪問數據檢測的異常的典型SQL注入攻擊的步驟包含了檢測0-daySQL注入攻擊。

有益效果

《SQL注入WEB攻擊的實時入侵檢測系統》不僅可以檢測常見的SQL注入攻擊的檢測技術,同時具備低誤告警、高偵查率的特點。

附圖說明

圖1與《SQL注入WEB攻擊的實時入侵檢測系統》一致的實時異常SQL注入檢測系統總體框架示意圖。
圖2使用FIG.1所示系統對某個網站的WEB套用進行實時異常SQL注入檢測的示意圖。
圖3與《SQL注入WEB攻擊的實時入侵檢測系統》一致的實時異常SQL注入檢測器的總體結構示意圖。
圖4A與《SQL注入WEB攻擊的實時入侵檢測系統》一致的WEB套用層屬性採集總體結構示意圖。
圖4B與《SQL注入WEB攻擊的實時入侵檢測系統》一致的資料庫層屬性採集總體結構示意圖。
圖5與《SQL注入WEB攻擊的實時入侵檢測系統》一致的系統在學習模式下的學習過程總體流程示意圖。
圖6神經網路參數總體示意圖。
圖7與《SQL注入WEB攻擊的實時入侵檢測系統》一致的標準化處理過程總體流程示意圖。
圖8與《SQL注入WEB攻擊的實時入侵檢測系統》一致的標準化處理和算分模組總體流程示意圖。
圖9後台資料庫實體示意圖,實線表示正常訪問情況下能夠看到的實體,虛線表示非正常(異常)模式下能夠看到實體。
圖10Web套用層和資料庫層關聯總體示意圖。

技術領域

《SQL注入WEB攻擊的實時入侵檢測系統》涉及WEB套用入侵檢測領域,尤其涉及SQL注入WEB攻擊的實時入侵檢測系統。

權利要求

1.一種SQL注入WEB攻擊的實時入侵檢測系統,其特徵在於:包括為網站提供學習正常資料庫和Web套用標準查詢語句SQL查詢數據的裝置;為網站提供捕獲實時資料庫和Web套用SQL查詢數據的裝置;基於正常資料庫和Web套用SQL訪問數據與實時資料庫和Web套用SQL訪問數據的典型SQL注入攻擊檢測的裝置,該檢測的裝置包括:基於正常Web套用SQL訪問數據和實時Web套用SQL訪問數據產生第一個異常分數的裝置;基於正常資料庫SQL訪問數據和實時資料庫SQL訪問數據產生第二個異常分數的裝置;將第一個異常分數與第二個異常分數採用如下公式進行關聯並測定關聯分數(S)以決定給予系統高度關注、一般關注或不予關注三種情況的裝置:S=S1×S2/(S1+S2)。
2.根據權利要求1所述的一種SQL注入WEB攻擊的實時入侵檢測系統,其特徵在於,為網站提供學習正常資料庫和Web套用標準查詢語句SQL查詢數據的裝置包括:測定資料庫層屬性的裝置;和測定Web套用層屬性的裝置。
3.根據權利要求2所述的一種SQL注入WEB攻擊的實時入侵檢測系統,其特徵在於,測定資料庫層屬性的裝置可以偵聽網站的WEB伺服器與資料庫之間流量。
4.根據權利要求2所述的一種SQL注入WEB攻擊的實時入侵檢測系統,其特徵在於,測定資料庫層屬性的裝置可以從資料庫審計特徵中獲得資料庫層屬性。
5.根據權利要求2所述的一種SQL注入WEB攻擊的實時入侵檢測系統,其特徵在於,測定資料庫層屬性的裝置可以採集該網站發起的SQL運算元據。
6.根據權利要求2所述的一種SQL注入WEB攻擊的實時入侵檢測系統,其特徵在於,資料庫層屬性包括:用戶數據、運算元據、目標對象數據和狀態碼數據。
7.根據權利要求6所述的一種SQL注入WEB攻擊的實時入侵檢測系統,其特徵在於,Web套用層屬性至少包括狀態碼、網站請求流量、網站返回流量和值長度。
8.根據權利要求1所述的一種SQL注入WEB攻擊的實時入侵檢測系統,其特徵在於,基於正常資料庫和Web套用SQL訪問數據與實時資料庫和Web套用SQL訪問數據的典型SQL注入攻擊檢測的裝置可以適用於檢測0-daySQL注入攻擊。
9.根據權利要求1所述的一種SQL注入WEB攻擊的實時入侵檢測系統,其特徵在於,所述的系統可以檢測無法預知的類似攻擊特徵/攻擊模式。
10.一種SQL注入WEB攻擊的實時入侵檢測方法,其特徵是:所述的檢測方法由以下步驟組成:從網站訪問數據學習正常資料庫和Web套用標準查詢語句SQL的模型;為網站捕獲實時資料庫和網站套用SQL訪問數據;基於正常資料庫和Web套用SQL訪問數據與實時資料庫和Web套用SQL訪問數據檢測的異常的典型SQL注入攻擊,該檢測步驟包括:基於正常Web套用SQL訪問數據和實時Web套用SQL訪問數據產生第一個異常分數;基於正常資料庫SQL訪問數據和實時資料庫SQL訪問數據產生第二個異常分數;將第一個異常分數與第二個異常分數採用如下公式進行關聯並測定關聯分數(S)以決定給予系統高度關注、一般關注或不予關注三種情況:S=S1×S2/(S1+S2)。
11.根據權利要求10所述的一種SQL注入WEB攻擊的實時入侵檢測方法,其特徵在於,從網站訪問數據學習正常資料庫和Web套用標準查詢語句SQL的模型的步驟包括:測定資料庫層屬性;和測定Web套用層屬性。
12.根據權利要求11所述的一種SQL注入WEB攻擊的實時入侵檢測方法,其特徵在於,測定資料庫層屬性的步驟包含了:偵聽網站的WEB伺服器與資料庫間的流量。
13.根據權利要求11所述的一種SQL注入WEB攻擊的實時入侵檢測方法,其特徵在於,測定資料庫層屬性的步驟包括了:從資料庫審計特徵獲取資料庫層屬性。
14.根據權利要求11所述的一種SQL注入WEB攻擊的實時入侵檢測方法,其特徵在於,測定資料庫層屬性的步驟包括了:採集網站發起的SQL運算元據。
15.根據權利要求11所述的一種SQL注入WEB攻擊的實時入侵檢測方法,其特徵在於,資料庫層屬性包括用戶數據、運算元據、目標對象數據和狀態碼數據。
16.根據權利要求15所述的一種SQL注入WEB攻擊的實時入侵檢測方法,其特徵在於,Web套用層的屬性至少包含狀態碼、網站請求流量、網站返回流量和值長度。
17.根據權利要求10所述的一種SQL注入WEB攻擊的實時入侵檢測方法,其特徵在於,基於正常資料庫和Web套用SQL訪問數據與實時資料庫和Web套用SQL訪問數據檢測的異常的典型SQL注入攻擊的步驟包含了檢測0-daySQL注入攻擊。

實施方式

實施例
在圖1中與《SQL注入WEB攻擊的實時入侵檢測系統》一致的實時異常SQL注入檢測系統以數字10表示。系統10的研製目標是用於檢測異常SQL注入,並通過如圖10所示的資料庫層520與Web套用層510的關聯實現高準確率、低誤告警。資料庫層520對應到圖2中的後台資料庫220。Web套用層510對應到圖2中的Web伺服器210或者其他計算機設備所運行的WEB套用。
圖2是圖1中的系統10套用於網站200進行實時異常SQL注入攻擊檢測的示意。網站200包含了一個為終端用戶205提供WEB套用的WEB伺服器210,終端用戶205可以是個人電腦、膝上型電腦、筆記本型個人電腦、記事本或者其他帶有網路瀏覽器的計算機設備。在這群希望訪問網站200的用戶群中有一個攻擊者,他同樣屬於帶瀏覽器功能的終端用戶205。攻擊者可能會使用其他的工具來檢測網站200的弱點。
再次回到圖1,系統10包含一個系統控制器20,它與數據採集器40、學習模組60、異常SQL注入檢測器相連。正常運行時,系統10通過數據採集器40來採集及提取來自網路流量12或者資料庫日誌14的數據。系統10支持學習模式22,學習模式22用於從學習階段的一系列數據採集中學到正常行為模型。在學習模式22下Web套用層510和資料庫層520的正常行為均可以學習到。系統10還支持檢測模式24,檢測模式24用來檢測實時異常SQL注入攻擊。如果檢測到某種攻擊,系統控制器20就會產生ALARM告警,ALARM可以對異常行為進行提示和/或阻止潛在的惡意行為。系統控制器20可以是一個處理器,也可以是一個基於計算機、伺服器等的其他計算機設備。因此,系統控制器20可以同時實現上述描述的一個或多個處理過程,多個處理可以是並行、串列或混合的工作模式。
系統控制器20連線著一個存儲25,用於存放數據及下文提到的結果數據。
1.採集模組
數據採集器40在系統控制器20控制下,分別在學習模式22和檢測模式24下對WEB套用層屬性42和資料庫層屬性44進行學習和檢測。數據採集器40可以通過捕獲網路TCP/IP流量T1(傳輸控制協定/網際網路協定)或採集WEB伺服器日誌的方式獲取WEB套用層屬性42。當數據採集器40需要採集資料庫層屬性44時可以使用資料庫審計日誌。WEB套用屬性42的列表參見圖4A。數據採集器40將採集到的一系列WEB套用層屬性42(圖4A)和資料庫層屬性44的結果保存在存儲器中。
在圖4A中,WEB套用層42屬性列表包括參數值異常分數84A、參數名異常分數86A、狀態碼88A、請求流量90A和返回流量92A,作為學習(培訓)要素。這些信息由數據收集器40通過網路流量12獲得。在圖2中,網路流量12以標識為T1的箭頭表示。在檢測模式下,實時的WEB套用層屬性列表包含參數值異常分數84B、參數名異常分數86B、狀態碼88B、請求流量90B和返回流量92B.
參數值異常分數84A或者84B通過用來定義SQL注入的發生,比如SQL注入發生時大多數情況下參數值長度會比正常的長。當出現異常特殊字元(如沒有限制“)”或者“)”)時參數值的異常分數就會產生,這就意味著發生了SQL注入攻擊。為了增強檢測能力,其他的一些特殊字元也被用來計算參數值異常分數。參數名異常分數通過用來定義SQL的注入的發生,比如:SQL注入發生時大多數情況下用戶或遊客分數會比正常情況下大。狀態碼88A或者88B是一個內部錯誤代碼,表示套用系統出現了問題,如Web套用向資料庫層傳送查詢請求失敗。請求流量90A或者90B表示客戶(用戶)或者是攻擊者傳送到Web套用的請求數量。返回流量92A或者92B表示從WEB伺服器210返回給客戶端的流量。從WEB伺服器210到網際網路(WWW)的返回流量以標識為T1的箭頭所示。
WEB套用層屬性42隻是一個例子,可能隨著Web套用的不同而有所變化。
前面已經清楚地描述了如何從WEB套用層510提取或者採集數據,並根據WEB層屬性42產生異常分數。然而,僅僅從Web套用層510而言,系統10還不足以精確描述由WEB伺服器210執行的Web套用層510是如何向後台資料庫220或者資料庫層520傳送查詢/操行指令的。從理論上講,資料庫層520的資料庫層屬性44可以作為一個很重要的輔助工具,用來精確判斷或評估將要發生的真實攻擊和證明已經發生的攻擊行為或攻擊造成的損失。
採集資料庫層屬性44有幾種方法。例如,通過偵聽WEB伺服器210和後台資料庫220之間、標識為T2的雙向箭頭所表示的網路流量來完成資料庫層屬性44的採集。另一種方法是,從後台資料庫220本身採集資料庫層屬性44,比如通過資料庫的審計特性,或者從包含來自系統10的SQL運算元據的特定區域中採集。
如圖4B所示,在學習模式下,常見的資料庫層屬性44包括用戶102A、操作104A、操作對象106A和狀態碼108A。在檢測模式下,常見的資料庫層屬性44包含括用戶102B、操作104B、操作對象106B和狀態碼108B。具體來說,用戶102A或者102B指執行SQL操作的資料庫用戶。操作104A或者104B指事先定義的一系列資料庫操作,如選擇(Select)、插入(Insert)、刪除(Delete)或更新(Update)或新建(Create)。操作對象106A或者106B指被訪問的表或者視圖。狀態碼108A或者108B表示訪問是否成功。
資料庫層屬性44隻是一個例子,隨著後台資料庫220的不同會有所變化。
2.學習模組
如圖6所示,在學習(處理)模式22下,每個CGI-URL會產生一個神經網路64,其中URL是在網際網路(WWW)中使用的統一資源定位器,而CGI則是通用的網關接口。神經網路64包含參數分數65、(http)狀態碼66、(http)請求流量67和(http)返回流量68(這裡的http代表超文本傳輸協定)。參數分數65根據參數長度、參數名和參數取值產生。與學習過程中正常的參數長度相比,參數越長參數分數就越高,參數分數就決定了異常分數。參數值也是以類似的方式產生。
例如,“obj-name”或者“user”與“參數名(parameter name)”是一樣的。參數值(parameter value)是一個參數的取值。每個“參數名(parameter name)都有一個與之關聯的值的長度。此外,參數分數、狀態碼、請求流量、返回流量可以從“http”請求中分別提取。
一個黑客或者異常訪問者的上述屬性的實時用戶訪問分數,會與先前乾淨環境下(學習模式)下的用戶分數進行比較。如果比較的差值超過一定的閥值,表示異常訪問者和/或黑客被檢測到了。
當攻擊者傳送不同的字元時,請求流量和返回流量也通常被用來有效地檢測特殊的用戶。
數據採集器40的數據採集過程和圖5所示的學習過程300需要提取哪些屬性作為神經網路64的輸入參數,都是可配置的。通常情況下參數分數、http狀態碼、請求流量和返回流量會被提取出來。
圖5是學習過程300的總體流程圖。學習過程從步驟302開始,解析網路流量12或WEB伺服器日誌,隨後是步驟304,相關參數的提取。從網路流量12中提取參數列表的描述如上。跟著步驟304的是步驟305,利用圖8所示的標準化和算分引擎完成數據標準化與異常分數計算。跟著步驟305的是步驟306,在學習模式60下,由標準化和算分引擎處理的結果被傳入SOM(自組織映射)引擎62。SOM(自組織映射)引擎62是神經網路的一種類型。SOM引擎62處理提取的數據並產生SOM數據輸出。
跟著步驟306的是步驟308,SOM輸出數據被標準化和算分引擎70處理後輸出標準化數據。當不同的參數有不同的數據取值範圍時標準化處理是必須的。例如,如果參數分數範圍是從0-10,而(http)狀態碼範圍是0-500時,就需要標準化來阻止在計算異常分數時一個屬性的參與作用比另一個屬性大(如果這不是我們期望的)。步驟308後面是步驟310,對標準化後的輸出數據進行分析。這些數據可能通過可視化的圖表、報告等等方式進行分析,也可能通過計算機處理程式分析。
圖5的流程圖描述的是與學習過程相關的WEB套用層屬性42的處理過程。資料庫層屬性44的處理過程也與此類似。
在常見的Web套用使用案例中,採用模式匹配的方式提取參數特徵。例如,一個用戶名包含了字元、數字和‘_’。ID可能是由一串數字組成的。但是在SQL注入攻擊案例中,為了是使入成功,輸入的用戶名將會趨向於在字元串中含有不同的“特殊”字元,如(但不限於)一個單邊的引號(‘)、大於號(>)、小於號(<)或者圓括弧。
下面是一個簡單的黑客攻擊例子,以Http(超文本傳輸協定)字元串形式表示的Web套用SQL注入攻擊,http字串如下:
網址/showdetail.asp?id=49and1=1
這裡的www指的是網際網路;“網址”表示網站地址或者是頁面位置;剩下的字元如“?id=49and1=1”是SQL注入攻擊數據。
如果沒有返回任何錯誤信息,攻擊者或者黑客可能會嘗試另一個SQL注入字串如下:
網址/show.asp?id=49and(select count(*)from sysobjects)>0
這裡字元“?id=49and(select count(*)from sysobjects)>0是另一個SQL注入攻擊數據。
上述SQL注入例子是針對(SQL)WEB伺服器210。然而,對於其他資料庫這個字串是類似的,只是系統的表名/視圖名不同,可以從sysobjects中獲取。
從上述的SQL注入例子,我們很容易看到在長度和特徵分布上,URL中的參數特徵分布與正常情況下有所不同。
圖9是後台資料庫210中的視圖400的例子。正常訪問對象表示正常訪問模式,以實線表示。在異常或者不規則情況下,除了正常訪問模式下的視圖對象外,還有以虛線表示的訪問模式。正如我們所看到的,在正常情況下,WEB用戶402會查詢用戶信息表404、分類表406和訂單表408。然而,訪問所有用戶表410則表示是異常的或不規範的。(all-user表格是oracle系統表,包含資料庫系統所有用戶信息。)
一個通用網關接口(CGI)允許WEB設計者創建動態網頁。例如,當用戶與網頁互動,並用數據填寫表格時,輸入的信息可能會顯示在展示給用戶的下一個頁面。CGI同樣也用於搜尋引擎。CGI可能是放在伺服器上的一個腳本,通常在一個目錄下。
系統10主要用於檢測WEB套用層510或者資料庫層520的攻擊,即在學習過程中,將檢測字串中不同的字元輸入到不同的bins,然後為每個URL計算出一個異常分數。在檢測模式24下,系統10再次獲得每個CGI URL的分數,並計算出與學習過程中創建的異常分數的差值,用來生成新的異常分數。
CGI URL中的每個參數名/參數值,系統10使用特殊的bins來保存/描述不同的字元集,如下所示:
{a-zA-Z,0-9,‘,.,;,“,”,/,\\,~,′,!,,#,$,%,^,&,*,(,),-,=,<,>,?,{,},|}
在學習模式下,對於每個CGI/Web套用,系統10通過學習或者培訓操作來學習正常模式。
圖8是對標準化和算分引擎70的描述。在WEB套用日誌中的每個CGI請求URL,多數要素被抽取/計算/標準化。在參數名長度子模板71中,參數名長度元素被提取、計算和標準化。在參數值長度子模板72中,參數值長度元素被提取、計算和標準化。在參數分布分數子模板73中,參數分布分數被提取、計算和標準化。在參數值分布分數子模板74中,參數值分布分數被提取、計算和標準化。分布分數可以通過字元的不同類型發生事件的多少來判斷。
為了減少誤告警,標準化和算分引擎70將a-z,A-Z歸入字母類型,0-9為數字類型。而“特殊字元”如“’”,“>”等則被納入同不同bins子模板75處理的其他類型。鑒於上述假設,對於某個CGI來說其字母將會落入一個固定的模式。例如,在正常使用情況下,用戶名可能總是落入字元和數字類型中。另一方面,當SQL注入發生時,CGI中可能會有“特殊字元”,如a’or‘1’=’1,這時將落入特殊字元類型和/或者異常字元類型中。
參數值長度的標準化是很重要的,在全部的異常分數計算過程中參數值長度能夠適合於一個固定的範圍(如:0-1)。輸出結果可以用方式Eq.(1)表示:
|LenR-LenA|/Max(LenR,LenA) Eq.(1)
其中,LenR表示實時參數值長度,LenA表示為學習後的平均參數值長度。如果新的長度與學習模式下的長度接近,那么結果就趨向於0。另一方面,如果實時參數值長度LenR比LenA大很多的話,結果就會趨向於1。
圖7是每個子模板的標準化和得分計算處理程式350的總體流程圖。處理程式350從步驟352開始,計算要素提取。接下來是步驟354,要素計算。接著是步驟356,要素標準化。在有些實例中,分數是在步驟358時產生的,這個步驟用虛線來標誌說明是一個選擇性功能。
3.檢測模組
類似於學習模組,檢測模式24用於完成實時檢測過程的數據捕獲。所不同的是,在數據提取和標準化以後,需要傳入學習神經過網路用來計算當前數據與先前“正常學習模型”數據之間的偏差。
WEB套用層正常數據與SQL注入攻擊引起的異常流量對比如下表所示:
WEB正常流量vs.SQL注入WEB流量
Web Training
Web Detection
203.7366092 9.275283 576.5658 123.1718
210.3278138 26.72986 609.3593 113.7122
219.3220077 61.41085 645.5216 103.568
221.8608458 169.066627.1404 112.3334
212.3305304 426.5677 516.7143 151.091
203.7924397 639.5583 432.9758 172.911
201.1655923 804.7452 409.0698 159.6027
200.4134191 1041.625 403.2338 132.9086
200.138194 1261.073 402.2831 131.4284
303.9990448 139.9668 502.1129 0.003258
303.9974611 139.9346 462.2181 0.028421
303.9994348 139.8615 447.8501 0.041096
303.9999107 139.7122 445.2572 0.067242
303.9999634 139.6504 443.2334 0.117713
303.9999347 139.7436 442.1350.180101
303.9999999 139.9985 524.5301 2.34E-04
303.9999998 139.9924 523.5133 1.16E-04
303.9999991 139.9659 522.0063 6.01E-05
4.WEB層異常分數
如圖3所示,WEB層異常分數由WEB層異常檢測器82計算得到,計算的依據是對比實時數據和神經網路64(使用自組織映射運算法則)中的學習數據之間的偏差。
5.資料庫層異常分數
另一方面,資料庫層異常分數是由資料庫層異常檢測器84計算的。類似的學習與檢測機制適用於資料庫層520,所不同的是需要將Web套用層510的分類對應到資料庫層520。圖10就有這樣的一個例子。在圖10中,Web套用層510中的腳本515關聯到資料庫表525中的列或對象。箭頭表示的是關聯的例子。例如,腳本515中的用戶是對應到資料庫表525中是一個執行SQL操作的資料庫用戶。腳本515中的動作對應到相應的資料庫對象操作如選擇(Select)、插入(Insert)、刪除(Delete)或更新(Upadte)或創建(Create)。腳本中的目標對象是指被訪問的表和視圖。狀態碼錶示訪問是否成功。
在乾淨環境中學習和採集數據後,每個實時數據都會產生一個異常分數,通過與神經網路64中的正常數據對比得到,Web套用層510和資料庫層520中交替進行。
WEB層異常偵測器82和資料庫層異常檢測器84會產生自身的異常分數,以便最大程度描述攻擊行為。接著,由WEB層與資料庫層關聯器86計算出一個聯合分數。套用層異常分數與資料庫異常分數關聯得到的關聯分數提供了一個更準確的檢測方法,並且誤告警率很低。事實上輸入的用戶參數是各式各樣的、不可預期的,而且資料庫層的行為很難用特徵來描述,因此單一層面的分數往往會導致較高的誤告警率。有很多的算法可以用來產生兩層之間的關聯分數。比如,如果兩個分數都很高,那么(結果)關聯分數必須是高的。同樣地,如果兩個分數都很低,那么(結果)關聯分數就必須是低的。一種可行的關聯分數計算方程式Eq.(2)如下:
S=S1×S2/(S1+S2) Eq.(2)
其中,S1表示為網路WEB套用層異常分數;S2表示資料庫層異常分數。這個公式可以根據需要進行修改,只要其輸出是表示兩層的關聯即可。
上面的例子被用來描述相關的CGI。然而,系統10可以被配置用來檢測跨站腳本。
具體說來,上述功能可以通過硬體、軟體、軟/硬體一體件或者其他任何組合實現。如果以軟體方式實現,這些功能可以以一系列的指令或代碼形式儲存或傳輸於可讀的計算機介質之中。計算機可讀介質包括計算機存儲介質和將電腦程式從一個地方轉移到另一個地方的傳輸介質。存儲介質可以是任何一個可以被計算機訪問到的有用介質。比如包括但不限於RAM、ROM、EEPROM、CD-ROM或其他光碟陣列、磁碟陣列和其他磁碟存儲設備,或者任何可以用來裝載或存儲想要的指令或數據結構的可被計算機訪問到的介質。同樣,存儲介質可以採用任意的連線方式。例如,如果軟體是從網站、伺服器或者其他使用同軸電纜、光纖電纜、雙絞線、數字用戶線或者無線技術(如紅外線、電波和微波)傳輸的遠程資源上傳送過來的,那么同軸電纜、光纖電纜、雙絞線、數字用戶線或者無線技術(如紅外線、電波和微波)都屬於介質的範疇。常用的磁碟和唱片還包括CD,雷射影碟、數字通用盤(DVD)、軟碟和通常用磁場複製數據的磁碟,與用雷射複製數據的圓盤。上面所述的任意組合都屬於計算機可讀介質範疇。
上述有關信息披露的描述是為了讓所有在這個領域的專家能夠處理或使用這些漏洞。對於那些專家來說很容易就能辨別出上述實例的各種變化,《SQL注入WEB攻擊的實時入侵檢測系統》定義的基本原則同樣適用於沒有超出漏洞本質和範圍的其他案例。因此,漏洞並沒有規定要局限於《SQL注入WEB攻擊的實時入侵檢測系統》所描述的案例,但是它在廣義的範疇上必須與文本的原則和異常特徵相一致。

專利榮譽

2021年6月24日,《SQL注入WEB攻擊的實時入侵檢測系統》獲得第二十二屆中國專利優秀獎。

相關詞條

熱門詞條

聯絡我們