摘要:在帶有鏡像端口的交換機組建的局域網中,將阻隔機中的雙網卡分別接入交換機的鏡像端口與局域網端口,利用ARP欺騙方法,將處于同網段中的旁路阻隔機作為整個網段的“網關”,過濾所有與阻隔機處于同網段的客戶機發送給網關的數據包,并根據不同的協議采用不同的阻隔技術,將不允許發送或接受的數據包進行阻隔。
關鍵詞:ARP;阻隔;偽造報文;Reset報文
O引言
現有的網絡數據包過濾技術主要有軟件防火墻、應用網關、代理服務器等。這些網絡過濾管理系統基本都是基于網關,或者主機模式下網站和關鍵字技術,通常根據數據包的端口、IP地址和協議、以及對數據包內容的關鍵字匹配來阻止或者允許信息包的傳輸,保證網絡通信的安全性。以上幾種過濾技術主要應用于網關服務器或者路由器上。顯然,這種模式下的過濾方法最適用于過濾需要在較長時期內對整個網段進行阻隔的信息。然而,有時我們只需要在特定的時間段內對特定的計算機的數據包進行過濾,這時以上幾種模式會因為要頻繁更改設置而顯得有些不足。而基于旁路的阻隔技術可以很好地解決這一問題,它可以用一臺與客戶機處于同等地位的阻隔機來實現特定的時間段內對網段中特定客戶機的控制;并且這種模式還有性能高,不影響正常的網絡結構等優點。
1旁路阻隔技術
旁路阻隔技術,是指在局域網中,用一臺專用的阻隔機(建議雙網卡,如圖1)捕獲所有經過交換機的數據報,對報文的協議進行分析,用干擾或偽造報文技術將不允許發送的報文進行阻隔。目前常用的阻隔方法一般有基于ICMP的阻隔、基于打亂TCP報文SEQ(“序號標識”,Sequence numbers)的阻隔、基于TCP Reset報文的阻隔、基于應用層協議偽造的阻隔4種。

1.1基于ICMP的阻隔
基于ICMP的阻隔的基本原理是利用ICMP報文(“主機不可達”差錯報文)的Host Unreachable回應來干擾應用程序。基本過程如下:當路由器收到一份IP數據報但又不能轉發時,就要發送一份ICMP報文給主機,如果偽造這樣一個ICMP報文,并且偽造路由器的IP地址,這樣主機收到這個ICMP報文后,就誤認為目標不可達,從而達到了阻隔的目的。
1.2基于打亂TCP報文SEQ的阻隔
這種過濾技術是目前最成熟,適用面最廣的一種技術。它利用打亂TCP報文的SEQ,ACK序列號來達到阻隔的目的。TCP協議提供可靠的傳輸服務,所以,當一個數據包由一個網絡發送到另外—個網絡時,TCP協議采用三次握手原則,當三次握手成功時才開始傳輸信息。它采用了兩類條件來確認每條已經建立連接的TCP通道。第一類是基礎連接確認,即TCP連接中的四大必備條件:源IP、源TCP端口、目標IP、目標TCP端口。第二類條件是成對出現的SEQ,分為SEQ序號字段和ACK SEQ確認-序號字段,序號字段標示本報文中傳送的數據在發送主機所要傳送的整個數據流中的順序號,而確認序號字段標示發送本報文的主機希望接收的對方主機中下-+八位組的順序號。這對序號是可以預測的,因為TCP必須遵從以下守則:一臺主機即將發出的報文中的SEQ值應等于它剛收到報文中的ACK SEQ值,而它所要發送報文中的ACK SEQ值應為它所收到報文中的SEQ值加上該報文中所發送的TCP數據的長度,即“本次發送的SEQ=上次收到的ACK SEQ;本次發送的ACK sEQ=-上次收到的SEQ+本次發送的TCP數據長度”。知道這個規律后,我們就可以利用它來進行阻隔,原理和ICMP阻隔差不多,都是采用偽造報文的方式:用旁路的方式獲取源主機與目的主機通訊的SEQ,ACK序列號后,則可以根據這個序列號和報文的長度計算源主機需求的下一個報文的序列號,然后偽造這個序列號。這種方式的適用面非常廣,所有基于TCP的協議都可以阻隔。目前的過濾系統,IDS系統均基于這個原理。
1.3基于TCP Reset報文的阻隔
利用發送TCP Reset報文來實現阻隔的原理同上,只不過發送的不是偽造的ACK報文,而是偽造的Reset報文。利用這種偽造報文進行阻隔的效果在響應速度上比打亂TCP報文SEQ的方法更好。
1.4基于應用層協議偽造的阻隔
以上基于偽造TCP的SEQ、ACK序列號的方法和發送Reset報文的辦法僅適用于TCP協議,而不適合UDP協議。UDP是提供簡單的無連接的服務,采用這種傳輸協議無需建立可靠的連接即可以傳輸信息,并且UDP協議的阻隔沒有通用的辦法,只有針對具體的應用程序協議來進行偽造阻隔報文,因此對于采用UDP協議結構的情況,除了判斷報文中的IP地址與端口,還要根據數據包在應用層的協議內容偽造阻隔報文。對于uDP協議的阻隔較為復雜,必須事先逐個對現有的應用軟件的報文結構進行分析,找出在應用層協議中的固定格式,并將其規律存儲在固定文件中,以便在加載程序時,放入內存列表中。
2旁路阻隔技術的設計
如圖1所示的情況下,對客戶機器阻隔的數量受到限制,一般不超過30臺。可以使用“網絡節點”中的“劫持該用戶數據”將用戶的數據劫持到本地,原理是利用ARP(Address Resolution Protoe01)偽造,同時欺騙網關和客戶機。
比如客戶機A的IP地址是10.10.0.200,網關是10.10.0.254,阻隔機的IP是10.10.0.221,網關也是10.10.0.254,阻隔機實現阻隔客戶機A的步驟如下:
(1)阻隔程序不停地利用ARP偽造告訴網關,IP地址是10.10_0.200的MAC地址就是阻隔機的MAC地址。
(2)阻隔程序不停地利用ARP偽造告訴客戶機A,網關10.10.0.254的MAC地址就是阻隔機的MAC地址。
(3)一段時間(一般10-30秒左右)后,客戶機A和網關均確認了阻隔機的報文,阻隔機充當了中介角色,由于阻隔機中有正確的路由表,它能將收到的報文重新轉發到客戶機A或者網關,這樣阻隔機就實現了在客戶機A和網關之間轉發數據。
(4)判斷是否滿足阻隔條件,若滿足,發送偽造的阻隔報文給客戶機A,讓A處于報文不可達,或者連接超時等狀態。
(5)為了保證客戶機A與網關ARP緩存中保持被欺騙的狀態,每隔lO-30秒發送一次ARP偽造報文。
(6)若要恢復到正常狀態,一定時間不發送錯誤偽造報文,或者發送一個正確的偽造報文,將客戶機A與網關ARP緩存恢復到正常狀態。
顯然,這種阻隔方法可以在不改變現有網絡結構、網關或防火墻設置的基礎上,在特定時間內對特定的計算機進行阻隔。
3旁路阻隔技術實現的主要算法
根據上述阻隔原理,旁路阻隔實現以WinPcap作為底層驅動,其中主程序算法如下:
啟動抓包線程:
啟動ARP監聽線程:
啟動ARP發送線程:
If(開始充當阻隔機)
{發送ARP Reply偽報文,使阻隔機充當網關;
將所有的客戶端發送給網關的包進行截獲;
Switch包的類別
(Case TCP協議的報文
lf(滿足阻隔要求),,(包括,IP,端口等)
根據TCP協議三次握手的規律,發送偽造TCP協議報
文,并將TCP報文的標志住(Flag)置為Reset(Ox04):
Else
轉發截獲的報文;
Case UDP協議的報文
If(滿足阻隔要求)f,/(包括,IP,端口等)
If(Search(應用層協議滿足內存列表中具體的應用軟件
的協議的類別))偽造報文不可達,或連接超時的應用層
報文內容:
}
Else
轉發截獲的報文;
Default
轉發截獲的報文;
}
}
4結束語
旁路阻隔技術可以很方便地對網絡進行臨時性的控制。實驗表明,對于采用TcP協議的數據包,都可以成功阻隔,而對于采用uDP協議的數據包,并不能做到完全阻隔,未研究過的應用層協議,以及已處于通信狀態A、B客戶機的情況,旁路阻隔效果不是很好。
(注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。)