葛維靜,馮園園,劉宗洋,許賢龍,張 譯,劉洋
(成都深思科技有限公司,四川 成都 610095)
高級持續(xù)性威脅(Advanced Persistent Threat,APT)攻擊是指攻擊者使用多種先進手段,對特定目標展開的持續(xù)的、高威脅性的網絡攻擊活動,它有3 個重要特征:(1)攻擊能力強,這體現了APT 中的A(既先進性)這一方面;(2)持續(xù)時間長,這體現了APT 中的P(即持續(xù)性)這一方面;(3)目標特定,危害程度大,這體現了APT中T(即威脅性)這一方面[1]。這種攻擊活動的發(fā)起者往往具有較強的政治背景,攻擊活動具有極強的隱蔽性和針對性,而攻擊活動的受害者也往往要承受巨大的損失。
根據奇安信發(fā)布的《全球高級持續(xù)性威脅(APT)2021 年度報告》披露的數據,2021 年度全球APT攻擊的主要目標包括政府、醫(yī)療、科技、國防、制造、運輸、教育、航空、通信、能源等社會生活的方方面面。攻擊手段也有從傳統的魚叉攻擊向大量利用0day 漏洞發(fā)展的趨勢。此外,針對基礎設施及供應鏈攻擊的事件愈發(fā)泛濫,甚至有越來越多的針對網絡安全產品的攻擊活動,APT 攻擊的發(fā)生頻率和威脅程度呈持續(xù)擴大的態(tài)勢[2]。
APT 攻擊不僅危害性大,而且隱蔽性強。2022年2 月23 日,奇安盤古實驗室發(fā)布報告,發(fā)現隸屬于美國國安局的“方程式”組織利用頂級后門,對中國等45 個國家開展了長達十幾年的名為“電幕行動”的網絡攻擊,攻擊目標所屬的行業(yè)涵蓋了電信、大學、科研、經濟、軍事等。
我國是APT 攻擊的最大受害國之一。長期以來,“海蓮花”“蔓靈花”“虎木槿”“方程式”等APT 組織對我國進行了持續(xù)性的網絡攻擊,使相關領域遭受了極大的損失。而且,針對政府、國防、能源、金融等重點行業(yè)的攻擊頻率在最近幾年都有100%以上的漲幅,個別行業(yè)甚至有200%以上的漲幅[3]。
APT 攻擊的溯源一直都是網絡空間攻防中極為重要的一環(huán)。做好溯源工作不僅能使相關部門掌握APT 攻擊的活動規(guī)律,做好應對與防范,有效減少損失,還能使我國在面對敵對勢力在網絡安全問題上的輿論攻擊的時候,拿出確鑿的證據進行有力的反駁,有效維護國家尊嚴。
在常見的網絡攻擊活動中,典型的攻擊過程如圖1 所示。攻擊者通過多個中間節(jié)點(路由器),連接到受害者的主機,或者把攻擊載荷投送到受害者的主機上。在這個過程中,攻擊者到受害者之間的每個節(jié)點都會留下日志記錄。攻擊發(fā)生后,追蹤者根據掌握到的攻擊數據包特征,與獲取到的各個路由節(jié)點的日志記錄進行匹配,如果匹配成功,則可斷定攻擊的數據流經過這一節(jié)點。如此一級一級地追蹤,直至發(fā)現真正的攻擊者。
圖1 網絡攻擊過程模型
這種溯源的方法可以看作對攻擊過程的一種逆向追蹤,但使用這種方法進行溯源具有如下困難:
(1)需要獲取并存儲大量中間路由節(jié)點的日志數據[4],而這往往需要使用行政手段得到網絡運營商(Internet Service Provider,ISP)的支持[5],對于一般的企業(yè)或單位來說具有較大的難度。
(2)中間環(huán)節(jié)易中斷。跟蹤者往往無法獲取到境外運營商的路由節(jié)點日志數據,對于來自境外的網絡攻擊,追蹤鏈就會中斷。而一旦追蹤鏈中斷,往往會導致前期的追蹤工作前功盡棄[6]。
(3)如今的網絡攻擊大量使用僵尸網絡,即使費盡周折找到了發(fā)起攻擊的IP,最終也往往是僵尸網絡,還是難以確定攻擊者的身份。
綜合以上原因,這種溯源的方式在面對有組織的APT 攻擊的時候成功率會大大降低,而成本則會大大增加。
所謂的包標記是指在網絡節(jié)點(如路由器)中以特定的概率對通過的數據包進行標記,并將路徑信息標記在IP 數據包的預留字段中[7]。在受害者接收到數據包后,通過解析其中的標記信息,即可重構數據包的路徑。包標記過程如圖2 所示。
圖2 包標記技術[7]
使用包標記技術進行溯源,無須再存儲海量的中間節(jié)點產生的日志數據,然而還是需要運營商對中間節(jié)點進行特殊的改造和設置。同時,上文所述的基于日志數據的溯源方法中存在的中間環(huán)節(jié)易中斷且無法對使用僵尸網絡的攻擊者進行溯源的問題依然存在。
為了解決以上兩種方法的數據獲取難的問題,陳周國等人[7]提出了一種基于主動感知數據的溯源技術框架,其架構如圖3 所示。
圖3 基于主動感知數據的溯源框架
在此方法中,網絡感知是基礎,可以通過拓撲主動發(fā)現、網絡掃描和滲透等多種主動感知技術進行信息獲取。追蹤溯源模塊則對感知到的數據進行分析處理,重構數據傳輸路徑,并將結果與感知及策略管理模塊進行交互,以動態(tài)調整系統運行策略和感知內容。
在上述溯源方法中,溯源過程需要巨大的人力成本。在面對愈發(fā)頻繁和復雜的APT 攻擊的情況下,這種溯源方式的效率日益低下。
近幾年,基于流量還原的網絡空間態(tài)勢感知技術不斷發(fā)展,相關產品也已在市場上取得了不錯的反響。通過對流量還原數據的分析和挖掘,可以發(fā)現網絡流量中的攻擊行為,并將其作為風險數據存儲到單獨的風險數據庫中。本文基于這些挖掘出的風險數據,提出了一種APT 攻擊溯源的新思路。其整體框架和溯源流程分別如圖4、圖5 所示。
圖4 基于網絡流量風險數據的溯源方法整體框架
圖5 基于網絡流量風險數據的溯源流程
APT 攻擊溯源的最終目的是定位到發(fā)起攻擊的組織或個人[8]。APT 組織往往都與特定的政治實體有關聯,在一段時間內具有較為固定的攻擊目標、武器庫、漏洞庫等,這些特征就可以成為確定一個組織的不同的維度。因此,溯源的過程可以分解成確定這些特征維度的過程。確定了維度之后,再與已有的APT 組織情報庫[9]進行匹配,就可以定位到某個具體的組織[10]。
在圖5 所示的溯源流程中,先基于風險數據進行聚類分析,把具有相似特征的多種類型的風險數據聚合在一起;然后再基于這些聚類的結果進行維度分析,得到APT 組織的攻擊目標、時區(qū)、語言等維度的數據;最后基于分析得到的各個維度的結果,與APT 組織情報庫中的組織特征進行匹配,確定該組織是否是某個已知的APT 組織,或者是一個未知的組織。
本文重點研究在此方法中對風險數據進行聚類的過程。
2.2.1 定義
定義1:聚類(P)。把一批風險數據劃分成不同的數據集的過程。
定義2:線索(C)。一條風險數據就是一個線索,如一封釣魚郵件、一個木馬樣本等。
定義3:維度(D)。為方便對數據進行數學表示,而對數據進行拆分描述的不同的側面。
定義4:元素(E)。從風險數據中提取出來的各個維度的值。
定義5:線索集(S)。一批風險數據的集合。
線索與元素的關系如圖6 所示。
圖6 線索與元素的關系
2.2.2 數學模型
根據以上定義,整個聚類的過程如圖7 所示。
圖7 聚類過程的數學表示
在圖7 中,S0表示風險數據庫中的一批線索的集合,P表示聚類的過程,S1,S2,S3,…,Sn表示聚類得到的線索集,其中,
2.2.3 聚類算法
在本算法中,前置條件是需要有一批可以進行維度拆分的網絡流量風險數據。首先對數據的各個維度進行特征提取,然后轉換得到每個維度的元素值與線索集的映射。若用E(Dn)i表示此映射中任意一個鍵值對的key,Si表示映射中任意一個鍵值對的value,則此鍵值對的含義就是Si中的每一條線索都可以在維度Dn上提取出相同的元素值E(Dn)i。
得到以上映射之后,把映射中所有鍵值對中的值兩兩之間取交集,得到多個新的線索集。這些新的線索集中的線索,彼此之間都有至少2 個維度的元素值是相同的。然后在這些取交集得到的結果線索集中,過濾出線索數量超過閾值的線索集,作為后續(xù)聚類操作的聚類中心。
對每一個聚類中心的線索進行特征提取,然后針對原始線索集中不在任何一個聚類中心的線索,分別計算其與每一個聚類中心的歸屬度。歸屬度的具體算法:聚類中心在每個維度上的所有元素值都與線索對應維度的元素值計算相似度,如果有多個值,就對計算出來的相似度求和,即得到在此維度上的分數;然后把各個緯度的分數按照對應維度的權重計算加權平均值,得到一個線索歸屬于某個聚類中心的歸屬度。得到任意一個不在聚類中心的線索歸屬于任意一個聚類中心的歸屬度后,把線索加入到歸屬度超過閾值且分數最高的聚類中心。在此過程中,每個聚類中心又吸收到了與之歸屬度超過閾值且分數最高的線索。
最后計算不同的聚類中心兩兩之間的相似度。相似度的具體算法:首先,對兩個聚類中心在同一維度的元素值計算彼此之間的相似度,如果有多個值,就把多個值求和,得到的結果即為在此維度上的分數;其次,把各個緯度的分數按照對應維度的權重計算加權平均值,就得到兩個聚類中心的相似度。求得所有聚類中心兩兩之間的相似度之后,把相似度分數超過閾值的兩個聚類中心進行合并,從而得到最終的聚類結果。
上述聚類算法的過程可以用如下的數學方法進行描述:
步驟1:如圖8 所示,遍歷線索集S0,對于每一條線索C,提取維度特征E(D1),E(D2),E(D3),…,得到線索對應特征向量的映射M1。
圖8 聚類算法步驟1
步驟2:如圖9 所示,轉換映射M1,得到的元素值對應線索列表的映射M2。
圖9 聚類算法步驟2
步驟3:如圖10 所示,對映射M2中的線索列表兩兩之間取交集,得到線索集
圖10 聚類算法步驟3
步驟4:如圖11 所示,對上述結果進行過濾,選出線索數量超過閾值的線索集。
圖11 聚類算法步驟4
步驟5:如圖12 所示,對上述得到的線索集中的線索進行元素提取。
圖12 聚類算法步驟5
步驟6:把原始的線索集S0與步驟4 得到的所有線索集的并集取差集,得到線索集Sr,即S0-
步驟7:對于Sr中的每一條線索Ci,分別計算與線索集Stj的歸屬度。
步驟8:如圖14 所示,對上述結果進行過濾,把線索加入到歸屬度超過閾值且分數最高的線索集中。
圖13 聚類算法步驟7
圖14 聚類算法步驟8
步驟9:如圖15 所示,計算上述結果線索集中彼此之間的相似度。
圖15 聚類算法步驟9
步驟10:如圖16 所示,合并上述結果中相似度超過閾值的線索集,得到最終的聚類結果。
圖16 聚類算法步驟10
2.3.1 場景設計
實驗場景:獲取一批郵件數據,對其進行解析,把解析的結果存儲到庫中。使用某種編程語言實現上述聚類算法,讀取存儲的郵件數據,并進行聚類,最后對聚類的結果進行分析。
數據準備:1 000 條郵件數據
數據樣例:
2.3.2 結果評判標準
為了對一批數據的聚合程度進行量化,本文提出了同源度、聚合度與密集度的概念。
同源度用于衡量兩個線索是同一個組織產生的程度,其結果是一個大于0 的數字。用符號F(Ci,Cj)表示線索Ci和Cj的同源度,similar(E(Dk)i,E(Dk)j)表示線索Ci和Cj在維度Dk上的值的相似度分數,P(Dk)表示在維度Dk上的權重,每條線索能提取出n個維度,則有如下公式:
聚合度用于衡量線索集中任意一個線索與整個線索集之間的歸屬程度。用符號A(Ci)表示線索集S中任意一條線索Ci的聚合度,線索集S中的線索數量為n,則有如下公式:
密集度用于衡量線索集中不同線索之間的平均聚合度,其值越大,表示此線索集中的線索彼此之間的同源度越高,聚類的效果就越好。用符號f(Si)表示線索集Si的密集度,線索集Si中的線索數量為n,則有如下公式:
2.3.3 結果分析
本節(jié)使用Java 語言實現上述聚類算法。線索的緯度劃分及權重如表1 所示。
表1 郵件數據維度劃分及權重
實驗共得到42 個聚類結果,其中數據條數超過20 的聚類結果有7 個。原始線索集及聚類結果的線索數量分布如圖17 所示。
圖17 原始線索集及聚類結果線索數量分布
計算原始數據和聚類結果中每個線索的聚合度,從每個線索集中隨機獲取10 條數據,得出其每個線索的聚合度分布如圖18 所示。
從圖18 可以看出,最下面的一條折線是原始數據的聚合度分布,其分數較低,說明原始線索集中的數據的聚類程度較低。在圖18 的聚類結果中,所有線索的聚合度分數都要高于原始數據,說明這些聚類結果的聚類程度都要高于原始線索集。
圖18 原始線索集及聚類結果線索聚合度分布
對原始線索集和聚類結果分別計算密集度,得到的結果如表2 所示。
表2 聚類結果密集度及線索數量
把上述密集度分布用柱狀圖表示,如圖19 所示。從圖19 中也能很直觀地看出,所有的聚類結果較原始數據的密集度都有了數倍的提升,進一步說明了此算法的有效性。
圖19 原始線索集及聚類結果密集度
本文介紹了傳統的APT 攻擊溯源的方法,分析了傳統溯源方法的局限性,提出了一種基于網絡流量風險數據的溯源方法,建立了此方法的溯源框架,然后重點分析了此框架中基于風險數據產生APT 組織攻擊線索庫的過程,提出了一種自動聚類的算法。該算法把風險數據自動劃分成多個不同的線索集,并使用Java 語言實現了此算法,在測試數據上驗證了算法的有效性。
在上述實驗中,每條數據的維度劃分以及權重和閾值的設置對聚類的結果會有較大的影響,這些參數都需要具有一定相關經驗的人員進行測試和驗證。
后續(xù)的研究內容包括對數據拆分的維度和權重以及閾值等參數,使用機器學習的方法進行訓練,增加最終聚類結果的準確度;對聚類得到的線索集進行維度分析;根據APT 組織的維度匹配到具體的APT 組織的方法進行深入研究。