徐明迪 崔 峰
(武漢數字工程研究所 武漢 430205)
隨著網絡空間中攻防博弈日趨激烈,攻擊者滲透目標系統的路徑變得更加復雜和隱蔽[1],僅依靠人工進行分析和識別將難以應對。ATT&CK模型[2]作為網絡攻防知識的一種“固化”,將其與網絡安全工具結合,例如蜜罐系統、態勢感知系統,能夠提高網絡安全威脅分析的自動化程度[3],提高安全威脅捕獲的效率。
ATT&CK 模型由MITRE 組織發布,在網絡安全防御方面有諸多應用。國內外對與ATT&CK 模型也開展了許多研究,其中楊萍等[4]通過對大量惡意代碼的詳細分析,總結惡意代碼各種行為事件實現的模式特征,基于ATT&CK 模型提出m-ATT&CK 模 型;潘 亞 峰 等[5]設 計 并 實 現 了 基 于ATT&CK的APT攻擊語義規則模型,用于識別和標記攻擊行為;文獻[6]中對ATT&CK 模型中攻擊技術之間的關聯關系進行研究。
上述研究都是圍繞ATT&CK模型展開,但沒有對模型應用中的復雜性進行考慮。本文針對ATT&CK 模型的應用問題,提出一種基于凝聚層次的改進聚類算法,對ATT&CK 技術集進行聚類簡化,提出一種將ATT&CK 技術集合量化的方法,并考慮到如何確定最佳聚類數據量的問題,將統計假設檢驗與聚類算法結合,由統計假設確定最佳聚類數量。
應用ATT&CK 模型進行攻擊行為識別和標記時,從戰術層面和攻擊手法層面都不適合直接應用。首先,ATT&CK 模型中戰術的抽象層次較高,在ATT&CK的企業版中包括的戰術有訪問初始化、執行、常駐、提權、防御規避、訪問憑證、發現、橫向移動、收集、數據獲取、命令和控制,可以看出上述的戰術作為網絡攻擊階段性的抽象描述,僅以戰術階段作為攻擊行為的標簽不利于對攻擊行為的具體分析;其次ATT&CK 模型提供了一個包含440 項技術的集合,這個集合是作為不同類型攻擊所涉及技術的超集,但MITRE 僅為模型中部分技術提供了檢測規則描述,如果應用ATT&CK模型進行攻擊行為識別將無法做到全部覆蓋。因此本文在ATT&CK 模型的戰術和技術層之間增加一層劃分,解決戰術層過于抽象和技術層無法全覆蓋的問題。
在對ATT&CK 模型的技術集合應用聚類算法進行劃分前,需要研究解決三個問題。首先,如何將ATT&CK 技術集合量化為特征向量;其次,聚類數量如何確定,如何為ATT&CK的技術集合找到最佳的聚類數量;最后,在聚類算法將樣本聚類成k個簇后,如何確定得到的聚類結果具有意義。
針對上述的問題,本文提出一種基于凝聚層次聚類算法的改進,用于對ATT&CK模型的技術集合進行聚類。算法改進部分是,在聚類流程中加入統計假設檢驗步驟,借助統計假設檢驗結果完成對聚類結果的有效性檢驗,同時確定最佳聚類數量。本節中對ATT&CK 模型技術集合的聚類研究按照圖1所示的流程進行。

圖1 模型改進流程
首先對聚類對象ATT&CK技術集合進行量化,為聚類算法提供數據基礎。ATT&CK 模型中的技術均為文本數據,需要將其轉化為向量數據集后才能應用于聚類算法,MITRE 對于技術按照表1 中提供相關字段的組織技術的文本介紹(表中僅列出部分字段),雖然技術的介紹在整體上看是具有結構的,但在不同字段內文本內容是非結構,受作者的寫作風格等因素影響。

表1 ATT&CK模型中技術介紹
參考表1,可以看出與技術相關的數據大部分由文本組成。因此在考慮量化方法時,首先考慮直接對于文本數據的量化,采用自然語言處理領域中常用的處理步驟,對文本數據進行分詞、量化等處理[7],采用上述方法進行量化存在兩方面的不足,首先不同技術描述文本受其作者的主觀因素影響較大;其次直接進行分詞量化,因不同文本長度不同得到的特征向量維度也不同,如果在實現過程中對不同向量維度進行截斷或填充,可能會丟失部分信息??紤]到上述不足,直接采用自然語言處理領域中的文本量化方式是不合適的。通過查閱文獻,在本文中使用同樣由MITRE 提供Groups 知識庫,完成對技術數據集的量化。
Groups 是一個用于整理網上公開入侵情報的知識庫,其作用和貢獻主要是,在安全社區中確定一個通用、統一的名稱進行入侵活動的跟蹤,分析人員使用各種分析方法和術語跟蹤活動集群,例如威脅組、威脅參與者、入侵集和活動。
在量化過程中,本文主要使用表2中的技術/子技術字段,在Groups 知識庫中,每個APT 記錄視被為攻擊實例,并將每種技術均作為攻擊實例的組成屬性,其形式化表達如式(1)所示,式中tn代表ATT&CK模型中的技術,T代表技術集合。

表2 Groups中攻擊實例描述
本文采用特征工程中的二值編碼方法。二值編碼是常用且易操作的量化方式,它只依據某個特征決定是否存在,來決定特征向量中對應位置是1或0,而不是量化出現次數。借助Groups 知識庫,將ATT&CK 模型中的技術統一映射為81 維向量,映射策略為向量中每個維度代表一個Groups 中的攻擊實例,如果該技術在攻擊實例中被使用,則該維度的值為1,反之則為0。經過上述的映射方法處理后,數據集由離散的高維向量組成,特征的結果為0 或1,分別表示攻擊實例中某個技術的負面或正面發生。
在利用Groups知識庫量化的過程中,為了避免并產生誤導性的技術關聯,本文中使用至少包含五種不同技術的攻擊實例進行量化,在本節接下來的部分中對于ATT&CK 技術集合量化得到的向量數據集,均簡稱為ATT&CK數據集。
對ATT&CK數據集進行聚類趨勢評估,判斷其是否具備聚類的基礎,保證聚類結果的合理性。聚類趨勢評估用于檢驗樣本分布的空間隨機性,從而判斷數據是否可以聚類,進行聚類趨勢評估的必要性是因為即使在數據集中沒有顯著的組時,聚類方法也經??梢苑祷鼐垲惤Y果,無論類別下的樣本是否相關[8]。
在聚類趨勢評估中使用霍普金斯統計(Hopkins statistic)[9]方法,Hopkins 統計由Brian Hopkins和John Gordon Skellam 提出,是一種空間統計量,檢驗空間分布的變量的空間隨機性,可以看作是對于給定的數據集D,它由隨機分布生成的概率。具體操作是將數據集D中的點之間的距離與從隨機模擬的數據集DR中得出的點之間的距離進行比較。具體計算步驟如下所示,
1)隨機從D中抽取n個點p1,p2,…,pn,對每個點pi(1 ≤i≤n),找出pi在D中的最近鄰樣本點,并令xi為pi與它在D中的最近鄰之間的距離。
2)隨機從DR中抽取n個點q1,q2,…,qn,對每個點qi(1 ≤i≤n),找出qi在DR中的最近鄰樣本點,并令yi為qi與它在DR中的最近鄰之間的距離。
3)根據步驟1)、2)得到的結果,計算霍普金斯統計量。
在上述步驟中,D表示對ATT&CK 模型技術集合量化后得到的數據集,dist()為計算樣本間距離的函數,函數中分別使用Jaccard 距離[10]和Phi系數[11]進行計算得到不同距離,關于距離度量的選取說明在3.3 節中進一步進行分析。在步驟1)、2)中,隨機數據集使用伯努利分布生成,結合數據集的性質能保證是在樣本空間中均勻取點。對于式(4)的計算結果H,假設D是均勻分布的,缺乏聚類趨勢那么,H將約等于0.5。因此,如果H為0.5可以得出數據是均勻分布的、沒有任何有意義的聚類;假設D不是隨機分布且具有聚類趨勢,那么H將約等于1;對于H約等于0 的情況,此時D可以被認為既不是隨機也沒有聚類趨勢。
對ATT&CK 數據集使用Jaccard 距離和Phi 系數計算霍普金斯統計量,Jaccard 距離得到的HJ為0.59 和Phi 系數得到的HΦ為0.63。HΦ值高于HJ表明使用Phi 系數可以使ATT&CK 數據集具有更好的聚類趨勢。
凝聚分層聚類算法適用于查找具有最大相似性的集合,因為本質上該算法是貪心策略的一種實現,在聚類決策過程中,每一次聚類都是將目前最相似的兩個簇合并,直至聚類結束,從而保證得到聚類結果是最相似的。凝聚層次聚類算法首先得到樣本數據的多級分層,然后通過指定聚類數量k或截斷高度得到最終聚類結果。
在獲得ATT&CK數據集之后,可以使用層次聚類算法獲得最終樹狀圖,但仍然不能推斷出技術之間關聯,因為需要確定樹的截斷高度(即最后的聚類數量)。因此本文提出一種基于凝聚層次聚類算法的改進,在聚類流程中加入統計假設檢驗步驟,借助統計假設檢驗結果進行聚類數量的選擇。
在統計假設檢驗步驟中采用的零假設驗證,通常是數據分析實驗的一部分,指進行統計檢驗時預先建立假設,零假設成立時有關統計量應服從已知的某種概率分布,當統計量的計算值落入否定域時,可知發生了小概率事件,應否定原假設[12]。
將統計假設檢驗與聚類算法進行結合,將ATT&CK 數據集產生的樹狀結構與零分布產生的樹進行比較來分析聚類的有效性,并允許在所需的置信度水平上推斷出統計上顯著的結果,統計假設檢驗所用的數據集由隨機伯努利分布生成,產生的數據與ATT&CK數據集具有相同方差,隨機數據集上產生的空樹表示為T0。如果在指定的階段高度TD中的簇數與T0的簇數明顯不同,則聚類產生的結果將具有統計意義。具有統計意義的層次結構樹的結果可以得出這樣的結論,即所產生的關聯不同于隨機產生的結果,從而為技術關聯提供了有效性基礎?;谀蹖哟尉垲惖母倪M算法流程如下。

應用聚類分析ATT&CK 數據集的過程是根據每個數據之間的相異度進行劃分,因此選擇相異度的度量標準對于聚類結果有較大影響。在應用中,聚類算法多使用特征空間中的歐式距離作為度量標準計算不同樣本之間的相異度[13]。當使用歐式距離作為相異度測量時,樣本之間的距離越小,則說明兩者之間越相似,越有可能被劃分到同一個簇。聚類使用的相似性度量(或稱為距離度量)是在樣本數據上執行,因此相似性度量方法隨樣本集性質的不同而不同。因此必須對本文中使用的數據集中的變量使用合適的距離度量。歐式距離度量標準通常應用于連續變量,而本文中的ATT&CK數據集具有離散性,因此需要考慮歐式距離以外的度量方法。
對于ATT&CK數據集的數據由二元變量組成,通過查閱文獻[6]確定Jaccard距離和Phi系數相關距離是最合適的。Jaccard 距離是用來衡量兩個集合差異性的一種指標,Jaccard 距離是Jaccard 相似系數的補集,被定義為1減去Jaccard相似系數,Jaccard 相似系數是用來衡量兩個集合相似度的一種指標。在用于本文中計算任何兩個技術Ti和Tj之間的Jaccard相似系數時,定義如式(5)所示。
其中,需要n的下標為兩個數字,從左至右分別代表Ti和Tj是否出現,n11代表Ti和Tj出現在同一個APT 攻擊實例中的頻次,n01代表Ti不出現在某個APT 攻擊實例而Tj出現的頻次,n10與n01定義相反,在式(5)中Jaccard相似系數的計算不考慮n00的值。Jaccard距離度量技術Ti和Tj之間的不相似度,并定義為Jaccard 相似系統的補碼,即1-Js(Ti,Tj)。Jaccard 距離可以解釋為,Ti和Tj涉及的攻擊實例的交集除以它們的并集之比。
Phi 系數是一個經驗的非參數相關度量,專門用于二進制數據。在使用Phi 系數度量不同技術時,首先將待度量的技術排成2×2 表,具體排列情況見表4。Phi系數的基本概念是,兩個二元變量的觀察值若大多落在2×2 列聯表的主對角線字段,則這兩個技術呈正相關。反之,若兩個二元變量的觀察值大多落在非對角線字段,則這兩個變量呈負相關。任意兩種技術之間Phi 系數與計算方如式(6)所示。
式(5)、式(6)中出現n的定義見表3。

表3 Jaccard距離和Phi系數中n值定義
在確定樣本間的距離度量方式基礎上,在本文中使用Ward鏈接[14]作為簇間距計算方式。因為相比于Ward鏈接,單鏈接方法會創建松散的簇;全鏈接方法會創建緊密的簇,但異常點對聚類結果影響較大。
在本節實驗部分通過數據預處理、選取評價指標、算法實現和設計對比驗證凝聚分層的改進聚類算法的效果。
在實驗對比中,本文對ATT&CK數據集采用模糊聚類算法[15]中的PAM 算法進行[16]聚類,將模糊聚類得到結果與凝聚層次聚類算法得到的結果進行比較。
圖2 每種劃分的聚類方法的聚類圖和相應的數據集用不同的顏色表示,其中橫縱坐標軸為ATT&CK 數據集的維度1 和維度2,圖像中的輪廓為數據集在維度1和維度2組成平面上的投影。模糊聚類算法對ATT&CK 數據集的結果如圖2 所示,從指定維度上的投影可以看出,得到的技術聚類之間相互重疊和包含,難以區分任何潛在的技術關聯。

圖2 模糊聚類結果
對于ATRT&CK 數據集,學習到的層次聚類樹的結果如圖3 所示,通過基于凝聚層次的改進聚類算法最終得到54 個簇,每個簇在樹中以不同的顏色表示。由于層次聚類算法的特點,聚類結果不會出現簇間的交集,因此需要對改進聚類算法的結果進一步分析,驗證得到聚類結果是有效的。

圖3 基于凝聚層次改進的聚類算法結果
通過選取部分聚類結果進行原理分析說明聚類結果的合理性,對聚類得到的子集合{T1494,T1115,T1485,T1486,T1487}進行分析,集合中的元素按照順序分別代表端口監控、運行數據操縱、發送數據操縱、剪貼板數據獲取、數據破壞、破壞性數據加密、磁盤數據結構擦除。由包含的攻擊技術可以看出,該子集代表了一種竊取或破壞數據的攻擊模式。該模式下,攻擊者可以通過運行數據操縱、發送數據操縱來間接影響目標進程的正常運行,或者進行數據收集、竊取信息,然后在下一步中可以選擇數據破壞也可以進行加密勒索。上述的順序關系只是舉例說明,實際環境下可能是竊取、加密勒索等同時出現。
攻擊技術的子集對于ATT&CK 模型的改進主要體現在兩方面,首先,提高蜜罐監控的針對性,可針對ATT&CK模型的技術子集進行數據監控;其次提高關聯分析的能力,當捕獲到子集中一個攻擊技術時,應該關聯考慮子集中其他攻擊技術,這些攻擊技術出現的可能性較高。
針對網絡攻擊模型應用于蜜罐系統,分析應用過程存在的問題,并提出一種基于凝聚層次聚類的改進算法,用于對ATT&CK模型的技術集合進行聚類。改進算法在聚類流程中加入統計假設檢驗步驟,借助統計假設檢驗結果對聚類結果的有效性檢驗,同時確定最佳聚類數量k。對比不同聚類算法分析和分析聚類結果,驗證改進聚類算法能夠對ATT&CK模型的技術集合產生有效聚類結果。
本文針對ATT&CK模型的應用的復雜性問題,提出了一種基于聚類算法的ATT&CK 模型改進方法,首先使用Groups 知識庫對ATT&CK 技術集合進行量化,在量化得到的特征向量數據集上使用Jaccard 距離和Phi 系數相關距離進行聚類趨勢度量,驗證量化后的數據集具有聚類趨勢,最后在凝聚層次聚類算法中加入統計假設驗證用于確定最佳聚類數量,并通過實驗和分析驗證聚類結果的有效性。