攻擊推理-安全知識圖譜在自動化攻擊行為提取上的應用
摘要
當前企業安全運營實現自動化的難點在於低水平日誌與高水平行為之間的語義鴻溝。本文提出了一種安全知識圖譜表示方法,並提出了一種自動化的行為識別方法。
一、背景
當前企業環境面臨的攻擊越來越趨於隱蔽、長期性,為了更好的針對這些攻擊進行有效的檢測、溯源和響應,企業通常會部署大量的終端裝置。安全運營人員需要透過分析這些日誌來用來實現攻擊檢測、溯源等。利用安全知識圖譜與攻擊推理進行評估溯源,在相關專題文章[1,2,3]中都有介紹,其中[1]是透過挖掘日誌之間的因果關係來提高威脅評估的結果,[2]利用圖表示學習關聯上下文提高檢測與溯源的準確率,[3]主要是介紹了知識圖譜在內網威脅評估中的應用。但這些工作把均是把異常日誌當作攻擊行為來處理。基於異常檢測方法無論是在學術領域還是工業上都有了一些經典的應用如異常流量檢測、UEBA(使用者與實體行為分析)等。Sec2graph[4]主要是對網路流量進行建模,構建了安全物件圖並利用圖自編碼器實現對安全物件圖中的異常檢測,並把異常作為可能的攻擊行為進行進一步分析。Log2vec[5]透過分析終端日誌的時序關係構建了異構圖模型,利用圖嵌入演算法學習每個節點的向量表示,並利用異常檢測演算法檢測異常行為。UNICORN[6]方法是基於終端溯源圖[9]為基礎提取圖的概要資訊,利用異常檢測方法對圖概要資訊進行分析檢測。之前的攻擊推理專題中的文章[9]也是利用圖異常檢測演算法進行攻擊者威脅評估和攻擊溯源。但是這些方法本質上都是基於這麼一個假設:攻擊行為與正常使用者行為是有區別的。這些方法檢測出來的結果只能是異常,異常行為與攻擊行為本身有很大的語義鴻溝,同時這些異常缺少可解釋性。
在安全運營的整個過程中,網路分析人員需要根據日誌之間因果關係來對攻擊者以及其破壞範圍進行溯源分析。當前已有的技術通常是事先構建溯源圖並利用之前提到的異常檢測方法對溯源圖進行分析,最終找到的僅僅是異常使用者或是異常行為路徑,這種方法的誤報通常會很高。本質上當前的方法缺少一種系統日誌到使用者行為之間的語義對映,針對該挑戰文獻[8]透過安全專家構建的威脅子圖作為知識圖,利用圖匹配演算法從系統溯源圖中找到相匹配的攻擊。這些方法主要是事先設計一些規則庫,基於這些規則檢測審計日誌中的相關行為[7,8]。然後,這些規則的設計嚴重依賴於安全專家的經驗。知識圖譜本身就是致力於解決這種語義鴻溝的問題,但是在安全領域知識圖譜相關應用進展比較緩慢。這裡借鑑了知識圖譜在推薦系統上的應用方式,首先基於終端日誌設計了有效的知識圖譜表示形式;然後,以上下文為語義基於圖表示學習方法自動的提取行為資訊。
二、終端安全運營的現狀
當前企業安全所面臨的挑戰不再是檢測裝置檢測的準確性問題,而是涉及到更上層的攻擊者的戰術、技術以及過程等不同層面的分析。當前安全檢測裝置面臨的主要問題是底層的日誌與上層抽象之間的語義鴻溝問題。知識圖譜的提出就是致力於解決這種語義鴻溝問題,但是在威脅檢測與識別方面安全知識圖譜的應用還較少,還有一段很長的路要走。
針對這種情況,本文主要探索一種可行的安全知識圖譜在安全運營中的應用方法。當前安全運營面臨的最大難題就是低層日誌資訊與高層行為之間的語義鴻溝問題。我們首先提出一種有效的知識圖譜表示方法,該方法區別與當前的溯源圖結構。相比較溯源圖,知識圖譜的表示形式能支援更復雜的異常圖,同時還能包含更多實體與邊的屬性。然後,使用自動化的方法從審計日誌中抽象出高層系統行為,並利用語義相似度聚類方法把語義上相似的行為聚合到一起,即使並不能給出合理的解釋標籤,其實這種聚類也是有意義的。理論上來說,相關的系統行為已經根據語義進行了聚類,安全分析人員只需要從聚類中標記有代表性的系統行為,就可以分析這些代表性系統行為來快速進行調查取證。除了能有效減少行為分析的工作量外,自動的行為抽取可以為內部或外部攻擊行為模式提供前瞻性的分析。
我們把從日誌資訊提取行為語義的過程稱為行為提取。行為提取可以完成從日誌到行為的直接對映,可以看出行為提取是當前安全運營挑戰的有一個有效解決方法,但它依然面臨了兩個挑戰:事件語義的差異性和行為識別。語義差異性是指相同的日誌在不同的上下文中具有不同的語義,這個語義的差異性跟自然語言中的語義差異性相似;而行為提取挑戰更明顯,因為終端日誌的規模與高度交織性導致對其進行事件或行為劃分變的異常困難。說了這麼多,所謂的知識、語義在本文中是如何表示的,知識圖譜技術通常是利用其實體與或邊在圖中的上下文來表示其語義。本文也借鑑這種表示以日誌相關實體在圖中的上下文表示日誌的行為語義。可以透過聚合多個相關的日誌來表示系統行為。基於這種表示,相似的行為可以被聚到一起。此外,可以看到透過聚類之後安全知識圖譜可以提供一個關於高水平行為的邊界,這種邊界可以作為一種參考來透過關聯多日誌生成相應具有語義的行為資訊。
下面場景是DARPA TC專案中的攻擊場景,為了便於說明,後面的一些例項是以該場景為背景的。
圖1 應用例項的溯源圖
首先來簡單介紹該場景。企業內部員工想利用自己的許可權竊取一些敏感資訊,他的工作是軟體測試工程師。該員工的日常工作包括使用git同步程式碼,使用gcc來編譯原始碼,使用apt命令安全相關的測試依賴包。如果該員工想竊取敏感檔案(secret.txt),為了躲避檢測,他需要模擬他的日常工作行為模式。首先該員工把敏感檔案複製到該員工常用的工作目錄中並重新命名為pro2.c檔案。然後,對該檔案利用gcc進行編譯,當前這個檔案本身不是一個有效的原始檔因此編譯結果是不成功的,但是這不影響。該步只是為了模擬他日常工作行為模式。最後,該把該檔案上傳到了github上。該企業員工試圖透過這種策略來竊取敏感資料。
為了對攻擊行為進行有效的因果分析,當前已有的方法主要是基於審計日誌構建有效的溯源圖[6]來進行分析。本質上溯源圖是一個系統行為的因果關係的通用表示方式。圖1 即是上面場景的溯源圖。邊的方法表示不同實體之間的資料流向。在攻擊調查過程中,分析人員對溯源圖進行分析來找到與攻擊相關的資訊片段。在圖1的實體中,分析人員首先會根據一個確定的事件進行後向溯源來找到攻擊的起源。然而,分析人員也可以利用前向溯源技術,從確定的攻擊事件來確定其攻擊後果。利用溯源技術,安全分析人員不僅能推斷該攻擊事件的根因與攻擊結果,還能給出高層的抽象行為。
當前終端裝置記錄的日誌資訊不僅僅包含了攻擊行為也包含了系統的正常行為。雖然溯源圖提供了具有因果依賴關係的系統行為的真觀表示,但對於安全分析人員調查分析來說依然是非常耗時的。從日誌中提取出抽象行為對於安全分析人員來說是有效的方法。本質上來說行為資訊是對系統日誌的一種抽象,安全分析人員在系統行為層面的處理將會大大減少其工作量。因此從系統日誌中自動化提取高水平行為資訊成為智慧安全運營的核心工作。
三、安全知識圖譜構建
以WATSON[7]為參考該自動化攻擊行為提取主要包括三個階段,如圖2所示包括知識圖構建,行為提取和代表行為識別。其核心模組包含安全知識圖譜、事件推理模型、行為抽象模型和行為語義聚合模型來。其中安全知識圖譜是由系統日誌轉換成圖譜的形式。事件推理模型是行為抽象過程的核心,其使用圖嵌入模型來推理安全知識圖譜中節點的語義,行為概要模組列舉出所有的表示行為實體的子圖。最後代表行為識別是利用聚類演算法對語義相似的子圖進行聚類,並從每個聚類中找到最具代表性的行為。
圖2 基於安全知識圖譜的行為提取流程
3.1 安全知識圖譜構建
為了有效地分析事件的上下文語義,需要一種能整合多種型別資料的異構資料模型。因此,本文使用了知識圖譜的表示方式。相比於溯源圖模型,知識圖譜模型有更強的表示能力。
圖3 安全知識圖譜示例
根據知識圖譜[8]定義的標準,這裡定義了一個基於日誌的知識圖譜。該安全知識圖譜包含了一系列包含豐富語義的三元組,每一個三元組對應一個審計事件。如圖3所示,該圖顯示的是上面所提到的例子中的了個子圖。
3.2 行為抽象
行為抽象過程主要是由事件語義推理模型與行為概要模型。
3.2.1 事件語義推理
提取高水平行為的第一步是理解系統日誌的語義。準確的語義理解是建立在合適的表示與粒度上的。已有的一些溯源分析方法是以系統事件為粒度進行分析,然後一個事件需要用三元組表示的,而三元組中不同的元素具有不同的語義。雖然,以更細粒度的元素為語義分析物件會增加計算代價,但是可以提供更準確的語義分析。同時選擇有效的嵌入演算法也可以從一定程度上減少計算代價。
利用圖嵌入(graph embedding)[6]表示可以從審計日誌的上下文資訊中學習其語義表示,其中最關鍵的是如何把審計事件的三元組對映到同一個向量空間中,這也是嵌入模型的關鍵。在自然語義處理中word2vect已經是一個比較成熟的技術,基於其思想文獻[6]透過分析二進位制指令的上下文來表示該二進位制指令的語義。在本文的場景中是否能用審計事件的上下文來表示其語義?假設現有兩個審計事件三元組(cc1, read, a.c)和(cc1, read, b.c),顯示a.c與b.c屬於不同的審計事件,但是它們具有相同的上下文(cc1, read),這暗示著它們具有一些相似的語義資訊。直觀的來說就是把每個元素都轉換成同一向量空間中的向量,不同元素的向量表示的距離表示其語義的相似度。例如,根據審計事件(cc1, read, a.c)和(cc1, read, b.c),我們希望a.c與b.c的向量距離儘可能的近一些。因此這裡可以使用TransE模型來學習每個元素的向量表示。
嵌入模型中的嵌入空間描述的是安全知識圖譜三元組中Head, Tail和Relation之間的關係。TransE模型的嵌入空間是基於以下這種理論假設:Head + Relation Tail,其表示在TransE模型的嵌入空間中Head實體的向量加上Relation的向量表示等於Tail的向量表示。以(cc1, read, a.c)和(cc1, read, b.c)為例,a.c與b.c的向量表示是透過(cc1, read)表示,因此a.c與b.c向量表示是相近的。
在嵌入表示學習過程中,安全知識圖譜中的每一個元素都需要進行初始。可以利用獨熱編碼對每一個元素進行編碼,然後以該向量作為訓練過程的輸入。訓練階段採用TransE模型本身的目標函式。
3.2.2 行為概要
行為抽象的下一步是從一個使用者登入會話的行為例項進行概要分析。行為實體是一系列操作關於相關資料或是資訊流的審計事件。因此,總結單一行為例項的問題可以歸約為從安全知識圖譜中抽取出因果相關的子圖。與傳統基於路徑[7]的方法相比,可以在安全知識圖譜中劃分子圖來表示行為例項。利用子圖劃分而不選擇基於路徑劃分的原因是單一路徑不能保留多分支資料傳輸的行為的完整上下文。例如,基於路徑劃分的方法在資料洩露行為中並不能有效的把相關行為例項關聯到一起,比如程式編譯與github上傳可能在不同的路徑中。
圖4 溯源圖
為了從安全知識圖譜中抽取出描述行為例項的子圖,可以採用了一種自適用的前向深度優先遍歷方法。圖4中給出了行為概要子圖的示例。在圖遍歷過程中考慮了行為的時序關係,也就是後一個行為要發生在前一個行為之後。這種時間約束會過濾掉一大部分依賴關係。此外,可以看出一個系統實體的祖先通常包含了關鍵行為上下文,然而這種祖先節點在前向深度優先遍歷中是捕獲不到的,因為其屬性後向依賴節點。因此,在圖遍歷過程中需要包含其一跳入邊。
由於審計日誌記錄的是粗粒度的依賴關係,因此不可避免的面臨依賴爆炸的問題。然而解決依賴爆炸問題並不是這裡討論的的內容。
3.3 代表行為識別
基於以上處理之後,需要基於安全知識圖譜抽取出行為例項的語義資訊。每個行為例項的劃分都包含了一些審計事件,這些審計事件的語義資訊是透過嵌入矩陣的高維向量來表示。針對行為例項的語義向量的獲取,一個比較簡單的方法是把該例項中所有事件的向量相加。然後,這種方法的有效性是建立在如下假設基礎上的:一個行為例項所包含的所有事件對其語義的貢獻都是相同的。顯然這種假設在實際情況是很難滿足的。
對於一個高水平任務,它可能包含了底層一系列相關操作,但是每個底層操作的重要性與必要性對於該任務來說是不同的。例如圖4中的程式編譯過程,使用者通常不會直接編譯原始碼,而是先利用ls或是dir命令定位原始碼。像ls和dir這種命令能表示使用者的行為,但是對高層任務的語義貢獻較小。因此,像這類樣板操作在實際的行為表示中會給予更少的關注。關鍵的問題是如何自動化的給出每一個操作的相對重要度(重要性權重)。透過觀察可以看到與行為不相關的事件在會話中會更普遍,因此它們在不同的行為中不為斷的重複,而實際與行為相關的事件發生的頻率反而較低。基於該觀察,可以使用事件的頻率作為事件重要度的一種度量。這裡可以使用IDF(Inverse Document Frequency)來定義事件對於所有行為的重要度。為了與IDF的使用相對應,審計事件可以看成文件中的詞,使用者會話可以看成文件。事件的IDF計算公式表示如下:
針對每個行為劃分中的事件都有使用IDF計算的權重,用以表示其對於該行為語義的重要度或貢獻度。
在當前場景中一個行為可以認為是一些語義相似的行為例項的集合。因此,聚類中的標籤性的行為例項是具有代表性的例項(如聚類中性)。如果能夠確定有效的行為標籤,安全運營人員就不需要對聚類空間中所有的行為例項進行調查,而僅僅調查具有代表性的行為例項即可,這將大大提供攻擊調查的自動化水平。在已知不同行為例項的向量表示後,可以使用cosine相似度來計算安們之間的語義關係:
為了把具有相似語義的行為例項聚合到一起,可以採用的是凝聚層次聚類分析演算法(HCA)。在對安全知識圖譜進行聚類後,從每個聚類中找到一個具有代表的行為。
四、總結
當前安全知識圖譜相關應用主要在威脅情報上,從知識圖譜的構建,分析到推理各個階段都有相關的應用。而在攻擊識別與攻擊溯源方向並沒有較好的落地點。其關鍵還是安全知識如何來指導安全裝置來進行檢測與溯源,在這方面微軟做了一些探索,主要還是把安全知識轉化成攻擊行為之間的轉移機率。本文主要分析瞭如何利用安全知識圖譜自動地提取出行為語義並對其進行分析,但是距離真正的自動化行為提取還有很長的路要走。
參考文獻
1 http://blog.nsfocus.net/attack-investigation-0907/
2 https://mp.weixin.qq.com/s/d6fpwQlNBUlBba3spJu3wA
3 http://blog.nsfocus.net/security-knowledge-map-helps-identify-internal-threats/
4 Leichtnam L , Totel E , Prigent N , et al. Sec2graph: Network Attack Detection Based on Novelty Detection on Graph Structured Data[M]. 2020.
5 Liu F , Wen Y , Zhang D , et al. Log2vec: A Heterogeneous Graph Embedding Based Approach for Detecting Cyber Threats within Enterprise[C]// the 2019 ACM SIGSAC Conference. ACM, 2019.
6 Han X , Pasquier T , Bates A , et al. UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats[J]. 2020.
7 Milajerdi S M , Eshete B , Gjomemo R , et al. POIROT: Aligning Attack Behavior with Kernel Audit Records for Cyber Threat Hunting[J]. 2019.
8 Milajerdi S M , Gjomemo R , Eshete B , et al. HOLMES: Real-time APT Detection through Correlation of Suspicious Information Flows[J]. 2018.
9 攻擊溯源-基於因果關係的攻擊溯源圖構建技術https://mp.weixin.qq.com/s/ofP4j2TEfNoCYqrLhMsvZA
10 Zeng J , Zheng L C , Chen Y , et al. WATSON: Abstracting Behaviors from Audit Logs via Aggregation of Contextual Semantics[C]// Network and Distributed System Security Symposium. 2021.
11 Michael Färber, Frederic Bartscherer, Carsten Menne, and Achim Rettinger. Linked data quality of dbpedia, freebase, opencyc, wikidata, and yago. Semantic Web, 9(1):77–129, 2018.
12 Zheng Leong Chua, Shiqi Shen, Prateek Saxena, and Zhenkai Liang. Neural nets can learn function type signatures from binaries. In USENIX Security Symposium, 2017
13 Hassan W U, Guo S, Li D, et al. NoDoze: Combatting Threat Alert Fatigue with Automated Provenance Triage[C]. NDSS, 2019.
相關文章
- XAIGen:自動化攻擊特徵提取的專案開源啦2021-01-12AI特徵
- 攻擊JavaWeb應用————2、CS互動安全2018-05-17JavaWeb
- 攻擊JavaWeb應用[2]-CS互動安全2020-08-19JavaWeb
- 【網路安全知識】DDOS攻擊和CC攻擊有什麼區別?2021-09-02
- Akamai:65.1%的Web應用程式攻擊來自SQL隱碼攻擊2019-07-09AIWebSQL
- 攻擊JavaWeb應用————5、MVC安全2018-05-18JavaWebMVC
- 攻擊JavaWeb應用[5]-MVC安全2020-08-19JavaWebMVC
- 【網路安全入門知識】如何有效防禦DDoS攻擊和CC攻擊?2022-01-06
- 【知識分享】伺服器遭受攻擊的方式,如何抵禦攻擊?2023-02-28伺服器
- 攻擊JavaWeb應用[4]-SQL隱碼攻擊[2]2020-08-19JavaWebSQL
- 攻擊JavaWeb應用[3]-SQL隱碼攻擊[1]2020-08-19JavaWebSQL
- 攻擊JavaWeb應用——3、sql注入(上)2018-05-17JavaWebSQL
- 攻擊JavaWeb應用————7、Server篇(上)2018-05-18JavaWebServer
- 報告稱超6成Web應用程式攻擊來自SQL隱碼攻擊2019-07-10WebSQL
- 【網路安全知識入門】SQL隱碼攻擊分為幾類?2021-10-13SQL
- [網路安全知識入門] DDOS攻擊危害有哪些?2021-11-03
- DDoS攻擊、CC攻擊的攻擊方式和防禦方法2019-02-27
- 網路攻擊中主動攻擊和被動攻擊有什麼區別?2022-03-16
- 【網路安全分享】APT攻擊常用的4種攻擊手段!2022-07-12APT
- 知識圖譜|知識圖譜的典型應用2022-10-18
- DDoS攻擊是什麼?是如何進行攻擊的?2022-09-23
- 網路安全中主動攻擊、被動攻擊分別是什麼意思?2022-03-25
- Kali自動化SQL隱碼攻擊神器————JSQL2018-06-07SQLJS
- 利用Burp Suite攻擊Web應用2018-06-27UIWeb
- React 防注入攻擊 XSS攻擊 (放心大膽的用吧)2020-10-12React
- 一種針對Microsoft Office的自動化攻擊方式2023-01-04ROS
- 【網路安全知識】網路安全需注意攻擊型別有哪些2022-12-16型別
- 【知識分享】 伺服器被攻擊怎麼辦?如何防止伺服器被攻擊2023-02-28伺服器
- 【安全篇】APT攻擊是什麼?APT攻擊有哪些危害?2022-07-21APT
- 自動化LFI漏洞掃描攻擊之LFI Suite2018-05-23UI
- 攻擊者使用SQLite資料庫中的惡意程式碼攻擊應用程式2019-08-12SQLite資料庫
- 重要知識點:如何降低DNS攻擊的風險2019-04-29DNS
- 【知識分享】攻擊伺服器的手段有哪些2023-02-16伺服器
- XXE攻擊攻擊原理是什麼?如何防禦XXE攻擊?2023-02-13
- 什麼是CC攻擊?CC攻擊型別【網路安全教程】2021-09-03型別
- CC攻擊分為幾種?遭遇CC攻擊如何防禦?2022-08-03
- Syn Flood攻擊的危害是什麼?Syn Flood攻擊如何應對?2022-10-19
- 攻擊JavaWeb應用————1、JavaEE基礎2018-05-17JavaWeb