前言:在網(wǎng)絡取證領域,網(wǎng)絡攻擊溯源一直是一個重要的追蹤方式。
近年來,網(wǎng)絡安全事件層出不窮,各種網(wǎng)絡攻擊給國家、社會和個人帶來了嚴重的危害,如分布式拒絕服務攻擊(DDoS)、基于僵尸網(wǎng)絡(Bo.NET)的高級可持續(xù)攻擊(APT)、利用遠程控制木馬的信息竊取等。在這些攻擊方法中,攻擊者會向目標主機,也就是受害主機,發(fā)送特定的攻擊數(shù)據(jù)包。
從受害主機的角度來看,能夠觀察到這些攻擊數(shù)據(jù)包,如果能追蹤這些攻擊數(shù)據(jù)包的來源,定位攻擊者的真正位置,受害主機不但可以采用應對措施,如在合適的位置過濾攻擊數(shù)據(jù)包,而且可以對攻擊者采取法律手段。因此在網(wǎng)絡取證領域,網(wǎng)絡攻擊溯源一直是一個重要的追蹤方式。
一、什么是網(wǎng)絡攻擊溯源
在網(wǎng)絡空間中,網(wǎng)絡攻擊源追蹤是指當檢測到網(wǎng)絡攻擊事件發(fā)生后,能夠追蹤定位真正的攻擊者的主機,以幫助司法人員對攻擊者采取法律手段。近二十年,研究人員對網(wǎng)絡攻擊源追蹤技術進行了大量研究。
更具象化地來說網(wǎng)絡攻擊源追蹤是指,在網(wǎng)絡空間中,安全人員在檢測到攻擊行為發(fā)生的情況下,如何追蹤定位攻擊者的主機?雖然從司法取證的角度,更希望能識別出攻擊者本人,以便于對嫌疑人采取法律手段,但這需要將網(wǎng)絡空間中的“主機”與現(xiàn)實物理空間中的“人”進行關聯(lián)。所以網(wǎng)絡空間中,如何識別出攻擊者直接使用的主機才是最重要的。
二、五種常見掩蓋真實IP的網(wǎng)絡攻擊追蹤問題
由于攻擊者可以采用不同的形式來隱藏自身真實的IP地址,如虛假IP地址或跳板的方式,那么可以將攻擊源追蹤問題分為下面5個問題:虛假IP溯源、僵尸網(wǎng)絡溯源、匿名網(wǎng)絡溯源、跳板溯源、局域網(wǎng)溯源,由此對這五種問題進行追蹤溯源。
1.虛假IP溯源:取證人員檢測到的攻擊數(shù)據(jù)包中,其源IP地址是偽造的。例如,典型的SYN Flood攻擊。
在這種網(wǎng)絡攻擊中,攻擊者將攻擊數(shù)據(jù)包中的源IP地址替換為偽造的IP地址,受害主機收到數(shù)據(jù)包后,將響應數(shù)據(jù)包發(fā)送給偽造的IP地址主機,這些主機可能存在也可能不存在。這樣在受害主機端,無法得到攻擊主機的IP地址。
除此之外, 還有一種特殊的“反射攻擊”, 如Smurf 攻擊、DNS放大攻擊等在這種攻擊中,攻擊者將攻擊數(shù)據(jù)包中的源IP地址替換為受害者的IP地址,將攻擊數(shù)據(jù)包發(fā)送給反射主機,反射主機收到數(shù)據(jù)包后,響應數(shù)據(jù)包將發(fā)送給受害主機。從受害主機端觀察,只能判斷這些數(shù)據(jù)包來自反射主機,無法知道真正攻擊者的IP地址。
2.僵尸網(wǎng)絡溯源:攻擊者利用僵尸網(wǎng)絡發(fā)動攻擊,取證人員檢測到攻擊數(shù)據(jù)包中,其源IP地址來自于Botnet中的bot主機,在這種情況下如何追蹤定位攻擊者的主機?
在這種攻擊中,攻擊者利用C&C型或P2P型Botnet,先發(fā)送控制指令, bot主機接收到控制指令后,向設定的攻擊目標發(fā)動攻擊。在受害主機端,可以看到攻擊數(shù)據(jù)包來自 bot主機,而無法識別出真正的Botmaster。
3.匿名網(wǎng)絡溯源:攻擊者利用匿名網(wǎng)絡,如“Tor”,發(fā)動攻擊,取證人員檢測到攻擊數(shù)據(jù)包中,其源IP地址來自于匿名網(wǎng)絡,在這種情況下如何追蹤定位攻擊者的主機?Tor 網(wǎng)絡就是匿名網(wǎng)絡典型的攻擊場。
在這種攻擊中,攻擊者的攻擊數(shù)據(jù)包通過匿名網(wǎng)絡進行轉發(fā),在受害主機端,只能觀察到攻擊數(shù)據(jù)包來自于出口路由器,而不能發(fā)現(xiàn)真正的攻擊者。
4.跳板溯源:攻擊者利用多個“跳板主機”,即通過控制多個主機轉發(fā)攻擊數(shù)據(jù)包,取證人員檢測到攻擊數(shù)據(jù)包,其源IP地址是最后一跳“跳板主機”的IP地址,前一段時間西北工業(yè)大學被NAS攻擊中,就運用了54臺跳板來隱藏真正的IP地址。
在這種攻擊中,攻擊者事先控制多個跳板主機,利用跳板轉發(fā)攻擊數(shù)據(jù)包。在受害主機端,只能看到攻擊數(shù)據(jù)包來自于最后一跳的主機,而不能識別出真正的攻擊者。很顯然,跳板路徑越長,越難追蹤攻擊者。
5.局域網(wǎng)絡溯源:攻擊者位于私有網(wǎng)絡內,其攻擊數(shù)據(jù)包中的源IP地址經(jīng)過了網(wǎng)關的VAT(Network Address Transform)地址轉換。
在這種攻擊中,由于攻擊者的IP地址是私有IP地址,在受害主機端只能看到NAT網(wǎng)關的IP地址。在大型私有網(wǎng)絡內,特別是無線局域網(wǎng)中,尋找定位攻擊者并不是一件簡單的事情。
在實際的網(wǎng)絡攻擊事件中, 可能并不嚴格遵守上述各種攻擊場景, 但大致可以歸為上述某個或某幾個問題。
三、虛假IP地址攻擊溯源
當攻擊數(shù)據(jù)包中的源IP地址是偽造的時,如何找到發(fā)送攻擊數(shù)據(jù)包的真實IP地址?這一問題也被稱為IP追蹤(IPTraceback)。對該問題, 需要按照不同背景、情況,不同分類方法來實施溯源方法。
1.背景:取證人員可以控制骨干網(wǎng)絡上的全部或大部分路由器,并且可以修改路由軟件。
取證人員可以在事先給骨干網(wǎng)絡的路由器增加新的功能,在不影響正常路由的情況下修改標準的IP協(xié)議,以幫助發(fā)現(xiàn)真實的IP地址。
基于這一條件的方法主要有概率包標記算法、確定包標記算法、ICMP標記算法等。同時還有一些組合方法,例如采用數(shù)據(jù)包標記和數(shù)據(jù)包記錄的混合方法;綜合了 ICMP 和 PPM 算法, 路由器對于 IP 數(shù)據(jù)包以一定概率進行標記, 并且同時把IP地址填入ICMP包中等等。
2.背景:取證人員可以控制骨干網(wǎng)絡上的路由器,但不能修改路由軟件。
根據(jù)此種情況,取證人員可以事先觀察記錄流經(jīng)骨干網(wǎng)絡路由器的IP數(shù)據(jù)包,但不能改變標準的路由協(xié)議。
主要思路是,在路由器上記錄所有流經(jīng)的數(shù)據(jù)包,當攻擊發(fā)生時,受害主機向其上游路由器進行查詢,路由器比對所記錄的數(shù)據(jù)包,可以構造出該數(shù)據(jù)包所經(jīng)過的路徑。該方法優(yōu)點是可以回溯單個數(shù)據(jù)包,但缺點是需要考慮路由器存儲空間受限的問題。
所以針對此種情況,Alex C.Snoeren、Craig Partridge等人在《Single-packet IP traceback》設計了一個追蹤系統(tǒng)SPIE,不是讓路由器記錄整個數(shù)據(jù)包,而是利用bloom filter記錄數(shù)據(jù)包的摘要,大大減少了所需的存儲空間。然后通過查詢每個路由器上的數(shù)據(jù)包摘要,可以重構出攻擊路徑。
還可以根據(jù)部分路由器進行數(shù)據(jù)包記錄的情況, 并且對于多個攻擊源問題, 該方法只需要追蹤屬于多個攻擊源的數(shù)據(jù)包就可以識別出多個攻擊源。
在《Session based logging (SBL) for IP-traceback on network forensics》中提出一種基于Session的數(shù)據(jù)包記錄方法, 即只記錄TCP數(shù)據(jù)流中的連接建立請求SYN數(shù)據(jù)包和連接終止 FIN 數(shù)據(jù)包, 忽略掉流中間的數(shù)據(jù)包, 從而大大減少所需的存儲空間。
在《Passive IP traceback: disclosing the locations of IP spoofers from path backscatter》中針對跨自治域的追蹤問題,可以利用路由器的IP包記錄方法, 結合鏈路層的mac地址來識別虛假IP地址, 實現(xiàn)了一個原型系統(tǒng)。
由于在這種情況下不能改變現(xiàn)有路由結構, 另外一個思路是在現(xiàn)有路由結構上建立一個覆蓋網(wǎng)絡(Overlay Network), 通過新設計的覆蓋網(wǎng)絡來實現(xiàn)數(shù)據(jù)包跟蹤。
3.背景:取證人員不能控制骨干網(wǎng)絡上的路由器,但可以在網(wǎng)絡上部署監(jiān)控器。
這種情況下,取證人員只能在網(wǎng)絡合適的位置部署監(jiān)控器收集數(shù)據(jù)包,這里的網(wǎng)絡不是指骨干網(wǎng)絡,而是指終端網(wǎng)絡。
在大流量數(shù)據(jù)包情況下,由于網(wǎng)絡阻塞等各種原因,路由器會有一定幾率產生目標不可達的ICMP報文,由于攻擊數(shù)據(jù)包的源IP地址是虛假的,一般是隨機產生的,這些ICMP報文會被發(fā)往這些虛假的IP地址,其中包含路由器的IP地址以及原數(shù)據(jù)包的源和目的IP地址。
因此部署在網(wǎng)絡上的監(jiān)控器會收到這些ICMP報文,根據(jù)發(fā)送這些ICMP報文的路由器,可以構造出這些數(shù)據(jù)包的攻擊路徑。Robert Stone和Centertrack在《an IP overlay network for tracking DoS floods》提出了,利用NetworkTelescope 項目(能夠覆蓋1/256的IPv4地址)收集的數(shù)據(jù),結合骨干網(wǎng)的拓撲結構,可以在一定程度上發(fā)現(xiàn)攻擊源。
但是溯源追蹤的方法要求攻擊數(shù)據(jù)包的流量比較大,并且在攻擊正在進行的時候實施,一旦攻擊結束,這種方法就無法找到真實的IP地址。
4.背景:取證人員既不能控制骨干路由器, 也不能部署監(jiān)控器, 但知道骨干網(wǎng)絡拓撲結構。
在取證人員只知道骨干網(wǎng)絡的拓撲結構, 沒有權限控制骨干網(wǎng)中的路由器, 也沒有條件部署遍及全網(wǎng)的監(jiān)控器的情況下,我們可以采取以下幾種追蹤溯源的方法。
Hal Burch和Bill Cheswick在《Tracing anonymous packets to their Approximate source》提出了一種鏈路測試的方法。在大流量數(shù)據(jù)包的情況下,從被攻擊目標出發(fā),由近及遠,依次對被攻擊目標的上游路由器進行UDP泛洪。若某條鏈路上存在攻擊流量,由于泛洪流量的存在,將導致攻擊流量丟包。根據(jù)這一現(xiàn)象,即可以判斷出某條鏈路上是否存在攻擊流量,從而構造出攻擊路徑。
不過該方法只能對單個攻擊流量進行檢測,若同時存在多個攻擊流量,則很難區(qū)分不同的攻擊流量。這種方法同樣要求攻擊數(shù)據(jù)包流量較大,并且一旦攻擊結束,方法也就失效了。另外,這種方法本身就是一種 DoS攻擊,會影響正常的數(shù)據(jù)流量。
也可以采取一種基于蟻群的算法, 即受害主機發(fā)出一些蟻群, 這些蟻群根據(jù)鏈路中負載的程度來選擇路徑, 鏈路負載越 大說明越可能是攻擊流量, 因此蟻群選擇該路徑的概率越大。當所有蟻群達到所監(jiān)控網(wǎng)絡邊緣時, 根據(jù) 蟻群所走過的路徑, 則可以構造出最有可能的攻擊路徑。
5.背景:取證人員既不能控制骨干路由器、不能部署監(jiān)控器, 也不知道拓撲結構。
如果取證人員不掌握任何資源, 在這一條件下似乎不可能追蹤到真實的IP地址。但可以采取某種方法, 獲得骨干網(wǎng)絡的拓撲結構, 從而將問題轉化為拓撲結構的情況,。如Dawn Xiaodong Song,和Adrian Perrig在《 Advanced and authenticated marking schemes for IP traceback》就是利用了traceroute 獲取網(wǎng)絡拓撲結構。
所以對于一般虛假IP溯源問題的解決,可以根據(jù)情況的不同采用不同的檢測方法進行追溯。不過現(xiàn)如今網(wǎng)絡攻擊環(huán)境、攻擊手法復雜且技術不斷升級,我們也需要升級我們的檢測方法,提高網(wǎng)絡攻擊溯源的技術水平,這樣才能更好地保護我們的網(wǎng)絡安全。