李海斌,李 琦,湯汝鳴,吳 珺,呂志遠,裴 丹,史俊杰,董 旭,房雙德,楊一飛,吳 燁
1(清華大學 計算機科學與技術(shù)系,北京 100084 2(百度公司,北京 100085)
數(shù)據(jù)庫存儲著企業(yè)的大量敏感數(shù)據(jù),有的甚至涉及金融、財務、電子商務、在線支付等核心機密數(shù)據(jù),因此防范數(shù)據(jù)泄露、確保數(shù)據(jù)安全是企業(yè)十分迫切的安全需求.一旦發(fā)生數(shù)據(jù)泄露的安全事故,將給企業(yè)造成無法挽回的損失.數(shù)據(jù)泄露可以由外部攻擊或內(nèi)部攻擊造成,而由內(nèi)部用戶發(fā)起內(nèi)部攻擊導致的數(shù)據(jù)泄露后果尤為嚴重.由于內(nèi)部用戶對數(shù)據(jù)(包括密級數(shù)據(jù))擁有合法的訪問權(quán)限,對整個系統(tǒng)非常熟悉,如果其惡意濫用權(quán)限、偷取數(shù)據(jù)、泄露數(shù)據(jù),將造成更致命的攻擊和更嚴重的損失[3,4].因此,檢測數(shù)據(jù)庫內(nèi)部合法用戶的異常行為具有重要意義.
數(shù)據(jù)庫用戶行為異常檢測主要面臨三大挑戰(zhàn):
1)攻擊模式不確定.為了規(guī)避檢測,內(nèi)部攻擊者可能會將其惡意的行為隱藏在正常的行為中,不易發(fā)現(xiàn);攻擊策略沒有固定模式,無法事先預知;
2)真實異常樣例少.由于內(nèi)部員工叛變或者黑客冒充合法用戶攻擊是小概率事件,可獲取的真實異常事件樣本極少;正、負樣本數(shù)量極不平衡,歷史日志中絕大部分都是正常行為的數(shù)據(jù),異常數(shù)據(jù)所占比例很小,不足以準確描繪異常的特征,無法直接從數(shù)據(jù)中學到所有異常的特性;
3)人工標注十分困難.真實環(huán)境中采集的數(shù)據(jù)通常沒有準確的“正?!被颉爱惓!睒俗?要將海量無標注的歷史日志轉(zhuǎn)化為有準確標注的數(shù)據(jù)集是非常困難的,需要非常豐富的領域知識和大量的時間、人力投入.而且,這類標注比圖像分類等問題的標注更加復雜,因為用戶行為的異常具有多樣性、抽象性,甚至還有一些是已有知識無法覆蓋的未知異常,導致人對異常的認識本身存在局限性,難以準確標注.
現(xiàn)有的數(shù)據(jù)庫安全防護策略(或工具)難以有效防范內(nèi)部攻擊.入侵檢測系統(tǒng)和防火墻,主要用于防范來自外部的攻擊,難以防范內(nèi)部合法用戶發(fā)起的攻擊[5].常用的數(shù)據(jù)庫安全機制,如用戶標識與鑒權(quán)、基于角色的訪問控制、數(shù)據(jù)加密[6]等,雖然能夠防范用戶訪問未授權(quán)數(shù)據(jù),但無法防范合法用戶對已授權(quán)數(shù)據(jù)的濫用和泄露.基于機器學習的異常檢測方法分為有監(jiān)督和無監(jiān)督兩種,有監(jiān)督的方法依賴于準確標注好的數(shù)據(jù)集進行模型訓練,需要充足的正、負樣本,然而由于存在著如前所述的“三大挑戰(zhàn)”,有監(jiān)督的方法無法發(fā)揮作用,因此,本文采用無監(jiān)督的方法來進行異常檢測.
本文提出了一種基于核密度估計算法[1,2]的無監(jiān)督機器學習方法,對數(shù)據(jù)庫用戶行為建模、檢測異常.該方法主要有三個步驟:首先通過特征工程從原始日志中提取特征;然后采用核密度估計算法分別從單維度和多維度訓練得到某個用戶(或用戶群體)正常行為的概率密度模型,計算合理的概率密度閾值;最后在檢測階段,根據(jù)樣本的概率密度是否低于閾值來判定該樣本是否為偏離用戶絕大多數(shù)正常行為的離群點,從而檢測異常、發(fā)出告警.
本文提出的方法具有以下優(yōu)點:
1)無需對歷史數(shù)據(jù)進行費時費力的人工標注,能夠在正負例不平衡(正例數(shù)量遠大于負例數(shù)量)、真實異常樣例缺失、數(shù)據(jù)集缺少標注或完全無標注的情況下進行異常檢測;
2)無需對數(shù)據(jù)的分布進行任何預先的假設,直接通過核密度度估計算法從歷史數(shù)據(jù)中無監(jiān)督地訓練得到其概率密度分布曲線;
3)能夠?qū)Σ煌挠脩?或用戶群體)分別訓練模型,實現(xiàn)個性化檢測,且通過定期重新訓練模型即可實現(xiàn)閾值的自動更新.在真實數(shù)據(jù)上的實驗表明,該方法具有良好的異常檢測效果,檢測出的樣本絕大部分都是具有攻擊嫌疑或高風險威脅的異常;從單維度檢測簡單異常的嚴格查準率和寬松查準率分別為90%和100%,從多維度檢成功測出了一種單維度無法發(fā)現(xiàn)的新的復雜異常,驗證了該方法能夠有效輔助安全運維人員縮小排查范圍、鎖定重點異常、聚焦安全威脅,提升安全工作效率.
本文的框架如下:第二章介紹相關工作,第三章介紹方案設計,第四章詳細介紹特征工程模塊,第五章詳細闡述基于核密度估計算法的無監(jiān)督異常檢測模型,第六章給出實驗評估結(jié)果并進行討論,第七章進行總結(jié).
關于數(shù)據(jù)庫用戶行為異常檢測國內(nèi)外已有一些相關研究,主要包括:基于參考閾值的方法[9]、基于關聯(lián)規(guī)則挖掘的方法[21]、基于免疫原理的方法[20]、基于隱Markov模型的方法[19]、基于聚類的方法[22]、基于模式挖掘的方法[23,24]、基于query語句向量化特征的方法[5,13-15]、針對數(shù)據(jù)庫應用層檢測的方法等[11,12].
基于參考閾值的方法由Spalka[9]等人提出,該文獻設計了一套數(shù)據(jù)庫管理系統(tǒng)的誤用檢測系統(tǒng),對比了基于參考閾值和基于“Δ-關系”的兩種檢測方法,然而這兩種方法都需要大量的計算開銷,而且無法區(qū)分不同用戶的異常行為.實際生產(chǎn)環(huán)境中,人工設定閾值的方法也能夠檢測一些簡單的異常,然而存在不足:指標數(shù)量多,對人的領域知識要求高;閾值難以設準,人工更新閾值缺乏可靠依據(jù);檢測能力有限,只能檢測已經(jīng)發(fā)生過的異?;蚬?文獻[21]研究了一種基于關聯(lián)規(guī)則挖掘的方法,將聚類和關聯(lián)挖掘技術(shù)相結(jié)合,設計相應的異常檢測系統(tǒng)框架.Chung[10]等人設計了用于關系型數(shù)據(jù)庫誤用檢測的DEMIDS系統(tǒng),采用頻繁項集來表征多次使用的query語句.文獻[20]研究的是基于免疫原理的方法,提出了一種結(jié)合免疫原理的數(shù)據(jù)庫入侵檢測技術(shù).文獻[19]和文獻[22]分別研究了基于隱Markov模型和基于聚類模型的異常檢測方法.文獻[23]和文獻[24]研究了基于模式挖掘的用戶行為異常檢測方法(主要針對惡意終端用戶行為的檢測).Bertino[13]等人、Ashish Kamra[14]等人、Shebaro[15]等人和Sallam[5]等人研究了基于query語句向量化特征的檢測方法,特征提取時,將用戶每一條query語句分別提取生成一個樣本,即每一種操作、每一個表名、每一個列名分別對應一個特征,這種方法將導致特征的維度會隨著數(shù)據(jù)庫、數(shù)據(jù)表、列的數(shù)量擴大而增加,不適用于數(shù)據(jù)表項龐大的數(shù)據(jù)庫,特別是當數(shù)據(jù)規(guī)模較大時,特征維度急劇增長將帶來額外的開銷.Lee[11]等人和Hussain[12]等人分別提出了DIDAFIT系統(tǒng)和DetAnom系統(tǒng),這兩種方法都是在數(shù)據(jù)庫的應用層進行異常檢測,不能夠區(qū)分不同用戶的異常行為.
與這些相關的工作不同,本文設計了一套新的特征工程方案,通過劃定時間窗口統(tǒng)計特征,提取出的特征能夠反映數(shù)據(jù)庫用戶的行為習慣和特點,而且其中包含了直接與數(shù)據(jù)庫常見攻擊場景相對應的重要特征指標,同時還確保了特征維度保持穩(wěn)定、不會隨著數(shù)據(jù)庫規(guī)模的擴大而增長;在模型訓練時,本文不對數(shù)據(jù)的分布作任何假設,而是用核密度估計算法從數(shù)據(jù)中無監(jiān)督地訓練得到其歷史分布規(guī)律;此外,本文將數(shù)據(jù)庫的異常分為簡單異常和復雜異常,分別從單維度和多維度建立模型同時對這兩類異常進行檢測,并在真實生產(chǎn)環(huán)境的數(shù)據(jù)集上驗證了方法的有效性.
本文將數(shù)據(jù)庫用戶行為“異?!倍x如下:當用戶的操作行為嚴重偏離其絕大多數(shù)正常歷史行為的軌跡時,或者當用戶的操作行為具有拖取數(shù)據(jù)、濫用數(shù)據(jù)等攻擊嫌疑,對數(shù)據(jù)庫的安全構(gòu)成威脅時,稱為“異?!?
假設絕大部分正常行為的數(shù)據(jù)服從某個未知的分布X,用函數(shù)y=f(x)表示其未知的概率密度函數(shù),采集的歷史數(shù)據(jù)集D可以認為是由分布X中獨立抽取一定數(shù)量的樣本構(gòu)成的,那么用戶行為異常檢測需要解決的問題,等價于判斷給定的任意樣本是否屬于分布X.若屬于分布X,則判定該樣本為正常,若不屬于X,則該樣本為異常.
根據(jù)異常的復雜程度、檢測難易程度,本文把異常分為兩類:簡單異常和復雜異常.簡單異常指通過單維度分析就能夠直接判定的異常,這類異常通常對應了一些簡單的攻擊場景,主要表現(xiàn)為單個重要特征指標上出現(xiàn)的偏離絕大多數(shù)正常樣本的離群值.比如大量數(shù)據(jù)拖取異常,只需要對“訪問數(shù)據(jù)量”這個特征進行單維度分析就可以檢測出來.復雜異常指的是通過單維度分析無法判定的異常,其表現(xiàn)形式更加復雜,需要將多個特征指標組合起來分析才能發(fā)現(xiàn)其“異常之處”,比如本文在實驗中檢測出的“24小時連續(xù)訪問”異常,或其它一些事先未知的新異常.
本文進行異常檢測的總體思路是:從海量無標注的歷史日志中提取特征,運用無監(jiān)督學習算法訓練得到用戶(或用戶群體)絕大部分正常行為的概率密度分布,若被檢測樣本的概率密度低于概率密度判定閾值,則判定為異常.該方法基于數(shù)據(jù)庫異常檢測場景的兩個基本前提:一方面,異常行為在某些屬性上總是偏離絕大多數(shù)正常行為的;另一方面,真實的異常攻擊是罕見的,只占很小的比例,在對正常行為建模時,歷史數(shù)據(jù)中包含的極少量異常樣本對模型的影響微乎其微.本文把數(shù)據(jù)庫歷史數(shù)據(jù)中異常樣本所占的比例稱為可疑異常率.可疑異常率是一個很小的數(shù)值,由負責安全運維的人員根據(jù)歷史發(fā)生異常事件的頻率和安全需求的嚴格程度綜合評估后設定.根據(jù)可疑異常率,可以找出概率密度最低的部分樣本上報為異常.
本文的異常檢測系統(tǒng)框架如圖1所示.從要素上看,系統(tǒng)包含兩個最核心的模塊:特征工程模塊和機器學習模型訓練模塊.特征工程實現(xiàn)從原始日志數(shù)據(jù)到可供機器學習算法直接使用的特征數(shù)據(jù)的轉(zhuǎn)化.模型訓練模塊將無監(jiān)督機器學習算法運用于特征數(shù)據(jù),從而訓練得到單維度和多維度的異常檢測模型,分別用于檢測簡單異常和復雜異常.從流程上看,系統(tǒng)可以分為離線訓練階段和線上檢測階段.離線訓練時,從海量無標注的數(shù)據(jù)庫歷史日志中提取特征,而后采用無監(jiān)督機器學習算法在不同用戶(或用戶群體)的特征數(shù)據(jù)上分別進行模型訓練,得到該用戶(或用戶群體)對應的單維度模型和多維度模型.線上檢測時,從線上日志中提取特征,再用離線訓練得到的模型同時進行簡單異常和復雜異常的檢測.若檢測出異常,則系統(tǒng)發(fā)出告警,觸發(fā)相應的響應機制,包括由安全運維人員進行人工排查、調(diào)查取證、對存在安全隱患的不當行為進行提醒警告或?qū)ψC據(jù)確鑿的攻擊行為進行追責處理等.
圖1 異常檢測系統(tǒng)框架
接下來,將對特征工程、模型訓練這兩個核心模塊進行詳細介紹,并給出真實數(shù)據(jù)上的實驗評估結(jié)果.
本文針對數(shù)據(jù)庫用戶行為異常檢測設計了一套全新的特征工程方案,實現(xiàn)將海量、雜亂、無標注的原始日志轉(zhuǎn)化為可供機器學習算法使用的特征數(shù)據(jù).雜亂的原始日志中含有大量有價值的信息,包括用戶基本信息、數(shù)據(jù)庫信息(如數(shù)據(jù)庫名、表名、屬性名)、操作信息(如查詢、添加、刪除等完整SQL語句)、時間戳信息等,這些信息需要通過特征工程從原始日志中提取、轉(zhuǎn)化為有效的特征,從而用于后續(xù)的模型訓練.本章分別從特征的選取、特征的提取流程兩個方面來介紹特征工程方案.
結(jié)合日志信息的完備程度,綜合考慮潛在異?;蚬粜袨榈谋憩F(xiàn),本文選取了一系列能夠反映用戶行為的特征(見表1),主要有以下兩類:
1)用戶屬性相關的特征,比如用戶角色(用戶組)、用戶工作狀態(tài)(包括在崗、離職審批中、已離職等)、用戶訪問位置(單日訪問發(fā)起時所在不同客戶端的個數(shù)).
表1 實驗中選取的特征
2)操作行為的統(tǒng)計特征,本文將用戶執(zhí)行的query語句按時間窗口聚合,統(tǒng)計得到操作行為的相關特征.在選取特征時,安全運維人員根據(jù)經(jīng)驗對數(shù)據(jù)庫可能面臨的攻擊場景(例如表1列舉的4種攻擊場景)進行了假設和預估,通過分析這些場景下攻擊行為的表現(xiàn),有針對性地選定對應的特征指標.此外,考慮到用戶在某個時刻的孤立行為有時不足以反映出任何異常的特性,例如,多次、少量的數(shù)據(jù)拖取在某一個具體的時刻可能看不出異常之處,但在較長時間后會有一定累積,通過特定長度時間窗口上的總吞吐量上觀測可以更容易發(fā)現(xiàn)這種異常的行為,因此本文提出了按時間窗口聚合統(tǒng)計的策略,實驗中采用了“天”和“兩小時”兩種時間粒度.
本文實驗中選用的操作行為相關的特征包括:單日內(nèi)訪問數(shù)據(jù)量(對應大量數(shù)據(jù)拖取異常)、單日內(nèi)訪問不同表總個數(shù)(對應多表大范圍訪問異常)、單日內(nèi)發(fā)起的鑒權(quán)請求失敗占當日總請求的比例(對應訪問控制漏洞嗅探異常)、單日內(nèi)訪問絕密級別的列占所有訪問列的比例(對應絕密級敏感數(shù)據(jù)拖取異常).為了反映用戶一天內(nèi)操作行為的時間分布,對于這些與特定攻擊(異常)場景相對應的重要特征指標,除了按天統(tǒng)計外還按兩小時的粒度做了進一步的統(tǒng)計提取,相當于把按“天”統(tǒng)計的這些特征進一步分解為12個按“兩小時”統(tǒng)計的特征.
在實際應用中,特征的選取應當根據(jù)業(yè)務本身的特點和采集日志信息的完備程度來確定,無需局限于表1中列舉的特征.例如,若日志記錄的信息更加完備,還可考慮提取如下特征:用戶單日新建庫和新建表類型操作比例、刪除庫和刪除表類型操作比例、含“select *”語句比例等.
本文特征提取的流程主要包括以下幾步:將原始的數(shù)據(jù)庫日志按用戶(或用戶群體)分類歸檔、按時間窗口聚合、統(tǒng)計特征數(shù)值、標準化處理.
按用戶(或用戶群體)分類歸檔.采集到原始日志后,首先將歷史日志按照用戶(或用戶群體)分類歸檔,后續(xù)的特征提取和模型訓練都將在每個用戶(或用戶群體)各自對應的日志數(shù)據(jù)上分別進行.
按時間窗口聚合、統(tǒng)計特征數(shù)值.統(tǒng)計的時間窗口粒度可以根據(jù)實際情況靈活選擇,細粒度的時間窗口可以選取分鐘、小時為單位,粗粒度的可以選取天或是周為單位,便于觀察用戶行為的時間規(guī)律和周期特征.本文在實驗中主要以“天”為單位提取特征,即用戶一天內(nèi)所有的日志數(shù)據(jù)提取生成一個樣本,同時,還將表1中編號4-7的這四個重要的特征分解為12個按“兩小時”統(tǒng)計的細粒度特征.
標準化處理.由于在不同的特征維度上的度量單位有所不同,在進行模型訓練之前需當將特征數(shù)據(jù)進行標準化處理,即對每一個維度分別求出均值和方差,并將該維度上的原始數(shù)據(jù)減去均值后再除以方差.
綜上,本文選取與用戶屬性和操作行為密切相關的統(tǒng)計值作為特征,采取了按“天”、“兩小時”聚合統(tǒng)計的策略,將用戶每一天的日志數(shù)據(jù)分別提取生成一個訓練樣本.該方法在數(shù)據(jù)庫規(guī)模擴大、用戶數(shù)量增多、數(shù)據(jù)表項急劇增長的情況下依然適用,提取樣本的特征維度能夠保持穩(wěn)定,能夠有效控制特征復雜度和運算開銷,有助于提高模型訓練效率,縮短分析、檢測時間.
為應對數(shù)據(jù)集無標注的挑戰(zhàn),本文采用無監(jiān)督機器學習方法進行模型訓練,其中算法選用核密度估計算法.針對可能同時存在的簡單異常和復雜異常,本文從單維度和多維度分別建立概率密度模型,即建立“單維度概率密度模型”檢測簡單異常、同時建立“多維度概率密度模型”檢測復雜異常,從而實現(xiàn)對兩類異常同時檢測.本章將分別介紹核密度估計算法、單維度概率密度模型和多維度概率密度模型.
核密度估計是一種用于估計隨機變量未知概率密度函數(shù)的非參數(shù)檢驗方法[1,2].假設從概率密度為未知函數(shù)f的某個分布中獨立抽樣n個樣本(x1,x2,x3,…,xn),則由公式(1)可以求得該分布概率密度函數(shù)f的估計值:
(1)
其中K為核函數(shù),是積分值為1的非負函數(shù);b為帶寬,是一個平滑參數(shù).核密度估計算法可以簡單地理解為將每個樣本作為中心點對應的核函數(shù)的加權(quán)求和.
由于本文關注的是正常行為的整體分布情況,考慮到高斯核函數(shù)能夠使估計的分布更加平滑,因此實驗中核函數(shù)K選用高斯核函數(shù).
帶寬b的取值能夠直接影響到密度估計的效果[1,2],如果b值選得過大,得到的概率密度估計曲線將過于平滑,從而無法反映出局部區(qū)間的變化和差異;如果b值選得過小,得到的概率密度估計曲線將過擬合,即在曲線中出現(xiàn)過多、過于細微的波動.參數(shù)b有多種調(diào)參方法[17,18],本文在實驗中采用了python的超參自動搜索模塊GridSearchCV對參數(shù)b進行調(diào)優(yōu)[7,8].
單維度概率密度模型用于檢測單維度簡單異常.簡單異常通常是某些重要特征指標在單維度上的離群值,一般為該維度上概率很小、數(shù)值“極大”的值.例如,大量數(shù)據(jù)拖取、多表大范圍訪問、絕密敏感數(shù)據(jù)拖取這三種簡單異常,它們可以分別對應到以下這三個特征上的“極大值”:單日內(nèi)訪問數(shù)據(jù)量、訪問數(shù)據(jù)表個數(shù)、訪問絕密級列比例.
單維度概率密度模型訓練時使用單個特征指標對應的單維度歷史數(shù)據(jù)作為訓練集,用核密度估計算法訓練得出該維度的概率密度分布曲線,通過找出概率密度極低且數(shù)值極大的少數(shù)離群樣本,實現(xiàn)檢測對應簡單異常的目的.單維度概率密度判定閾值S0可以根據(jù)可疑異常率a求出.例如,若假定數(shù)據(jù)庫歷史數(shù)據(jù)中只有1%的概率出現(xiàn)某種簡單異常,即a=1%,計算所有歷史樣本在該維度的概率密度值并做升序排列后,則排在前1%位置的樣本對應的概率密度即為相應的概率密度判定閾值S0.檢測時,計算新樣本在該維度的概率密度P,若P<= S0,則判定該樣本為該種簡單異常,觸發(fā)相應的單維度異常告警,進入人工排查和取證追責流程;若P> S0,則判定該樣本不屬于該種簡單異常.
多維度概率密度模型用于檢測復雜異常.與單維度概率密度模型不同,多維度概率密度模型能夠?qū)⒍鄠€維度關聯(lián)起來分析,考察樣本在高維空間的概率密度分布情況;通過找出高維空間中分布稀疏的樣本,從而發(fā)現(xiàn)一些潛在的復雜異常,甚至可能是從未察覺的復雜異常.
設樣本第i個特征(即第i個維度)的概率密度函數(shù)為di(x),樣本的維度數(shù)為m,則該樣本的整體概率密度值D可由公式(2)求得:
(2)
本文把通過公式(2)建立的概率密度模型稱為多維度概率密度模型.嚴格地說,當選取的m個特征之間滿足條件獨立時,樣本的整體概率密度等于各個單維度的概率密度值相乘[16].由于本文選取的特征彼此之間沒有明顯的依賴關系,可以采用公式(2)近似求解樣本的整體概率密度,而且這種近似計算的方法更加簡單、開銷更小,有助于快速找出高維空間中概率密度極小的樣本,實驗中取得了不錯的效果.
模型訓練時,在對每個特征建立單維度概率密度模型的基礎上,多維度概率密度模型可以直接通過公式(2)求得.與單維度模型檢測異常的方法相似,多維度概率密度判定閾值M0可以同理求得:設可疑異常率為a,計算所有歷史樣本的多維度概率密度值并做升序排列后,排在前a位置的樣本對應的概率密度值即為多維度復雜異常的概率密度判定閾值M0.檢測時,計算新樣本的多維度概率密度值P,若P<= M0,則判定該樣本為多維度異常,觸發(fā)多維度異常告警,進入人工排查、取證追責流程;若P> M0,則判定該樣本不屬于多維度異常.
本文的實驗包括兩部分:從單維度檢測簡單異常和從多維度檢測復雜異常.本章首先介紹實驗環(huán)境和評估指標,而后給出了單維度和多維度兩類異常檢測實驗的分析過程、檢測結(jié)果和效果評估,最后進行了補充討論.
本文以某大型互聯(lián)網(wǎng)公司的一個重要業(yè)務數(shù)據(jù)庫(數(shù)據(jù)倉庫)作為實驗場景.該數(shù)據(jù)庫上線半年左右,共有87名用戶(均為具有合法訪問權(quán)限的內(nèi)部員工),暫時沒有靠人工方法抓獲過真實內(nèi)部攻擊的異常案例,且采集的數(shù)據(jù)集完全沒有標注.考慮到該數(shù)據(jù)庫歷史真實攻擊事件發(fā)生的概率極低、安全要求較高,經(jīng)安全運維人員根據(jù)歷史觀察和運維經(jīng)驗綜合評估后,將可疑異常率設定為1%.
經(jīng)特征工程,從歷史日志提取了1973個樣本.單個用戶對應樣本數(shù)量CDF圖如圖2所示,樣本數(shù)最多的用戶擁有168個樣本,最少的只有1個,平均每個用戶擁有22個樣本.也就是說,在近半年的180天中,活躍天數(shù)最多的用戶有168天的數(shù)據(jù)訪問記錄,最不活躍的用戶只有1天的數(shù)據(jù)訪問記錄,平均每個用戶有22天的活躍天數(shù).
圖2 用戶對應樣本數(shù)量CDF
經(jīng)統(tǒng)計,如果把平均每2個工作日中至少有1天數(shù)據(jù)訪問的用戶稱為高活躍度用戶,把平均每月的訪問天數(shù)少于1天的用戶稱為低活躍度用戶,把介于低活躍度和高活躍度用戶之間的其他用戶稱為普通活躍度用戶的話,三類用戶的分布為:高活躍度用戶占11%,普通活躍度用戶占46%,低活躍度用戶占43%.高活躍度用戶主要是負責日常業(yè)務的核心骨干,有比較頻繁的訪問操作,有較多的訓練樣本;而其他用戶對數(shù)據(jù)庫的訪問頻率較低,能夠提取的樣本數(shù)很少,有的甚至只有1個樣本.對樣本數(shù)量較少的用戶,暫時不宜單獨建模.為了對無法單獨建模的用戶也進行異常檢測,本文提出把所有用戶看成一個整體(即整個用戶群體)的建模策略,即用所有用戶的數(shù)據(jù)建模,得到適用于所有用戶的模型.為了表示區(qū)分,本文把使用單個用戶的歷史數(shù)據(jù)訓練得到的模型稱為單用戶模型,把使用所有用戶的歷史數(shù)據(jù)訓練得到的模型稱為整體用戶模型.
考慮到該數(shù)據(jù)庫處于運營初期,樣本規(guī)模較小,因此本文在實驗中以整體用戶模型來驗證方法的有效性,即以所有用戶的1973個樣本作為整體進行訓練,分別建立整體用戶的單維度和多維度概率密度模型,同時進行單維度和多維度異常檢測.關于整體用戶模型和單用戶模型的適用場景和運用方法將在6.5小節(jié)專門討論.下文中將以整體用戶模型為例,給出實驗的分析過程和評估方法.
本文通過對模型檢測出的樣本進行人工逐個排查,結(jié)合用戶的訪問詳情(如SQL上下文,時間地點,頻率等),核實樣本是否為具有攻擊嫌疑或高風險威脅、值得重點關注的真實異常,從而求出模型檢測異常的查準率,來衡量模型是否能夠幫助安全運維人員發(fā)現(xiàn)和檢測出有價值的異常.
在模型報出的樣本集合中,若將被安全運維人員排查認定為具有攻擊嫌疑或高風險威脅的真實異常的樣本數(shù)量設為TP(True Positive),被安全運維人員認定為不具有攻擊嫌疑、被模型誤報為異常的樣本數(shù)量設為FP(False Positive),則查準率Precision可以由公式(3)求得.將被模型漏報(即實際為真實異常)的樣本的個數(shù)設為FN(False Negative),則查全率Recall可以由公式(4)求得.然而,由于在真實的環(huán)境中數(shù)據(jù)集完全沒有標注(無ground truth),且無法準確掌握訓練數(shù)據(jù)中存在哪些真實異常、是否有未知的異常,導致FN無法準確評估,查全率Recall無法通過公式(4)準確求得.因此,本文在實驗中主要以Precision作為評估指標,著重評估模型從無標注數(shù)據(jù)集中發(fā)現(xiàn)和檢測出有價值異常的能力.
(3)
(4)
此外,經(jīng)排查發(fā)現(xiàn),被報出的異常在顯著程度上是有差別的,因此本文將具有明顯攻擊嫌疑或高風險威脅、且概率密度極低的樣本認定為“強顯著”異常,具有潛在的攻擊嫌疑或風險威脅、且概率密度低的樣本認定為“弱顯著”異常,把概率密度低但不具有攻擊嫌疑和風險威脅的樣本認定為正常.若只考慮“強顯著”異常,求得的查準率本文稱為“嚴格查準率”;若把“強顯著”異常和“弱顯著”異常同時考慮,求得的查準率本文稱為“寬松查準率”.
由于相關工作中其它方法適用的數(shù)據(jù)集和本文完全無標注的數(shù)據(jù)集有所區(qū)別,而且本文采用的是全新設計的特征工程方案,并首次提出將異常分為簡單異常和復雜異常、分別從單維度和多維度進行檢測,因此在評估效果時無法直接和其它方法進行比較.故本文在評估時著重考察本方法在完全無標注的真實環(huán)境數(shù)據(jù)集上檢測異常的效果,評判該方法是否能夠滿足實際生產(chǎn)環(huán)境的要求、達到預期的效果.
本節(jié)針對三種常見的簡單異常,分別對整體用戶建立了三個單維度概率密度模型,并對這三種簡單異常的檢測效果進行了評估.
6.3.1 單維度實驗1:大量數(shù)據(jù)拖取異常檢測
大量數(shù)據(jù)拖取異常對應的特征為“訪問數(shù)據(jù)量”,將該特征對應的單維度歷史數(shù)據(jù)作為訓練集,用核密度估計算法建立單維度概率密度模型,得到在標準化后的區(qū)間上的概率密度分布曲線如圖3所示.從圖3可以看出,在標準化的區(qū)間上該特征的概率密度模型呈三峰分布(其中兩個是很小的波峰),主要集中于(-0.7,0)、(0.8,1.5)、(2.1,3.1)三個區(qū)間上,對應的概率密度峰值分別為3.65、0.08和0.15.
圖3 “訪問數(shù)據(jù)量” 單維度概率密度分布曲線
通過“訪問數(shù)據(jù)量”單維度概率密度模型,求得歷史數(shù)據(jù)1973個樣本的概率密度值,對應CDF圖如圖4所示,90%的樣本概率密度值集中于區(qū)間(3.58,3.72),只有少量的樣本(小于10%)集中于極低的(0,0.2)的區(qū)間.單維度概率密度值越低,意味著樣本在該維度上的離群程度越高.
圖4 “訪問數(shù)據(jù)量”概率密度累積分布函數(shù)
由于可疑異常率a=1%,則1973個歷史樣本中約有20個可疑的大量數(shù)據(jù)拖取異常.將所有樣本的概率密度值升序排列,最小的20個樣本即為可疑的異常,上報排查.排在第20位的樣本對應的概率密度值即為大量數(shù)據(jù)拖取異常的概率密度判定閾值S0.通過計算,得S0=0.0063.檢測時,若新樣本在該維度的概率密度值大于0.0063,則判定為正常;若小于0.0063,則發(fā)出告警、上報為可疑的大量數(shù)據(jù)拖取異常,并進入人工排查、取證追責流程.
6.3.2 單維度實驗2:多表大范圍訪問異常檢測
多表大范圍訪問異常對應的特征為“訪問不同表總個數(shù)”,其單維度概率密度模型在標準化區(qū)間上的分布曲線如圖5所示.與“訪問數(shù)據(jù)量”的曲線不同,此概率密度分布曲線呈單峰分布,與高斯分布的形狀有些相似.
圖5 “訪問不同表總個數(shù)”單維度概率密度分布曲線
“訪問不同表總個數(shù)” 單維度概率密度累積分布函數(shù)如圖6所示,約有85%的樣本概率密度值集中于區(qū)間(0.83,0.86),只有極少量的樣本(約占5%)概率密度值集中于極低的(0,0.05)區(qū)間.類似地,根據(jù)可疑異常率,計算得概率密度判定閾值S0=0.0051.檢測時,若新樣本在該維度的概率密度值大于0.0051,則判定為正常;若小于0.0051,則發(fā)出告警、上報為可疑的多表大范圍訪問異常,并進入人工排查、取證追責流程.
圖6 “訪問不同表總個數(shù)”概率密度累積分布函數(shù)
6.3.3 單維度實驗3:絕密級敏感數(shù)據(jù)拖取異常檢測
絕密級敏感數(shù)據(jù)拖取異常對應的特征為“訪問絕密級列比例”,其單維度概率密度模型在標準化區(qū)間上的分布曲線如圖7所示.從圖7可以看出,該特征的概率密度曲線在(0.2,4.0)區(qū)呈微小的波浪狀分布.
圖7 “訪問絕密級列比例”單維度概率密度分布曲線
該特征單維度概率密度累積分布函數(shù)如圖8所示,約有86%的樣本概率密度集中于區(qū)間(1.42,1.44),只有極少量的樣本概率密度值較低.根據(jù)可疑異常率,計算得概率密度判定閾值S0=0.0176.檢測時,若新樣本在該維度的概率密度值大于0.0176,則判定為正常;若小于0.0176,則發(fā)出告警、上報為可疑的絕密級敏感數(shù)據(jù)拖取異常,并進入人工排查、取證追責流程.
圖8 “訪問絕密級列比例”概率密度累積分布函數(shù)
6.3.4 單維度三種簡單異常的檢測效果評估
表2 檢測三種簡單異常的時間性能和查準率
按1%的可疑異常率,三種簡單異常共檢測出60個可疑的樣本(每種20個).由安全運維人員對這60個可疑異常進行逐個人工排查,得到檢測的“嚴格查準率”和“寬松查準率”如表2所示.實驗表明,三種簡單異常的嚴格查準率平均為90%,寬松查準率平均為100%;在配置為24核Intel(R)Xeon(R)CPU E5-2620 v3,2.40GHz,64GB RAM的服務器上,模型檢測單個新樣本耗時平均為0.549ms經(jīng)人工排查,單維度模型檢測出的三種異常樣本在該維度的特征數(shù)值100%具有以下兩個特點:
1)概率密度值極低;
2)對應的原始數(shù)值絕大部分屬于或接近該維度的極大值.
基于這兩點,被檢測出的樣本至少是“弱顯著”異常,甚至還有可能是風險程度更高的異常.以多表大范圍訪問異常為例,概率密度最低的20個樣本全部屬于“訪問不同表總個數(shù)”單維度top 20的極大值,意味著這些樣本屬于十分罕見、且存在特大范圍數(shù)據(jù)表訪問行為的異常.
通過結(jié)合用戶訪問詳情(如SQL上下文、時間地點、頻率等)進一步排查分析發(fā)現(xiàn),模型檢測出的三種簡單異常樣本中包含“強顯著”異常的比例分別占95%、100%和75%.例如,在大量數(shù)據(jù)拖取異常樣本中,排查發(fā)現(xiàn)對應的用戶還存在多次、多表單日全量數(shù)據(jù)無“l(fā)imit”拖取等高風險操作行為;在多表大范圍訪問異常樣本中,還排查發(fā)現(xiàn)對應用戶存在大量的“l(fā)oad數(shù)據(jù)使用”、“insert overwrite”等大量導入導出的高風險行為等,這些均表明樣本屬于具有明顯的攻擊嫌疑或高風險威脅的“強顯著”異常.
綜上,單維度模型檢測簡單異常取得了良好的效果,能夠從單維度快速、準確找出有價值的異常,幫助安全運維人員從重要的單維度指標中快速篩選出具有攻擊嫌疑和高風險威脅的樣本,為啟動進一步的風險應急處置流程提供了線索和依據(jù),同時,能夠有效輔助安全人員有針對性地聚焦于重要指標存在的威脅和隱患,集中精力對模型檢測出的重要異常事件采取更加深入細致的安全措施,包括對相關用戶進行調(diào)查詢問、收集證據(jù)、提醒警告、追責處理等.
本節(jié)對整體用戶建立多維度概率密度模型進行檢測實驗,并對檢測效果進行評估.
通過建立多維度概率密度模型,由公式(2)求得所有歷史樣本的整體概率密度值,得到如圖9所示的CDF圖.從圖中可以看出,歷史數(shù)據(jù)的整體概率密度值(取對數(shù))大部分集中在區(qū)間(-20,7).根據(jù)實驗中選取的可疑異常率1%,求出的概率密度判定閾值M0=6.23E-52.檢測時,若新樣本的整體概率密度值大于M0,則判定為正常,若小于M0,則判定為多維度可疑的異常.
圖9 多維度概率密度值(取對數(shù))的累積分布函數(shù)
為了評估多維度模型檢測異常的效果,本文對檢測出的多維度可疑異常樣本進行了逐一人工排查,發(fā)現(xiàn)整體概率密度值最低的這20個樣本中,19個樣本屬于“24小時連續(xù)訪問”異常,1個樣本屬于“頻繁鑒權(quán)失敗”異常.其中,“頻繁鑒權(quán)失敗”異常,屬于通過單維度也能夠檢測出來的簡單異常,而“24小時連續(xù)訪問”異常是單維度無法發(fā)現(xiàn)的新的復雜異常.
這20個樣本當天內(nèi)每兩小時訪問表的數(shù)量如表3所示,
表3 多維度可疑異常樣本當天內(nèi)每2小時訪問表的數(shù)量
第一列表示當天凌晨0點至2點訪問表的數(shù)量,其它列以此類推,可以看出,這20個樣本中除了第15個樣本外,其它樣本在一天內(nèi)的任意兩小時內(nèi)訪問表的數(shù)量均大于0,意味著這些樣本在當日內(nèi)對數(shù)據(jù)庫的操作基本沒有間斷.通常情況下,用戶一天內(nèi)的訪問行為是有一定規(guī)律的,主要的訪問量集中于白天,在下班休息時間一般沒有或者極少出現(xiàn)訪問行為,深夜加班或臨時任務等特殊情況通常少見.即使是喜歡在夜間工作的“夜貓子”,一天內(nèi)至少會有適當?shù)男菹r間.因此,24小時連續(xù)訪問是一種非??梢傻摹⑸僖姷漠惓P袨?如果這些異常的背后不是人為操作,而是自動化的程序在訪問數(shù)據(jù)庫,那么這種異常和真實的攻擊已經(jīng)十分接近,存在極大的安全風險、將可能導致極為嚴重的危害.因此,安全運維人員認定這19個“24小時連續(xù)訪問”樣本具有極大的攻擊嫌疑和極高的風險威脅,屬于“強顯著”的異常,并進行了更加深入的二次調(diào)查.
經(jīng)過詳細的調(diào)查取證后確認,這19個“24小時連續(xù)訪問”強顯著異常是由某平臺管理員采用自動化程序進行數(shù)據(jù)的導入、導出和格式轉(zhuǎn)換等工作所導致.結(jié)合該用戶的訪問詳情,并與其它業(yè)務行為關聯(lián)分析后最終確認,該用戶的行為沒有惡意的動機,不屬于惡意的攻擊.然而,通過模型檢測出的“24小時連續(xù)訪問”異常本身具有非常大的意義,而且非常有必要.
此外,多維度異常檢測找出的這19個“24小時連續(xù)訪問”異常樣本,從單維度看不出異常的跡象,只有通過多維度關聯(lián)起來綜合分析,才能發(fā)現(xiàn)其異常的物理意義.而且在進行檢測實驗之前,這類異常完全沒有被察覺和關注,也沒有預先設定任何規(guī)則對這類異常進行防御,因此,這類異常屬于多維度模型找出的一種新的“復雜異常”.
綜上,多維度檢測實驗中,若只考慮檢測復雜異常的效果,嚴格查準率和寬松查準率均為95%,而且發(fā)現(xiàn)的是一種之前未被關注的新的“強顯著”復雜異常;若把實驗中檢測出的1個簡單異常樣本也考慮在內(nèi),則檢測異常的嚴格查準率和寬松查準率均為100%,即檢測出的所有異常樣本均為具有攻擊嫌疑或高風險威脅的、值得重點關注的異常.
本節(jié)主要對整體用戶模型和單用戶模型的適用場景和運用方法進行說明.
整體用戶模型和單用戶模型的原理和方法是相通的,區(qū)別在于整體用戶模型的訓練數(shù)據(jù)是所有用戶的樣本,而單用戶模型的訓練數(shù)據(jù)是單個用戶的樣本.從背后的含義看,單用戶模型檢測的離群樣本是偏離該單個用戶行為的異常點,而整體用戶的模型檢測出的離群樣本是偏離所有用戶行為的異常點,相比之下,整體用戶的模型檢測出的樣本是“離群”的性質(zhì)更加嚴重、級別更高的異常.
在實際生產(chǎn)環(huán)境中,用戶數(shù)據(jù)量不均衡,特別是在數(shù)據(jù)庫運營初期,單個用戶訓練樣本規(guī)模太小,不適宜采用單用戶模型檢測異常.針對此,本文提出了在此階段可首先建立適用于所有用戶的“整體用戶模型”,從而實現(xiàn)在運營初期對無法單獨建模的用戶也能夠進行異常檢測.當數(shù)據(jù)庫運營較長時間后,單用戶樣本數(shù)量將有一定的積累,而且隨著業(yè)務周期的變化,一些不活躍的用戶也可能轉(zhuǎn)變?yōu)榛钴S用戶,等單個用戶的訓練樣本數(shù)量充足時,可再建立單用戶模型進行更高精度、更個性化的檢測,從而實現(xiàn)整體用戶模型和單用戶模型同時檢測、互相補充.
檢測數(shù)據(jù)庫內(nèi)部合法用戶的異常行為,面臨許多挑戰(zhàn):攻擊模式不確定,真實異常樣例缺失,數(shù)據(jù)集缺少準確標注等.針對這些挑戰(zhàn),本文提出了一種基于無監(jiān)督學習的用戶行為異常檢測方法,設計了一套專門的特征工程方案,運用核密度估計算法分別從單維度、多維度建立概率密度模型,實現(xiàn)在海量無標注歷史日志和新生成的線上日志中發(fā)現(xiàn)和檢測異常的用戶行為.通過某互聯(lián)網(wǎng)公司的真實數(shù)據(jù)實驗表明,本文提出的方法能夠從繁雜的數(shù)據(jù)庫歷史日志中有效檢測出具有攻擊嫌疑或高風險威脅的異常樣本,檢測簡單異常的嚴格查準率和寬松查準率分別達90%和100%,并成功檢測出了一種之前未被安全運維人員注意到的新的復雜異常,能夠有效輔助安全運維人員鎖定重點異常、聚焦安全威脅,提升安全工作的效率,為應對和防范數(shù)據(jù)庫的安全威脅提供了一套可行的方案.