基於大數據分析的異常檢測方法及其思路實例

1 概述
隨着人類社會信息化程度的不斷深入,信息系統產生的數據也在呈幾何級數增長。對這些數據的深入分析可以得到很多有價值的信息。由於數據量太大以及數據屬性的多樣性,導致經典的統計分析方法已經無法適用,必須採用以機器學習理論爲基礎的大數據分析方法。目前,大數據分析的方法已經被廣泛用於商業智能(BI)領域,並取得了令人非常滿意的效果。這種方法同樣可以應用在信息安全領域,用於發現信息系統的異常情況(入侵和攻擊、數據泄露等)。利用大數據分析的方法發現異常事件,需要滿足幾個條件:1)行爲日誌在內容必須足夠詳細,可以從日誌內容上區分正常行爲和異常行爲。也就是假定異常行爲無論在表面上看多麼正常,總是在細節上與正常行爲有差異。2)針對不同的分析目標,選用恰當的分析算法。3)對行爲描述進行合理的建模。
2 基於DNS日誌分析的僵屍網絡檢測
2.1 DNS解析請求日誌的格式及說明
不同的DNS系統及配置參數,生成DNS解析請求日誌也不盡相同,這裏僅用一種日誌加以說明。
Default
1
Jul 22 10:59:59201307221059 GSLZ-PS-DNS-SV07-YanT '17 75 1374461999.999790 1307221059218.203.160.194 53 218.203.199.90 5826 dns 0,0,4692,0|4|5 1 www.baidu.com, 1,11 www.baidu.com,1,1,3,111.11.184.114'
其中


其中,標記位各種取值的含義如下:
QR是1個bit位:0代表查詢報文,1代表相應報文
opcode是4個bit位字段:0代表標準查詢,1代表反向查詢,2代表服務器狀態請求
AA是1個bit位,是Authoritative Answer的縮寫,指明名字服務器是授權於該域的
TC是1個bit位,是Truncated的縮寫,意爲可截斷的,指明在UDP中應答報文超過512字節時,只返回512字節
RD是1個bit位,是Recursion Desired的縮寫,意爲期望遞歸,期望名字服務器必須處理這個查詢,而不是給出一個迭代查詢服務器的列表
RA是1個bit位,是Recursion Available的縮寫,意爲可用遞歸,如果名字服務器支持遞歸查詢,這會將此位設置爲1
zero是3個bit位,設置爲0
rcode是4個bit位,表示名字差錯,0爲無差錯,3爲有差錯。當查詢中指定的域不存在的時候,就返回3
響應狀態
“NOERROR” => 0, 無錯誤條件.
“FORMERR” => 1, 因爲一個格式錯誤,域名服務器無法解釋這個請求
“SERVFAIL” => 2, 在處理這個請求時域名服務器遇到一個內部錯誤。例如操作系統錯或轉發超時。
“NXDOMAIN” => 3, 某些域名應該存在而沒有存在。
“NOTIMPL” => 4, 域名服務器不支持這種指定的 Opcode.
“REFUSED” => 5, 出於策略和安全原因域名服務器拒絕執行特定的操作。
“YXDOMAIN” => 6, 某些域名不應該存在但是存在。
“YXRRSET” => 7, 某些RRset不應該存在但是存在。
“NXRRSET” => 8, 某些RRset應該存在但是不存在。
“NOTAUTH” => 9, 域名服務器對區域名沒有被授權
“NOTZONE” => 10, 在預查詢或更新段中一個域名沒有在區域段中記錄。
2.2正常與異常DNS解析請求的對比分析
大多數殭屍主機在最初感染的惡意程序,只是一個下載器程序,真正能完成有害操作的惡意程序要從惡意程序分發服務器上下載。因此殭屍主機安裝下載器之後,首要的工作就是發起一系列域名解析請求,用來獲知惡意程序分發主機的IP地址以便完成惡意程序實體的下載。在完成實體惡意程序之後,殭屍主機還會發送域名查詢請求,以便獲知控制服務器的IP地址並與之建立聯繫,等待控制服務器發送指令。爲了避免分發服務器和控制服務器被網絡監管人員發現並摧毀,僵屍網絡的控制者採用了很多技術手段對這兩類關鍵服務器進行保護,諸如動態域名、Fast Flux技術等。還有一類DNS查詢請求本身就是殭屍主機發起的攻擊,其特徵也與正常的查詢請求有很大區別。總之,殭屍主機會發送大量的域名查詢請求,而且這些請求與正常的域名請求在諸多屬性有明顯的差異。
表2-1異常查詢請求與正常查詢請求的差異對比

2.3 相似性分析的一般過程
由於正常的域名查詢請求佔絕大部分,且彼此之間具有明顯的相似性,而殭屍主機的域名查詢請求日誌則有明顯的差異,因此非常適合採用相似性分析的方法進行區分。相似性分析的一般步驟是:1)確定被分析對象(源IP地址或域名)。2)確定分析的屬性。3)將屬性量化成可分析的數值。4)將數據寫入描述性矩陣。5)以描述性矩陣爲輸入數據,代入相似性計算公式,計算被分析對象的相似關係。
相似性分析通常把每個數據對象看作多維空間中的一個點,對象之間的相似性可以用相似性係數或某種距離來表示。相似係數接近1或距離較近的對象性質較相似,相似係數接近0或距離較遠的對象則差異較大。不同的數據類型,適用不同的相似係數計算公式。常用的相似係數或距離計算公式有:

(2-1)

(2-2)


 
(2-3)
公式(2-1)是變量Xi和Xj 的空間距離計算公式。
公式(2-2)是相似係數計算公式。
公式(2-3)是Jaccard相似係數計算公式。通常傑卡德相似係數處理的都是非對稱二元變量。即假設A和B是兩個n 維向量,而且所有維度的取值都是0或1。非對稱的意思是指狀態的兩個輸出不是同等重要的,例如,疾病檢查的陽性和陰性結果。其中:
M11 表示A 與B 的對應維度都是1 的維度的個數,
M10 表示A與B的對應維度分別是1和0 的維度的個數
M01表示對應維度分別是0和1 的維度的個數。
M00表示A與B的對應維度都是0 的維度的個數。
習慣上將較重要的輸出結果也通常是出現機率較小的結果編碼爲1(例如HIV陽性),而將另一種結果編碼爲0。在某些領域,認爲正匹配(M11)比負匹配(M00)更有意義。負匹配的數量M00 認爲是不重要的,可以在計算時忽略。
在分析域名查詢日誌時,可以把發送查詢請求的主機IP地址作爲對象,也可以把被查詢的域名作爲對象。可以針對某個屬性進行分析,也可以針對一組屬性進行分析。因此不同的對象和屬性組合在一起可以得到很多種描述性矩陣。下面以一個具體實例來說明相似性分析的過程。在這個實例中,以域名爲對象,以域名被各IP地址查詢的次數作爲屬性,可以得到一個描述性矩陣(如表2-2)。
表2-2域名請求行爲描述矩陣

爲簡單起見,將描述矩陣的數值代入公式(2-2),可以計算出各個域名之間的“距離”,從而得到相似性矩陣(如表2-3)。觀察發現,域名n與其它域名的相似度最低。基本可以判定查詢域名n的主機爲殭屍主機。
表2-3域名請求行爲的相似性分析結果

相似度分析的數據是一種對象-對象結構的矩陣,既可以單純使用域名或IP地址作爲對象,也可以同時使用IP地址和域名來構建矩陣。
2.4聚類分析的一般過程
把每個域名解析請求的屬性作爲一個變量,則這些屬性構成一個多維向量,如表2-4,每一行是一個多維向量。對這些多維向量進行聚類分析,可以發現那些遊離於聚合之外的那些向量所對應的域名,就是異常域名。這些域名解析請求很可能就是殭屍程序或WebShell發出的。可以考慮採用的屬性包括:域名長度、域名相似性、TTL、域名層級數、請求發送時間間隔、請求源IP地址數、響應狀態、域名對應的IP地址數量、域名查詢類型。
表2-4域名屬性多維向量

可以考慮採用分區法或K-均值算法對域名屬性多維向量進行聚類分析。由於異常域名的屬性值通常都與正常域名的屬性有明顯的差異,因此採用聚類方法通常可以獲得較高的聚類質量,將異常域名從正常域名的聚類中分離開來。
聚類分析的數據是一組對象-屬性結構的多維向量,以域名爲對象,以其查詢請求的屬性爲屬性。
3 基於大數據分析的內部異常行爲檢測
3.1 內部信息系統行爲概述
業內將內部信息系統的行爲(以下簡稱內部行爲)分爲主機(包括服務器和終端)行爲和網絡行爲兩大類:一是主機行爲,即主機本地的行爲,例如創建帳號、創建文件、修改註冊表、內存屬性(讀寫、執行)變化、進程變化(啓動、停止)等等。如果物理主機上運行着多個虛擬主機,主機行爲還應包括一些虛擬化系統的行爲。二是網絡行爲,即與網絡訪問相關的行爲,例如域名解析請求、HTTP訪問請求、ARP廣播、收發郵件、即時消息、文件上傳和下載、數據庫訪問等等。
3.2 對內部行爲進行大數據分析的原理基礎
早期的信息安全措施側重對外部攻擊的防護,而對內部的異常行爲往往不夠重視也缺少檢測手段。大量信息安全實踐使得內部異常行爲檢測的重要性在業內達成了共識。尤其是近年被披露的衆多APT攻擊事件,主要的攻擊過程是發生在內部網絡和信息系統上。通常內部異常行爲都是非常隱蔽的,攻擊者會可以隱藏自己的攻擊行爲,通常單個行爲看上去都是正常的,但是一些行爲關聯在一起以後,這種關聯的組合非常少,且行爲主體不具有別的特殊性,則這種行爲很可能是異常。或者某些內部行爲已經被判定爲異常,那麼與之關聯的行爲也是異常的概率就會大大增加。
3.3 關聯分析的一般過程
對內部行爲的分析也適用相似性分析,但爲了避免重複,這裏採用關聯分析算法對內部行爲進行分析,來舉例說明該方法的實際運用。關聯分析的一般步驟是:1)以行爲主體作爲被分析對象(通常爲IP地址或身份標識)對內部行爲日誌進行解析,將描述各種行爲的異構日誌轉換成適合分析比較的行爲鏈(如圖2-4所示)。2)將行爲鏈數據代入關聯分析算法,計算出各種可能的關聯關係。3)根據一定的判斷規則,從計算出的多個關聯關係中找出異常行爲的組合。

圖3-1 行爲鏈的構建
關聯分析的目標是從數據中找到關聯規則。所謂關聯規則是形如 X → Y 的蘊涵式,表示通過 X 可以推導“得到”Y,其中 X 和 Y 分別稱爲關聯規則的前提和結果。在滿足最小支持度和最小置信度的條件下才能認爲“通過 X 可以推導‘得到’Y”成立。在理解算法之前,首先需要了解幾個基本概念:
支持度: 指的是事件X和事件Y同時發生的概率,即支持度=P(XY)
置信度: 指的是發生事件X的基礎上發生事件Y的概率,置信度= P(Y|X) = P(XY)/P(X)

項集: B={B1, B2,……, Bm}是項的集合。
行爲鏈記錄庫: D={t1, t2,……, tn}
行爲鏈: 行爲鏈t由多個項組成,t是B的非空子集
TID: 每一個行爲鏈都與一個唯一的標識符對應。
頻繁項集:滿足最小支持度閾值的項集
爲了更好的理解上面的概念,圖1-1給出了更形象的描述。圓角矩形表示全部項的集合I,橢圓中藍圓點表示X事件,菱形中綠三角表示Y事件。

圖3-2 關聯分析的幾個基本概念
表3-1內部行爲記錄庫

爲敘述簡單但又不失一般性,這裏用9個行爲主體和5種行爲(記作B1~B5)組成的項集作爲實例來說明關聯分析算法的原理。如表3-1,行爲記錄庫中有9條行爲鏈記錄,涉及了B1~B5等5種行爲。有過某種行爲,記作1,沒有記作0。首先掃描記錄庫,得當頻繁項集C1(表3-2)
表3-2頻繁項集C1

假設最小支持度要求爲2,則所有頻繁項集都入選成爲一階最大項集。以B1~B5的排列組合作爲二階頻繁項,掃描記錄庫,得到二階頻繁項集C2(表3-3)
表3-3 二階頻繁項集C2

去掉支持度小於2的項集,得到二階最大項集L2(表3-4)
表3-4 二階最大項集L2

對L2的項集元素排列組合來生成三階的頻繁項集合,由於頻繁項集的子集也必須是頻繁的,所以要從劃去那些子集不頻繁的組合,最後只剩下兩個支持度大於2的最大頻繁項集{B1,B2,B3}和{B1,B2,B5}(表3-5)。
表3-5 滿足最小支持度的最大頻繁項集

對每個頻繁項集B生成其所有的非空真子集S(見表3-5),然後對每個非空真子集組合的關聯規則計算置信度,即支持度(B)/支持度(S),若比值大於假設的最小置信度值,則輸出S(B-S),即認爲S 與(B-S)關聯。
表3-5 頻繁項集的非空子集

表3-6關聯規則

至此我們得到了三個關聯規則,即{B1,B5}à{B2}、{B2,B5}à{B1}和{B1}à{B2,B5}。同樣對最大頻繁項集{B1,B2,B5}也進行類似的計算,還可以得到相應的一組關聯規則。
3.4關聯分析方法應用舉例
一個信息系統中,正常訪問行爲應該是絕大多數,因此異常行爲的佔比非常低,所以在關聯分析的算法中,我們對支持度的要求不是大於某個數值,而是大於0且小於某個數值。
例如,一個普通的客戶端主機對其它IP地址的掃描顯然是一種異常行爲,如果利用關聯分析的方法,發現這些有掃描行爲的主機都查詢過相同或高度相似的域名,那麼這個域名查詢請求也是一種異常行爲,很可能是終端主機感染木馬程序後的回聯行爲。
再例如,一個普通的客戶端主機存在高頻併發域名查詢的行爲,如果利用關聯分析的方法,發現這些終端的主機的系統函數調用行爲特徵非常接近,或者這些終端主機都有訪問本地敏感文件(密碼文件、配置文件等)的行爲。則這些系統函數調用或本地敏感文件訪問也是異常行爲。
4 結束語
基於互聯網的B/S架構的信息系統在運行過程中會產生大量各種類型的日誌,如安全設備告警、操作系統日誌、數據庫日誌、終端行爲日誌、網絡流量日誌、Web訪問日誌、DNS請求日誌、外網訪問日誌等等。這些日誌具有豐富的信息,只要採用恰當的分析算法,一定可以獲得很有價值的分析結果。除了本文描述的兩個應用場景以外,大數據分析還可以用於拒絕服務攻擊檢測、安全情報分析、態勢感知、網頁篡改發現、應用層攻擊檢測、惡意文件檢測等安全分析的場景。
成功的大數據分析依賴於三個主要因素:數據、思路和算法。面向安全的大數據分析所使用的數據主要是各種系統日誌和行爲。本文試圖用比較接近實際的案例來介紹面向安全的大數據分析思路。可供大數據分析使用的算法有很多,但不是都適用於面向安全的應用場景。原因是系統日誌和行爲日誌都屬於低維度數據,面向高維度數據的算法基本不適用。因此只有相似性分析、關聯分析、聚類等。分類算法在有足夠訓練數據的情況下也可以使用,但通常訓練數據比較難獲得,所以使用分類算法可能會受一定限制。
除了分析算法以外,可視化也是一種非常重要且有效的分析手段。可視化既可以作爲分析工具,直接以圖形方式呈現數據之間的關係,提高數據可讀性,又可以作爲分析結果的呈現工具,使分析結果更加直觀。受篇幅的限制,本文沒有對可視化呈現給出描述,希望後續有機會做出補充。

發佈了20 篇原創文章 · 獲贊 124 · 訪問量 92萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章