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