機器學習演算法在使用者行為檢測(UBA)領域的應用

weixin_34006468發表於2017-11-03

最近看到越來越多的安全圈的同學開始關注UBA或者UEBA的相關產品和技術,恰好這一段時也一直在跟進UBA產品的狀況,正如Gartner報告所述,最具創新能力的UBA供應商往往都是一些初創公司,我們比較了IBM、HPE、Splunk這類大公司的UBA產品,但是感覺無非就是SIEM產品的更新升級罷了,相反一些名不見經傳的初創公司如Balabit、Sqrrl等的UBA產品到讓人眼前一亮。在參考業界的同時,我們也在UBA的核心演算法上做了一番研究,要知道UBA之所以號稱下一代SIEM,其核心就是將機器學習引入行為資料檢測,本文簡要總結一下近期研究的適用於UBA的機器學習演算法和效果。

UBA產品並不依賴某個“銀彈”演算法,其必定是一系列機器學習演算法的有機融合,稍微瞭解機器學習的同學都清楚,像貝葉斯家族、線性迴歸這類有監督學習演算法往往都需要大量的訓練樣本,但是網路安全領域APT攻擊的樣本一年抓不住兩個,要說大量訓練幾乎沒可能,因此UBA產品大量採用非監督學習演算法,通過聚合行為資料巧妙的達到異常檢測的目的。下面簡要介紹一下在行為檢測過程中常用的機器學習演算法。

首先我們假設一個使用者場景,張三,是一個SO的系統管理員,他的賬號有很多出入IT系統的許可權,某天他的賬號被黑客盜用了,黑客通過VPN等通道接入內網,並且將資料偷盜到公司外出售給競爭對手。

一個低風險使用者的正常業務活動通常沒什麼可關注的,但是一些高風險人群的正常活動或者低風險賬號進行的高危操作則足以值得調查人員關注,更近一步,如果一個高風險使用者做了一些高危並且不長出現的動作,那就絕對需要安全人員介入調查了。這裡有一個問題,我們如何知道一個使用者風險等級是高還是低?這便是UBA及其演算法要解決的核心問題,通過建立動態行為基線發現使用者偏離正常模式的行為,並根據風險累計的數值判斷使用者風險級別。綜上,構建使用者的特徵行為矩陣是第一步,也即User-Profile,特徵行為矩陣的構建方法五花八門,考慮到HBase支援資料量大,列式儲存等特點,我們選擇將特徵矩陣儲存在HBase裡。

張三,像其他特權使用者一樣,利用其賬號的許可權登入到某一臺主機或者伺服器,主機登入演算法用以檢測每個使用者經常使用的主機或者服務,DBA通常傾向於登入固定的幾臺機器,並且都是使用相似的命令,同時銷售人員都是使用天兔或者某個XX系統的服務,兩者使用方式完全不同。這裡張三登入的是一臺儲存銷售資料的伺服器,而顯然,這與他之前的模式或者與他所在的Peer-Group都是格格不入的。這裡我們使用KMeans演算法根據使用者行為資料的特徵矩陣對使用者劃分Peer-Group,行為模式類似的人群會劃分到一個動態群組。

除了動態群組,根據現有的系統許可權組進行風險評估同樣是一種有效方式,我們從LDAP或者AD獲取使用者組以及組的成員數,通常規模較小的組比成千上萬使用者的組風險係數更高。當張三的賬號被黑客從普通管理員組提升到超級管理員組的時候,他的賬號瞬間進入了一個人煙罕至的群組,這時候他的風險值會瞬間提升。

除了使用者登入的機器,登入時間也是行為特徵中非常重要的一個環節,基於時間序列的分析方法有很多,這裡我們使用KDE(核心概率密度估計)演算法來統計和預測使用者在某個時間段登入的概率,這種方法可以有效的克服離散資料在模式匹配過程中容易過耦合的問題。比如張三作為一個系統管理員,通常的登入時間是上班時間以及晚飯以後的時間,早上7:30屬於正常登入時間,而凌晨0點登入就會被標記為高度反常和可疑。KDE曲線如下圖:

8818451-51726e9f8ecdb00d.jpg
57edd3793b7e1.jpg

張三登入系統以後進行了一系列的操作,通常一個使用者在一段時間內能夠產生的操作個數也是一個人的典型特徵,User-Profile聚合一個使用者在一段時間內產生的所有行為資料的數量,使用KDE重新組織統計資料,並檢測這個模式是否發生明顯改變。如果這裡張三在一小時內接連登入了30+臺伺服器,而他通常也就登入2、3臺,那麼這裡就與正常的行為有明顯的偏移。

8818451-68a673de3dfe0d38.jpg
57edd3793c686.jpg

基於頻繁項集的聚類演算法(如Aprior/FP-Growth)在零售行業很早以前就有廣泛應用,比如沃爾瑪對顧客購買商品的模式發掘發現啤酒和尿布經常一起出售。基於頻繁項集的機器學習演算法在UBA領域也有廣泛應用,比如,張三通常在週末的時候通過SSH協議登入,而在工作日通過RDP協議登入,那麼有一天他在週末通過RDP登入就是一個行為模式的偏移。

主成分分析(PCA) 是一種應用廣泛的降維演算法,其在行為資料異常檢測的過程中有很好的效果,首先使用者行為的特徵矩陣往往都有成千上萬個維度,如果我們想從海量資料的特徵矩陣中找出異常也即離群的點,計算難度會比較大,我們採用PCA對特徵進行降維並結合KMeans等聚類演算法找出離群點。比如,張三通常會長時間使用前臺的伺服器,而運維後臺伺服器的時候比較短,如果他長時間停留在後臺伺服器上我們的演算法會將其潛在的風險值提高。

8818451-d62eeadbf6483beb.jpg
57edd3793d839.jpg

上面介紹的幾個演算法Spark的MLlib提供的全部的實現,不得不感嘆一下Spark確實是解放程式猿雙手的良心之作。再往後,基於圖資料的分析挖掘是我們後續的研究方向,安全調查人員時常需要看到使用者和實體之間的資料關聯,或者所謂的Kill-Chain,圖資料庫和基於Graph的演算法天然支援這一點,好在Spark GraphX又替我們做到了這一步。圖資料的挖掘我想業界應該沒有比Palantir做的更好的了,就是那個號稱幫助美軍找到本·拉登的那家傳奇資料公司

8818451-95f4146c64f97683.jpg
57edd3793e0dc.jpg

原文地址: 《機器學習演算法在使用者行為檢測(UBA)領域的應用》

相關文章