車晶 張瑛
南京郵電大學 江蘇 210046
本文設計并實現了一種適用于開源數據庫軟件架構的惡意行為檢測方法,并在MySQL系統上驗證了該方法,測試表明,本文提出的方法具有較好的適用性和可擴展性,可實現對多種流行惡意行為的檢測,同時對系統性能影響較小。表示將所有收集到的日志信息按時間排序。

數據庫會話原始行為特征收集算法如下:
基于行為簽名的惡意行為檢測主要面臨兩大挑戰,其一是如何構建正常數據庫會話的行為簽名使其盡可能覆蓋正常數據庫會話,其二是對正常和惡意行為簽名的在線重構,實時擴充和維護數據庫會話行為簽名特征庫,這樣就可以使檢測算法可檢測新的惡意行為。
基于開源數據庫系統的特點,本文將數據庫會話定義為從連接數據庫開始,所有的數據庫訪問操作,直到斷開數據庫連接的一系列動作的集合。使用行為特征矩陣來表征數據庫會話的行為模式。
首先,需在數據庫管理系統的源代碼中增加對敏感系統資源的訪問的監控點,這些被監控收集的信息合在一起構成了數據庫會話的行為模式,鑒于開源數據庫管理系統的所有源代碼均是可修改和重編譯的,我們在每一類功能實現點進行監控,然后對各個監控點獲得監控信息進行融合,獲得數據庫會話的行為模式。
函數 Access(DSID,FID)表示數據庫會話 DSID調用了關鍵敏感函數FID,函數Log(DSID, functionInfo, timestamp)表示將DSID何時訪問FID的信息寫入日志文件。函數Sort(logs)
目前大多數操作系統和網絡的惡意行為檢測采用的基于規則的檢測技術,這類檢測技術僅能檢測出規則庫中事先定義的惡意行為,無法檢測已知惡意行為的變種和新的惡意行為。因此,基于異常的智能檢測技術成為目前的研究熱點。常用的異常檢測技術有:概率統計、人工神經網絡、遺傳算法、模糊識別和人工免疫方法。
傳統的基于規則的惡意行為檢測大多采用統計的方法建模,將收集到的數據分成正常和異常兩類。在解決分類問題時,首先需要標注樣本的類別來構建訓練樣本集,由于訓練樣本集的建立主要依賴安全領域專家,成本較高。為了提高分類精度,在學習過程中需要的訓練樣本必須足夠多,一方面增加了構建訓練樣本集的成本,同時對大量樣本的學習也需要耗費大量的機器學習時間。
為解決這個問題,需要一種學習方法能在訓練樣本數量較少的情況下,獲得較好的分類效果。主動學習作為解決這類問題的一種方法被提出來,它是由Lewis和Gale等人提出的,它改變了傳統的從已知樣本集中進行被動學習的方法,它根據學習進程,主動選擇最佳的樣本進行學習,從而有效減少所需評價樣本的數量。支持向量機(SVM)是一種能在訓練樣本數很少的情況下達到很好分類推廣能力的智能學習算法。本文將 SVM主動學習算法應用于數據庫惡意行為檢測中,使得在訓練樣本集較少的情況下,分類器達到較高的分類精度,從而在數據庫惡意行為檢測中提高訓練速度和降低構建訓練樣本成本的目的。
SVM的參數是通過訓練得到的,需獲得兩類訓練樣本,即正常行為簽名模式樣本和異常行為簽名模式樣本。由于本文定義的行為簽名是數據庫會話的行為軌跡,可用一個長度為k的窗口在數據庫會話行為簽名軌跡上滑動來獲得系統資源訪問短序列。系統資源訪問短序列反映的數據庫會話過程中的資源訪問次序關系。如何選擇滑動窗口的大小是關鍵問題。如果選取的段序列長度為1則丟掉了資源訪問的次序關系,如果長度太大又無法反映正常和異常情況下的局部次序狀況。Hofmeyr SA等人從實驗中得出結論:當窗口大于30時,從調用序列中無法得到對數據庫會話行為判定有用的信息。Lee W等人的研究認為最合適的資源訪問段序列長度為6或7。據此本文選擇系統資源訪問短序列長度為6。可用如下算法來對數據庫會話惡意行為的特征進行學習。

Algorithm: malware character learning Input: original behavior sequence Output: malware character library 1234567891 0 11 12 NCS←slidewindow(nobs);NCL ←NCS;MCS ←slidewindow(mobs);for (mcs in MCS)for (ncs in NCS)if (mcs = ncs) del mcs from MCS;for (mcs in MCS) {d←MAX;for (ncs in NCS) {d(mcs,ncs) ←Harmin(mcs,ncs);if (d(mcs,ncs)<d) d←d(mcs,ncs); }if d>D del mcs from MCS; }
用長度為6的滑動窗口對正常數據庫會話的行為簽名軌跡進行掃描,可得到正常的系統資源訪問短序列樣本,將這些樣本保存于正常樣本庫中。該庫中記錄最多條數為,其中為系統資源訪問集。為系統資源訪問類型數目。實際應用中可已將冗余記錄刪除,規模會小得多。
當用長度為6的滑動窗口對惡意行為簽名進行掃描時,會得到一組既有正常段序列又有異常短序列的系統資源訪問短序列列表,由于惡意的非法行動只占數據庫會話行為的小部分,故異常短序列只占全部數據庫會話行為簽名的很小部分。當獲得惡意數據庫會話系統資源訪問軌跡后,可將其中與正常樣本庫匹配的記錄刪除,對于不匹配的短序列,用哈明距離測量其與正常樣本的相似度。對于兩條短序列i和j,它們之間的哈明距離記為d(i,j)。對于,每一條新序列i,定義最短哈明距離為dmin(i)=min{d(i,j)}。dmin(i)的值表達了序列與正常模式的偏差程度。
最后,對于不匹配的序列i,根據dmin(i)與預定的閾值D進行比較以判定其是否為異常,即若dmin(i)>=D,式中D為閾值,即認為序列i為異常序列,據此可獲得異常短序列樣本集。
本文采用的檢測是SVM主動學習算法,SVM的最大特點是根據Vapnik結構風險最小化原則,盡量提高學習的泛化能力,即由有限的訓練樣本集得到小的誤差仍能保證對獨立的測試集保持小的誤差。
由于上述特征學習過程獲得的正常短序列樣本并不完備,導致在基于正常短序列上獲得的異常短序列樣本可能包含正常斷續里,使得SVM分類器產生分類錯誤,所以引入檢測模塊,它使用下文提出的危險程度來對惡意軟件進行決策。
考慮到數據庫上不同的惡意行為對系統和用戶造成的損失是不同的,引入一個危險系數(Risk Factor,RF),RF用來對每一個惡意行為短序列賦予一個權值,基準權值設為 1,如果這個行為對系統和用戶的安全威脅較大,則賦予一個大于1的RF。引入危險程度(Risk Rank,RR)來作為衡量一個軟件是否為惡意軟件的定量標識,RR定義如下。

設定一個惡意軟件檢測閾值D,該值由實驗結果決定,我們的實驗結果表明D取值17時檢測器檢測效果較好。當計算所得的最終RR大于D則認定此軟件為惡意軟件。系統將此惡意行為按上文提出的數據庫會話行為簽名算法和惡意特征學習算法進行特征學習,并將學習到的特征擴充進惡意短序列特征庫,從而可以在運行中不斷增強此檢測系統的檢測能力。
評價一個數據庫惡意行為檢測方法的優劣主要有三個要素:檢測率、誤報率和漏報率。

除了上述的三個參數外,處理能力,容錯性和對原系統運行性能的影響、對數據庫應用系統的兼容性也可用來評價一個數據庫惡意行為檢測系統。
本文依據提出的檢測方法在開源的MySQL數據庫上實現了一個惡意行為檢測原型系統。實驗系統使用Ubuntu10.04操作系統,MySQL使用 5.0.19版本源代碼。實驗設置了兩種類型的攻擊場景,分別為:
(1) 合法用戶攻擊:合法授權用戶繞過安全機制,訪問安全機制不允許訪問的數據庫對象或有訪問數據庫對象的權限,但執行了未授權的操作。
(2) 偽裝攻擊:通過合法的登錄過程進入數據庫,而使用系統的方式異常。
另外還在惡意行為檢測系統工作過程中,對數據庫進行了TPC-C測試來衡量惡意行為檢測系統對數據庫性能的影響。
攻擊測試時對每種場景分別產生100次正常行為和100次惡意行為,統計惡意行為檢測系統的檢測結果如圖1所示。
從圖1中可以看出,對合法用戶的攻擊的檢測率較高,都在82%以上,對偽裝攻擊的檢測率在70%以上。就漏報率來說,對合法用戶的攻擊的漏報率較低,對偽裝的漏報率較高。對兩種攻擊行為的誤報率都在15%以下。總的來說,對合法用戶的攻擊檢測效果較好。

圖1 攻擊測試結果曲線圖
本文基于機器學習中的主動學習原理,設計了一個數據庫惡意行為檢測模型,并依據模型實現了一個原型系統。實驗表明,原型系統能對合法用戶攻擊和偽裝攻擊進行較好的檢測。目前系統尚不支持非開源數據庫管理系統的惡意行為檢測,后期工作可考慮分析Oracle、SQL Server等商業數據庫的審計日志,利用審計日志,使用本文提出的方法進行惡意行為檢測。
[1] 鐘勇,秦小麟.數據庫入侵檢測綜述.計算機科學.2004.
[2] Jerne N K. Towards a Network Theory of the Immune System 1974,Annual Immunology, vol.125c.
[3] S.Forrest,A S Perelson,R Cherukuri. Self-Nonself Discrimination in a Computater.1994.5.Proceeding of IEEE Symposium on Research in Security and Privacy.
[4] Steven A. Hofmeyr amd S.Forrest Architecture for an Artificial Immune System 2000.Journal of Evolutionary Computation.
[5] 趙敏,王紅偉.AIB-DBIDM:一種基于人工免疫的數據庫入侵檢測模型.計算機研究與發展.2009.