一種構建網絡安全知識圖譜的實用方法——賈焰
文章鏈接:https://www.ixueshu.com/document/22cde1e97521595bc36aadb3dd6ff858318947a18e7f9386.html.
文章主要工作
- 論述了構建網絡安全知識庫的三個步驟,並提出了一個構建網絡安全知識庫的框架;
- 討論網絡安全知識的推演
1.框架設計
總體知識圖譜框架如圖1所示,其包括數據源(結構化數據和非結構化數據)、信息抽取及本體構建、網絡安全知識圖譜的生成:
1.1 網絡安全本體構建
文中提出了一個基於網絡安全知識庫的五元組模型,該模型包含:概念、實例、關系、屬性和規則。網絡安全知識庫的架構如圖2所示。
該架構如圖2所示,其中包括三個本體:資產(Assets)、漏洞(Vulnerability)和攻擊(Attack)。圖3表示網絡安全本體,其中包含五個實體類型:漏洞、資產、軟件、操作系統、攻擊。
1.2 基於機器學習提取網絡安全相關實體
由於條件隨機場模型(CRF)保留了條件概率框架的優點,如最大熵Markov 模型,也解決了標記偏差的問題,所以適用於命名實體識別。
Stanford NER提供了線性鏈條件隨機場(CRF)序列模型的一般實現,於是文中使用它來提取網絡完全相關的實體。下面是Stanford NER的一些主要特征:
- UseNGrams:利用n-gram取特征,即詞的子串。
- MaxNGramLeng:這個特征的值類型為整型。如果這個特征的值為正,則大於該值的n-gram將不會在 模型中使用。在本文中,我們將maxNGramLeng的值設 置為6。
- UsePrev:這可以給我們提供<previous word, class of previous word>的特征,並與其他選項一起啟用, 如<previous tag,class>。這導致基於當前單詞與一對< previous word,class of previous word >之間的關系的特 征。當有連續的詞屬於同一個類時,這個特征將是非常 有用的。
- UseNext:和UsePrev特征非常相似。
- UseWordPairs:這個特征基於兩個詞對—— <Previous word,current word,class> 和 <current word, next word,class>。
- UseTaggySequences:這是一個重要的特征,它 使用類的序列而不是單詞的集合,而是使用第一、第二 和第三順序類和標簽序列作為交互特征。
- UseGazettes:如果為真,則由下一個名為“gazette”的特征將把文件指出為實體字典。
- Gazette:該值可以是一個或多個文件名(以逗 號、分號或空格分隔的名稱)。如果從這些文件加載公 開的實體詞典,每行應該是一個實體類名稱,后跟一個 空格,后面再跟上一個實體。
- CleanGazette:如果這個值為真,則僅當全部詞 在字典中被匹配時,此特征才會觸發。如果在字典中 有一個詞“Windows 7”,那么整個詞應該在字典中進 行匹配。
- SloppyGazette:如果這個值為真,詞和字典中 的詞局部匹配也能觸發這個特征,如“Windows ”可以 和“windows 7”進行匹配。
2. 知識推演
2.1 數據源
- 漏洞的來源:CVE、NVD、 SecurityFocus、CXSECURITY、Secunia、中國國家漏 洞數據庫(CNVD)、 CNNVD和安全內容自動化協議中 國社區(SCAP)。
- 攻擊的數據來源
(1).一類來自信息安全網站,其中包括Pediy BBS、Freebuf、 Kafan BBS和開放Web應用安全項目(OWASP);
(2).另一 類來自企業自建信息響應中心,包括360安全響應中心 (360SRC)和阿里巴巴安全響應中心(ASRC)。
2.2 屬性推演
如圖4所示,圖中有三個實例:Ni、Nj和Nl,每一個實例對應一對(key,values)值。
屬性值Valueik的 預測公式如下:
對於實例Ni,通過計算下述公式可以得到新的屬性,如圖5所示。
2.3 關系推演
常用推理方法有三種:基於嵌入的技術、基於低維 向量表示和路徑排序算法。在本文中,我們選擇使用路徑排序算法。路徑排序的基本思想是使用連接兩個實體的路徑作為特征來預測兩個實體之間的關系。實例Ni、Nj和Nk 之間的屬性值和關系如圖6所示。
關系推理的預測公式如下:
式中,π為所有從l到j的可達路徑,length(π)≤n。如果 Score(l, j)≥τ,τ為閾值,則elj成立;否則不成立。通過路徑排序算法可以得到新的關系,如圖7所示。
2.4 評估標准
在信息檢索和提取系統中,有兩個主要的評估指 標,包括精確率和召回率。有時,為了全面評估系統的性能,通常計算精確率和召回率的調和平均值。這就是我們通常所說的F-Measure。在本文中,我們使用 F-Measure的特殊形式F1值。精確率、召回率和F1值由真正、假正和假負定義。定義如下:
- 真正(TP):將正類預測為正類數。
- 假正(FP):將負類預測為正類數。
- 假負(FN):將正類預測為負類數。
精確率(Precision)由以下公式給出:
召回率(Recall)由以下公式給出:
F1值由以下公式給出:
2.5 實驗結果(主要復制文章細節)
為了驗證useGazettes的影響,我們建立了三個模型 (NER1、NER2和NER3)。
- NER1沒有使用useGazettes作為它的特征
- NER2使用useGazettes,並選擇了cleanGazette選項
- NER3也使用了useGazettes,但是它選擇了 sloppyGazette選項。
然后,采用了10倍交叉驗證的方法 來評估這些模型,將數據分成10個數據塊,將十分之九的塊用作訓練數據,其余用作測試數據。
NER1的平均識別結果如表1所示,該表顯示結果的精度相對較高。對於F1度量,軟件和漏洞的識別率相近,且高於其他任何實體類型,也就是說, 軟件和漏洞的識別在整體識別效果方面取得了良好的表現。
然后,我們使用了包含useGazettes的特征,並選擇 了cleanGazette的選項來訓練NER2。NER3是根據包含 useGazettes和sloppyGazette兩個選項的特征進行訓練的。 平均識別結果如表2所示。
如表2所示,在NER2的識別結果中,對軟件的識別取得了良好的整體表現。對於NER3,OS的識別實現了高F1值。就軟件和操作系統的認可而言,NER3的整體 性能比NER2好。這個結果表明sloppyGazette選項有助於識別與網絡安全相關的實體。NER2和NER3的后果和平均值的F1測量值仍然很低,均小於70%。圖8給出了這三種模型之間的直觀比較。
from:https://cloud.tencent.com/developer/article/1556641
1安全知識圖譜
智慧安全知識圖譜[9](Intelligent Cyber Security Knowledge Graph)是知識圖譜在網絡安全領域的實際應用,包括基於本體論構建的安全知識本體架構,以及通過威脅建模等方式對多源異構的網絡安全領域信息( Heterogeneous Cyber Security Information)進行加工、處理、整合,轉化成為的結構化的智慧安全領域知識庫。
針對信息安全領域知識圖譜構建的兩個關鍵要素,構建了威脅元語言模型對威脅知識的結構化描述,包括概念、實體、屬性的定義以及知識關系的定義。研究中依據STIX2.0以及領域專家知識,構建三層安全知識圖譜,如下圖所示。知識圖譜輔助安全事件分析、安全合規標准、APT追蹤溯源等實際業務場景所需的數據表示和語義關系。


圖2.1 安全知識圖譜
其中信息層為知識圖譜從外界抽取的知識實體,知識層和智慧層為信息安全領域關鍵概念及這些概念之間的邏輯語義關系。
在威脅元語言模型中,威脅實體構建和實體關系是兩個最為關鍵兩個步驟。
2圖嵌入
知識圖譜最大的特點是具有語義信息,然而構建好的內網安全知識圖譜如何應用到內網威脅識別中。這就需要一些圖分析方法,傳統的圖分析方法主要是:路徑分析(可達性,最短路徑,k-out),社區發現等。利用圖模型做內網威脅識別,一個很直接的方法是利用社區發現[4,5,6]方法對威脅主體進行社區划分,把威脅度高的攻擊主體划到一起,從而實現威脅識別。理論上這種方法是可行的,因為構建的實體與實體之間的關聯和行為在社區內關系緊密,而在社區間關系稀疏。
而現有社區發現方法一方面只考慮頂點的鄰居關聯,忽略了潛在的近鄰關系,同時,社區發現的復雜度較高,不適合大規模圖分析。
為了對這種高維圖模型進行降維,圖嵌入技術應運而生,圖嵌入的本質是在盡量保證圖模型的結構特性的情況下把高維圖數據映射到低維向量空間。發展到現在圖嵌入技術已經不僅僅是一種降維方法,與深度學習相結合后圖嵌入技術可以具有更復雜的圖計算與圖挖掘功能。

圖2.2 圖嵌入流程
首先圖2.2(a)中是用戶行為,從知識圖譜的角度可以抽象成圖2.2(b)中的圖模型。在當前推薦系統和安全領域都比較常見,而對於抽象的圖模型如何利用圖嵌入技術處理呢?首先,DeepWalk[1,2,3]將隨機游走得到的節點序列當做句子,從截斷的隨機游走序列中得到網絡的部分信息,再經過部分信息來學習節點的潛在表示。該方法借助語言建模word2vec中的一個模型,skip-gram來學習節點的向量表示。將網絡中的節點模擬為語言模型中的單詞,而節點的序列(可由隨機游走得到)模擬為語言中的句子,作為skip-gram的輸入。可以看出在表示圖模型中圖嵌入技術有天然的優勢,因為它本身把多維圖模型映射到同一向量空間,頂點之間的關聯關系可以通過頂點向量的相似度計算,任一頂點與其他頂點的潛在關系都可以很快的計算出來。
當前已有一些針對社區發現的圖嵌入技術[6,7]。社區嵌入可以描述其成員節點在低維空間中的分布情況,所以這次不能簡單的把社區看成一個向量,而是低維空間中的分布(高斯混合分布)。
一方面,節點嵌入可以幫助改進社區檢測,從而輸出良好的社區以適應更好的社區嵌入,另一方面,社區嵌入可以通過引入a community-aware 高階近似性來優化節點嵌入。在這指導下,提出了一個新的社區嵌入框架,如圖2.3所示。

圖2.3 社區感知的圖表示框架
三、基於安全知識圖譜的內網威脅識別
基於知識圖譜的內網威脅主要包括三部分:圖模型構建、圖嵌入和威脅評估。針對內網威脅已經有一些檢測組件,但是通常這些檢測設備之間缺少關聯性,需要安全人員組合不同組件的告警利用經驗分析,而圖模型本身具有很強的關聯性,可以有效關聯多源數據,並且易於下鑽。
1圖模型構建
圖模型的構建主要是確實圖中的實體與關系,實體的選擇通常比較容易確定,通常以ip、端口、網段、告警、文件、日志等實體為主,而關系通常分為顯示關系與隱式關系,顯示關系是直接可以得到的關系,而隱式關系是通過數據挖掘方法得到的一些數據中暗含的關聯關系。
1.1
實體構建
實體的構建根據場景的不同會有不同選擇,可以參照STIX2.0中的十二個對象域的划分,以及當前世界范圍內對安全元素描述的使用較為廣泛的標准來確定實體,本文只介紹幾個核心實體類型:
攻擊模式:攻擊發起者使用的策略、技術和程序,參考:通用攻擊模式枚舉和分類(CAPEC)、MITRE公司的PRE-ATT&CK、ATT&CK、Kill Chain
目標客體:攻擊目標資產,參考:通用平台枚舉(CPE)
威脅主體:攻擊發起者,可以是個人、團體和組織,參考:威脅代理風險評估(TARA)中的威脅代理庫
戰役:針對具體目標的一系列惡意行為或攻擊
威脅指示器:在檢測或取證中,具有高置信度的威脅對象或特征信息。
內網環境中的威脅主體是指攻擊的發起者,通常指兩類,一類是組織內部人員由於個人原因有意或無意的造成的違規行為;一類是外部用戶偽裝成內部用戶進行一些攻擊行為。目標客體通常是攻擊的目標,通常是網段、端口、終端及文件等。攻擊模式包含已有的一些通用攻擊策略相關知識,如果攻擊鏈,att&ck,等,現在一些威脅檢測組件產生的告警信息已經包含了部分相關知識。
1.2
關系構建
關系的構建包括直接關系與間接關系構建。直接關系比較容易得到,內網環境中通常能通過日志、沙箱、原始流量和外部數據直接得到的關系對,例如,文件訪問域名,域名解析IP,文件訪問IP等。
間接關系是通過間接關聯得到的關系,比如使用同一種攻擊工具的攻擊者有一定的相似性,文件與文件通過相似度計算得到的相似性等等都屬於間接關系。這樣通過直接關系與間接關系的構建就構成了內網安全知識圖譜。
工業互聯網安全漏洞知識圖譜構建
本文提出的基於知識圖譜的工業互聯網安全漏洞分析方法如圖1所示。首先從ISVD漏洞庫原始數據中提取出全部的3 727條工業互聯網安全漏洞信息,形成漏洞節點。此外,對漏洞原始信息進行半自動化分析,提取出漏洞信息中涉及的工業互聯網安全事件以及工業互聯網產品,分別形成事件節點和產品節點。在提取出各類節點之后,將節點信息注入關聯分析引擎,對事件與漏洞、漏洞與產品、產品與事件這三類關聯關系進行梳理與記錄。至此,工業互聯網安全漏洞知識圖譜關鍵組件:節點、節點間的關聯關系都已經生成。將節點與節點間關聯關系存儲至Neo4j圖數據庫的方式有兩種:一是利用Python庫py2neo實現數據的插入;二是使用Neo4j官方提供的工具Neo4j-import,將節點信息文件nodes.csv與關聯關系信息文件relation.csv導入Neo4j。
圖1工業互聯網安全漏洞知識圖譜分析方法
2.1原始數據信息提取
ISVD中的漏洞信息是本文進行研究與分析的基礎數據信息。主要包括如下字段:isvdId(ISVD漏洞ID)、name(漏洞名稱)、dateTime(發布時間)、cveId(CVE-ID)、riskLevel(風險級別)、vulType(漏洞類型)、description(漏洞描述)、deviceList(影響設備)、refer(參考資料)、supplier(供應商)、patch(補丁信息)、score(漏洞評分)、eventId(事件ID)、eventDescription(事件描述)等。每一個漏洞信息條目不僅對漏洞自身屬性進行了詳細的描述,而且對漏洞涉及的產品和事件進行了記錄。但是產品和事件信息與漏洞信息雜糅在一起,難以梳理出漏洞、產品、事件之間的邏輯關系。因此,本文的工作在此基礎上進行了信息的提取與關聯分析。
信息提取引擎的工作,目的是將漏洞信息、事件信息、產品信息從原始數據中提取出來,並形成節點,用於知識圖譜的構建。
首先,介紹信息提取引擎的提取規則。
規則1:漏洞節點中的eventId、eventDescription字段,直接映射到事件節點中的eventId、eventDescription。
規則2:通過正則表達式在eventDescription中匹配事件時間的描述,若存在,則規范化為****-**-**的形式並記錄在eventTime字段;若不存在,則將漏洞節點的dataTime直接映射到事件節點的eventTime。
規則3:將漏洞節點中的deviceList直接映射到事件節點的deviceList,若同一eventId對應多條漏洞,則將deviceList進行增量補充。
規則4:將漏洞節點中的cveId、cnnvdId、cnnvdId等唯一標識漏洞條目的字段,按照上述優先級直接映射到事件節點的vulnerabilities,若同一eventId對應多條漏洞,則將vulnerabilities進行增量補充。
規則5:遍歷漏洞節點,將其中的deviceList字段內容進行分割,並賦予唯一性標識productId:PID,規范化數據以自動化方式直接映射,非規范化數據使用人工處理的方式。
規則6:將漏洞節點中deviceList切割后的內容直接映射到產品節點的productVersion字段。
規則7:若漏洞節點中的漏洞描述字段(description)包含漏洞涉及產品的相關描述(模糊匹配),則將匹配到的內容映射到產品節點的productDescription。
規則8:將漏洞節點中的cveId、cnnvdId、cnnvdId等唯一標識漏洞條目的字段,按照上述優先級直接映射到產品節點的vulnerabilities,若同一產品對應多條漏洞,則將vulnerabilities進行增量補充。
其次,介紹各類節點的構成以及節點示例。對於漏洞節點來說,其內部構成與ISVD漏洞數據結構和內容沒有大的差別,較為完整與詳細地記錄了漏洞的自身屬性以及相關的產品與事件屬性。以ISVD-2014-0824漏洞為例,其漏洞節點部分信息如表1所示。
對於事件節點,維度相較於漏洞節點少一些。一方面,安全事件自身的敏感性導致其事件細節不會被廣泛公開,這就給信息安全研究者的事件分析帶來了難度;另一方面,安全事件數據側重於語言描述,缺乏結構性信息。事件ID(eventId)用來唯一標識事件,事件描述(eventDescription)從事件發生背景、攻擊手段、事件影響等方面進行說明,事件發生時間(eventTime)記錄事件發生的時間屬性,設備列表(deviceList)記錄了此次安全事件中主要涉及的存在漏洞的產品信息,漏洞(vulnerabilities)記錄了該事件涉及的漏洞編號。以事件ISED-2014-0001為例,其事件節點信息如表2所示。
產品節點記錄了工業互聯網安全漏洞涉及的主要產品的ID、產品版本、產品描述及其相關漏洞編號。由於原始數據中對產品的描述並不多,因此當前產品節點信息量不夠豐富。在后續的工作中,建設工業互聯網產品知識庫並與ISVD進行信息共享以實現優勢互補,是一個重要的研究方向。以產品ISPD-2018-0001為例,其產品節點信息如表3所示。
2.2關聯分析
知識圖譜中的另一個重要構成要素就是關系(Relationship)。關系,將各個分散的節點關聯在一起,表現出邏輯性,體現了數據的深層次價值。工業互聯網安全漏洞知識圖譜關注於三類關系:事件—漏洞關系、漏洞—產品關系、產品—事件關系。關聯分析引擎的作用就是以前文所述節點為基礎,對這三類關聯關系進行挖掘並存儲。
首先,介紹關聯分析引擎的關聯規則。
規則9:遍歷事件節點,對於eventId:EID、vulnerabilities字段數值同時存在的情況,對每一個從eventId:EID到vulnerabilities的映射,建立一個從事件ID指向漏洞ID的關系。
規則10:遍歷產品節點,對於productId:PID、vulnerabilities字段數值同時存在的情況,對每一個從productId:PID到vulnerabilities的映射,建立一個從產品ID指向漏洞ID的關系。
規則11:遍歷事件節點,對於eventId:EID、vulnerabilities字段數值同時存在的情況,以vulnerabilities為線索遍歷產品節點,對每一個從eventId:EID到productId:PID的映射,建立一個從事件ID指向產品ID的關系。
其次,介紹各類關系的構成以及關系示例。
事件—漏洞關系包括事件ID(:EID)、類型(type)、漏洞ID(:VID)三個字段。以ISED-2014-0001事件為例,該事件涉及兩個漏洞,類型字段為include,兩個漏洞分別是ISVD-2014-0824、ISVD-2014-0015,如表4所示。
漏洞—產品關系包括產品ID(:PID)、類型(type)、漏洞ID(:VID)三個字段,如表5所示。
事件—產品關系包括事件ID(:EID)、類型(type)、產品ID(:PID)三個字段,ISED-2014-0001事件為例,該事件涉及7個產品,類型字段為involve,如表6所示。