王子晨 湯艷君 潘奕揚
(中國刑事警察學院公安信息技術與情報學院 沈陽 110031)
在互聯網技術飛速進步和廣泛應用的背景下,網絡安全已經成為所有社會參與者必須高度重視的議題.隨著頻發的網絡安全事件對國家、社會和個體造成深重影響,作為網絡攻擊最頻繁受害的國家,中國正面臨前所未有的網絡空間安全挑戰.因此,網絡攻擊溯源技術的研究與應用顯得尤為重要.如果能定位到實際的網絡攻擊者則能制定更有針對性的防護措施,并進一步通過法律手段對其進行懲戒.網絡攻擊的溯源分析已然成為保護網絡安全的關鍵研究課題.
然而,網絡協議設計存在一定的問題,例如,TCP/IP協議沒有包含數據包來源的驗證功能,再加上攻擊者經常利用虛假IP地址或者使用其他主機作為跳板進行攻擊等方式來隱藏自身,導致僅通過源IP地址難以定位到真實的攻擊者,使得在當前的互聯網架構下追蹤攻擊源充滿了挑戰.
本文旨在綜述現有的網絡攻擊者溯源分析技術,包括基于流量、場景以及樣本的溯源分析技術.探討它們的優缺點以及在實際應用中可能遇到的挑戰,為維護網絡安全提供借鑒.
基于流量的溯源分析是一種拓撲數據分析技術,可用于識別網絡流量數據中的網絡模式,跟蹤網絡攻擊的來源.對于IP地址追蹤問題,Gao等人[1]將流量溯源技術分為日志記錄、流量包標記、ICMP回溯和鏈路測試等方法.
日志記錄方法主要是利用路由器記錄一些遍歷信息,以驗證可疑數據包是否由已知路由器轉發,從而得到攻擊路徑.該方法的優點是可以利用存儲的信息進行追蹤溯源.其缺點是流量包信息的全文日志會給轉發設備帶來巨大存儲開銷[2].
為減少存儲開銷,可以將全文日志進行哈希處理.Snoeren等人[3]提出并改進SPIE(source path isolation engine)追蹤系統,利用布隆過濾器(Bloom filter)存儲記錄數據包的摘要.這種方法支持基于單個數據包的IP溯源.盡管使用哈希技術減少了日志的存儲容量,但在大規模高速網絡環境下流量包日志的存儲開銷仍然不少.
流量包標記方法將存儲開銷轉移到數據包上.它通過控制攻擊路徑上的部分或全部路由器,在數據包中寫入這些路由器的特定識別信息,從而恢復攻擊路徑.但此類方法存在的問題是,若系統或轉發設備被攻擊者控制,刪除或篡改包標記信息,從而誤導攻擊路徑的重構.流量包標記方法可分為概率包標記法和確定包標記法.
1.2.1 概率包標記法
可以通過互聯網提供商訪問控制骨干網絡的多數路由器,并且修改路由器的標準IP協議,給多數骨干網絡路由器增加新的功能.Savage等人[4]提出概率包標記法(probabilistic packet marking, PPM).它在網絡數據包中插入特殊標記.當攻擊流量經過網絡節點時,這些節點會根據一定的概率選擇是否將標記注入數據包.
概率包標記法較為簡單,適合解決大流量的攻擊場景.但該方法只適用于單個攻擊源的情況,且攻擊路徑重建的計算開銷較大.
1.2.2 確定包標記法
確定包標記法(deterministic packet marking, DPM)是在溯源過程中,針對整個攻擊流量路徑的完全重構并不是必要的情況下提出的.Belenky等人[5]提出并改進了DPM算法,僅要求邊緣網絡節點在轉發時根據規則添加特定的標記,而中間網絡節點無需進行標記.Sun等人[6]在應對DDoS攻擊時將該方法拓展到IPv6協議上,簡化了重溯路徑的復雜度.Suresh等人[7]提出了按需標記的DDoS攻擊處理方法,利用多個數據包檢測攻擊,并通過編碼在有限的空間內存儲更多容量的信息.Vijayalakshmi等人[8]在DPM算法中提出了一種編碼方法,使用三位標記碼記錄每個路由器預先創建的鄰居度表信息.
但是大部分基于流量包標記的方法需要對部分網絡節點進行掌控,而標記的流量包也可能會暴露有關網絡拓撲結構或路由器身份的敏感信息.因此,基于流量包標記的溯源方法需要安全分析者和互聯網服務提供商之間加強合作.
基于ICMP回溯的溯源技術是利用網絡擁塞等原因導致路由器自發產生目標不可達的ICMP報文,來追蹤攻擊路徑.
Bellovin等人[9]提出了ICMP標記算法,因網絡擁塞等原因發送的ICMP報文包含該節點及前后一跳節點的IP地址.收集足夠多的ICMP報文,可以重構整個網絡攻擊的路徑.Thing等人[10]修改了這一方法,將標記的內容積累寫入數據包中.
Cheng等人[11]在報文中嵌入管理信息庫信息,提高了在溯源多個攻擊流量時的路徑重構準確性.Lee等人[12]研究了整個攻擊路徑信息的編碼方式,以提高重構路徑的性能.Yao等人[13]提出一種被動追蹤的方法,在網絡終端部署監控器可以在一定程度上構造出攻擊流量路徑.但這種方法需要較多的攻擊流量,并且需要部署多個監控器.
使用單個ICMP數據包回溯地址信息較為簡單.但問題是部分網絡設備可能會過濾或限制ICMP報文的傳遞,并且報文容易被偽造發送.
基于鏈路測試的溯源技術對骨干網絡的拓撲結構和路由控制沒有過多要求.Burch等人[14]利用UDP泛洪的思想,依次對被攻擊的上游路由發送洪泛流量.若洪泛的某條鏈路上也存在攻擊流量,則該攻擊流量可能出現丟包現象,并據此推斷攻擊路徑.但該方法無法區分不同的攻擊來源,也會影響正常的數據傳遞.Lai等人[15]使用蟻群優化思想,選擇網絡負載更重的路徑,并逐層推進,但同樣無法區分不同的攻擊來源.姜建國等人[16]提出了一種改進方法,在了解骨干網絡拓撲結構的前提下,每次都從受害者位置進行洪泛測試.
由于真正的DDoS攻擊往往來自成百上千臺受感染主機,若對上游網絡中的路由器拓撲結構圖不了解,可以嘗試通過基于路由探測的工具軟件(如traceroute等)獲取信息[17].并由此轉化為已知網絡拓撲結構的情況進行分析.鏈路測試的溯源技術仍存在一些限制,例如它無法區分不同的攻擊源,且可能影響正常數據的傳輸.
當前,我國網絡空間安全形勢日益復雜,網絡攻擊者的攻擊手段也層出不窮.安全防御能力的提升需要根據不同的網絡攻擊場景,研究并實施不同的攻擊溯源技術,做到精準化應對.結合威脅情報提出的主要攻擊場景[18],將攻擊溯源技術的應用場景分為5類:匿名網絡攻擊、僵尸網絡攻擊、跳板攻擊、局域網攻擊和高級可持續威脅攻擊.
匿名網絡如Tor網絡[19]為用戶提供了一種保護層,不暴露自己的真實身份和位置.然而這種匿名性也被攻擊者利用,從而避開溯源分析.由于Tor網絡的消息經過多層加密及其自組織管理模式,使得常規的IP流量溯源分析方法難以使用.因此,需要研究特定的溯源技術.陳周國等人[20]將匿名網絡攻擊溯源方法分為調制追蹤和滲透追蹤.
2.1.1 調制追蹤
調制追蹤在數據包中加入水印等標識特征,關聯分析數據流量以識別攻擊流量的來源.
Yu等人[21]利用直接序列擴頻(DSSS)技術擴頻水印信息干擾發件人的流量,并微調其速率,僅接收方可識別通信關系.通過在包終止時間字段中寫入IP地址hash值標記數據包,從而推算攻擊流量的來源.Ling等人[22]利用數據包的發送頻率作為特征.卓中流[23]提出流量識別方法和網站指紋識別算法追蹤接收方.何高峰等人[24]通過觀察數據包處理速度變慢的節點來追蹤溯源.但這些方法僅適用于低延時匿名網絡,高延時網絡可能導致流水印信息丟失.
2.1.2 滲透追蹤
滲透追蹤利用網絡滲透技術控制匿名網絡節點,破壞通信或利用協議漏洞,通過觀察網絡通信變化確定相關性.
Pries等人[25]借助重放攻擊破壞Tor網絡的匿名性.但可供于關聯的信息太少,方法的準確性較低.Qin等人[26]分析了Tor項目團隊發現的關聯攻擊[27],修改從客戶端派生的單元格序列的命令字段以嵌入信號序列,檢測出口Tor路由器上與嵌入信號序列一致的信號序列.
若能獲取攻擊者的入口Tor路由器日志文件,Pei等人[28]提出一種數據包檢測方法.該方法使用數據包傳輸和中繼時間的統計數據,通過分析入口Tor路由器的日志文件來確定與受害服務器上觀察到的請求和響應配對相對應的數據包.
僵尸網絡(Botnet)是由一組受攻擊者控制的被僵尸程序感染的計算機組成的網絡.從流量特征來看,攻擊數據包來自受感染的主機,而無法識別真正的攻擊源.本文在方濱興等人[29]和郭曉軍等人[30]研究的基礎上,將僵尸網絡攻擊溯源技術總結為2類:流量特征追蹤和滲透控制追蹤.
2.2.1 流量特征追蹤
流量特征追蹤主要通過分析網絡流量數據中的特征來追蹤僵尸主機.于曉聰等人[31]分析不同類型僵尸網絡的網絡流量特征,快速檢測出可疑的僵尸主機.Takemori等人[32]提出了基于主機的追蹤系統,在每臺主機和服務器上安裝網絡監控服務,追溯從受害主機到Bot主機再到C&C服務器的路徑.Ramsbrock等人[33]針對基于IRC的僵尸網絡提出了一種流量水印技術,通過改變數據包長度或發送間隔時間溯源.夏秦等人[34]通過收集域名服務器的查詢流量以及域名反查的方式來發現更多的僵尸主機.
2.2.2 滲透控制追蹤
僵尸程序與其他程序一樣也會存在各種漏洞.雖然僵尸網絡中通信通常是加密的,但Lin等人[35]設計獲取到Bot主機內存中存儲的通信加密密鑰,并分析攻擊程序的漏洞,進一步在攻擊者主機上執行命令,發送給攻擊者主機信息給安全人員.
蜜罐技術是通過設計誘餌誘導攻擊者,從而捕獲和分析攻擊行為的方法.Yi等人[36]提出使用蜜罐技術主動感染僵尸程序,成為僵尸網絡的一部分,從而轉化為通過流量特征追蹤的方式.
跳板攻擊(bastion host attack)是指攻擊者入侵并控制位于目標網絡邊界的跳板主機,進一步攻擊目標網絡內部的其他主機或系統.對于被攻擊主機而言,其只能觀察到攻擊數據包的跳板主機地址,而不能識別到真正的攻擊源頭.
識別真正的攻擊源首先需要檢測本地網絡環境中是否存在跳板主機.Chen等人[37]通過對比數據包中的明文信息確定不同數據包中是否包含相同的文本.如果數據進行了加密,Zhang等人[38]通過分析流量的時序特征,關聯數據傳輸的時間間隔周期,將流入和流出流量以一定方式關聯起來.孫奕等人[39]根據直接訪問相鄰主機的處理時延遠小于將相鄰主機當作跳板訪問的處理時延這一特性,通過比較同一連接運輸層的RTT往返時間間隔,從而檢測目標是否為跳板主機.該方法需要保證網絡環境相對穩定.
如果已發現本地網絡中存在跳板主機,Wang等人[40]在回傳給攻擊者的數據包添加水印特征,并在回傳路徑上部署傳感器.殷樹剛等人[41]根據發現的各級跳板主機,利用域名和SSL證書信息進行反查,綜合已知威脅情報獲得攻擊者組織信息.
若無法在網絡上部署傳感器,可以借助僵尸網絡攻擊的溯源思想,在跳板主機回傳的消息中插入可執行代碼,但這種方法的難度同樣較大.
攻擊者可能使用NAT技術潛伏在復雜的私有網絡中.但NAT技術僅僅對IP地址和端口進行轉換,不修改數據包的內容和大部分頭部信息.
在有線網絡中,根據存儲在IP數據包頭部的序列號信息就可以關聯公私網數據流量,進一步得知攻擊者的私網IP及MAC地址.Cohen[42]利用Http協議報頭中的時間戳或Cookie輔助判斷攻擊主機的同一性.在2層網絡中,Hazeyama等人[43]在數據包中加入跟蹤信息,標識攻擊數據包所經過的葉子路由器的接口和所經過的2層交換機的入口端.
在無線網絡中,IP數據包的頭部會被加密.Chen等人[44]利用數據包的長度控制外網的數據流,向數據流中添加特征水印,并在內網中檢測數據流的特征水印.在大型公共場合的無線網絡環境中,若已知攻擊主機MAC地址,Wang等人[45]提出的3維定位方法使用定向天線識別源MAC地址發送的數據幀,并通過多點測量數據信號強度確定其物理地址.
高級可持續威脅(advanced persistent threat)攻擊活動通常利用多種手段來實施,有的APT攻擊甚至可能潛伏長達數年[46].溯源目標不再是將個人而是將整個群體與網絡攻擊進行聯系[47].關于攻擊組織的溯源更多依賴綜合情報進行推理驗證[48].基于不同的溯源思路,主流的溯源模型可以分為分層溯源模型、鉆石模型和Q模型.
2.5.1 分層溯源模型
分層溯源模型由Cohen等人[49]首次提出,陳周國等人[48]進一步明確了每個層次的目標和溯源問題.模型包括4個層次:歸屬直接發起網絡攻擊的主機、確定控制網絡攻擊的主機、追蹤真正的攻擊者以及追蹤策劃網絡攻擊的組織.劉潮歌等人[50]構建了網絡服務、主機終端、文件數據、控制信道、行為特征和挖掘分析6個層次的溯源模型.
2.5.2 鉆石模型
鉆石模型由Caltagirone等人[51]提出,將情報實時集成到分析平臺中,自動關聯、分類和預測事件,同時規劃和實施緩解策略,有4個核心特征:對手、能力、基礎設施和受害者.Pahi等人[52]針對證據可信度和模型普適性的問題,拆分組合攻擊和攻擊者的分析,改進為網絡溯源模型(CAM).
2.5.3 Q模型
Rid等人[53]研究了溯源的復雜性,引入戰略、作戰、戰術、技術和溝通層面,認為溯源是雙向的:戰略層和操作層可以為隨后的技術分析提供信息,反之亦然.模型分析了溯源過程中不考慮事件響應和溯源的戰略和技術方面而結合技術與社會因素的方法.并對如何執行溯源過程、關注社會因素、檢測攻擊動機給出了說明.
此外,安全廠商為了更好地應對新威脅和新網絡安全格局,提出了不同的方法.洛克希德·馬丁公司提出描述網絡攻擊過程的網絡攻擊鏈(cyber kill chain)模型.模型分為目標偵查、武器生產、載荷投遞、突防利用、安裝植入、命令控制和任務執行等步驟.FireEye公司提出結合情報、技術和經驗的自適應商業威脅模型,并將鍵盤布局、樣本信息、內嵌字體、DNS信息、語言文字、遠控工具配置和行為模式作為溯源線索.
網絡攻擊會留下痕跡,如植入后門程序、留下惡意樣本.根據分析和對比惡意樣本的生成、傳播規律以及樣本之間的關聯性,可以用于攻擊溯源[54].宋文納等人[55]總結了學術界和產業界的溯源方法,通常分為靜態溯源分析技術和動態溯源分析技術.
樣本的靜態溯源分析無須實際執行惡意代碼,而且速度相對較快,是溯源工作的首選.樣本的同源性可以通過分析代碼的相似性來獲取.靜態分析可以通過代碼結構以及其生成的各種圖形(如控制流圖、函數調用圖、數據流圖等)來提取特征[56]并進行同源性分析.
3.1.1 代碼結構溯源
對樣本的靜態溯源分析通常需要反匯編程序處理,并在此基礎上提取其有用特征信息.Alazab[57]使用IDA Pro進行反編譯,使用最近鄰算法對API調用出現順序和頻率聚類判斷樣本的相似性.
Nataraj等人[58]首次利用灰度圖對惡意代碼進行可視化,在不進行反匯編和執行的前提下對惡意軟件家族分類.Sree等人[59]借助視覺相似性的思想,使用孿生神經網絡(siamese networks)通過密鑰提取、n-gram特征提取、序列向量改進了這一思想.
喬延臣等人[60]以函數為單位,利用simhash值在海量代碼中快速溯源相似函數代碼塊,依據代碼塊跳轉關系判定相似情況,并溯源至對應樣本.
3.1.2 生成圖溯源
控制流圖(control flow graph, CFG)可以體現代碼之間的跳轉關系.Liu等人[61]收集了網絡攻擊組織相關聯的惡意代碼樣本集,結合它們的控制流圖和反匯編代碼生成嵌入,使用深度學習模型對來自不同組織的惡意代碼生成分類模型.由于并非所有編譯后代碼都能實現惡意功能,攻擊者也可能插入虛假代碼對抗安全分析.梅瑞等人[62]在此基礎上分析二進制代碼的控制依賴關系和數據依賴關系,對經典程序切片算法作了向二進制代碼的改進.
代碼混淆技術可以顯著改變代碼的結構,影響二進制分析工具的準確性,但通常不會改變代碼語義.Alrabaee等人[63]使用數據流分析提取寄存器中的語義流及其控制組件,合成為語義流圖(semantic flow graph, SFG)的新表示,并利用圖中的關系,使用最大公共子圖算法判斷文件之間的相似性.
程序的功能大多由其調用的庫或系統調用決定,因此其函數調用圖(function call graph, FCG)可以看成程序行為的近似.Xin等人[64]認為同源代碼派生出來的惡意軟件變體在函數調用圖上特征是相似的,并測試了方法的可行性.
由于求解子圖同構問題的計算復雜度較高,導致基于圖結構特征的樣本溯源分析效率較低.Hassen等人[65]將函數調用圖向量使用函數聚類進行線性表示,減少了模型在計算時的開銷.趙炳麟等人[66]將API調用圖的特征導入卷積神經網絡學習.
3.1.3 編寫特征溯源
由于樣本代碼編寫者的教育程度、熟練程度以及所使用工具不同,往往會有不同的編寫習慣,留下特殊的編碼風格.Caliskan等人[67]研究了源代碼的歸屬問題,使用隨機森林和抽象語法樹的方法學習源代碼中的編碼風格,并發現由熟練程序員編寫的或者編寫復雜度高的代碼更容易溯源到其創作者.羅文華[68]通過歸納惡意程序反匯編代碼一般規律,發現一些惡意程序會在程序中寫入IP地址或域名.
但靜態溯源技術不會觸發樣本的行為,攻擊者為了防止自己的攻擊程序被檢測到,可能會使用加殼、加密、混淆等保護技術[69],降低內部惡意代碼被檢測出的可能性,使靜態溯源分析技術失效.
動態溯源方法需要搭建一個代碼運行的沙箱環境,通過執行惡意軟件樣本,觀察其在運行過程中的行為來分析其性質和功能.這種方法可以揭示如反向工程隱藏的惡意行為.
3.2.1 動態調用關系溯源
通過捕獲API調用的模式和依賴關系可以反映出惡意軟件的行為和結構.Wu等人[70]利用數據流應用API作為分類特征來檢測Android惡意軟件.Cho等人[71]通過檢測API調用序列的公共部分判斷樣本的相似性,并發現如果API調用序列的長度太長,則模型性能會非常差.譚楊等人[72]根據樣本的API序列特征和字節熵特征,有效地區分不同惡意軟件家族.Mu等人[73]提取加權Android惡意軟件中上下文API依賴圖作為程序語義來構建特征,使用圖形相似性度量識別樣本之間的相似度.但API調用具有一定的通用性,在表征惡意樣本個性化特征方面存在短板[74].
3.2.2 內存分析溯源
內存的易失性會導致一些網絡入侵痕跡的消逝.V?mel等人[75]通過歸納內存鏡像的制作和分析方法,指出內存中加密密鑰、進程、注冊表和網絡流量信息有助于網絡攻擊現場的復原重建以及證據保留.Sihwail等人[76]提出基于簽名的方法,可以快速識別已知的惡意樣本.
對于樣本的溯源分析雖然有可能無法追溯到某個特定的攻擊者,但是其同源性溯源的思想,可以為溯源網絡攻擊組織機構提供幫助.王津等人[77]融合多源威脅情報和本地沙箱告警日志構建并豐富攻擊組織知識庫,從而追蹤攻擊組織的攻擊事件.Li等人[78]結合威脅情報和入侵殺傷鏈模型進行分析.
網絡攻擊溯源分析技術具有多樣性和復雜性.在面對不同類型的網絡攻擊和惡意行為時,不同的溯源方法和技術可以提供有力的支持和幫助.然而,現有技術仍然面臨著許多挑戰,包括數據隱私保護、溯源準確性、效率和可擴展性等方面的問題.未來的研究方向應該集中在改進溯源算法和模型、增強網絡安全防御能力以及加強威脅情報合作與信息共享等方面,以進一步提升網絡攻擊溯源分析技術的效能和可靠性,保障網絡空間的安全和穩定.