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