前言:本站為你精心整理了狀態協議技術實現范文,希望能為你的創作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。
摘要:隨著人類社會生活對Internet需求的日益增長,網絡安全逐漸成為Internet及各項網絡服務和應用進一步發展所需解決的關鍵問題。入侵檢測作為一種積極主動防御的網絡技術,已經成為網絡防護安全體系中的重要組成部分。首先比較了各種入侵檢測技術,提出了利用基于狀態的協議分析技術檢測多步驟等復雜攻擊的有效性,但面對高速發展的網絡,也提出了這種深度檢測的技術存在著的弊端。
關鍵詞:狀態協議;分析;NIDS
1協議解析
(1)協議解析。
傳統的網絡入侵檢測方法,要么不做任何協議分析(圖1中A方法),要么只對TCP/IP進行分析(圖1中的B方法)。基于應用的入侵檢測方法(圖1中的C方法)在進行TCP/IP分析后,還要對應用協議進行分析,并分別取出應用協議數據中的命令部分與數據部分,然后分別對命令進行解釋和對應用數據進行模式匹配,從而對入侵檢測進行檢測。方法A在IP包中利用模式匹配技術盲目匹配攻擊特征,很可能會將FTP的攻擊特征用來匹配HTTP的包;方法B由于不能理解應用協議,只能將應用協議數據看成沒有結構的比特流,進行盲目地匹配。因此,隨著模式與待匹配網絡包的增加,傳統檢測方法的效率將呈線性的下降,其時間復雜度為O(n),n為模式和網絡包長度的總和;而基于應用的檢測系統由于采用基于協議的樹形結構來分析檢測,隨模式的增加,其復雜度僅為O(log2n)。
(2)協議數據的上下文關聯分析。
①IP分片合并。
分片合并對網絡入侵檢測系統具有重要意義。有一些攻擊方法利用了操作系統協議棧中分片合并實現上的漏洞,例如著名的Teardrop攻擊就是在短時間內發送若干成對的偏移量有重疊的IP分片,目標接收到這樣的分片的時候就會合并分片,由于其偏移量的重疊而發生內存錯誤,甚至會導致協議棧的崩潰。這種攻擊手段單從一個數據包上是無法辨認的,需要在協議分析中模擬操作系統的分片合并,以發現不合法的分片。
在分片過程中有兩種樹結構:不同的IP數據包生成一棵分組Splay樹,稱作分組樹,在程序初始化部分即生成,在程序退出時消亡;每個IP數據包的所有分片生成一棵分片Splay樹,稱作分片樹,在接收到IP數據包的第一個分片時生成,在完成分片合并或超時刪除。
分組樹節點主要包括IP數據包中的源IP地址字段,目的IP地址字段,標識字段和協議字段,對于同一個IP數據包的不同分片這些值相同,這四個值作為一個分組樹節點的關鍵值,即對于兩個IP數據包A和B,它們的大小關系可以定義為:如果A的源IP地址大于B則A大于B;如果小于,則A小于B;如果相等,則繼續比較目的IP地址、標識字段和協議字段,直到比較出大小或相等。分片樹的節點主要包括偏移量字段和數據字段,其中偏移量是關鍵值。當IP數據包的第一個分片和最后一個分片都到達時,進行IP數據包合并。在合并的過程中如果發現偏移量不連續或重疊,則給出報警信息,放棄合并;合并后的IP數據包拷貝了所有分片的內容,與每個分片具有相同的源IP地址字段,目的IP地址字段,標識字段和協議字段,在格式上是一個不分片的IP數據包,然后上交給傳輸層協議進行分析。
②TCP會話重組。
一些攻擊利用了TCP協議的漏洞,TCP會話劫持是其中最典型的一種。在這種攻擊下,攻擊者偽造具有某IP地址的數據包,發送給與該IP地址進行TCP會話通信的另一端。檢測TCP會話劫持是很困難的,因為如果不和真正的通信方進行交互,幾乎無法發現偽裝的通信方。但是通過模擬操作系統協議棧的工作原理,對TCP會話進行處理,能夠從一定程度上檢測到可能的會話劫持。檢測系統通過重組會話能夠發現序列號錯誤,以及出現序列號錯誤后雙方重新建立同步的握手信息,從而判斷可能的入侵。
TCP會話重組利用了和分片合并類似的樹狀結構。網絡上存在的各個會話組織成一棵有序二叉樹,每個節點包含會話雙方的連接狀態、序列號、一些統計信息以及必要的歷史信息如上次序列號和確認序列號等。每個會話中,發自客戶端和服務器端的數據包分別組織成兩棵二叉樹,在會話節點中包含指向這兩個二叉樹的根節點的指針。重組后的TCP會話記錄了一次TCP會話中所有的數據包,并且記錄了每個數據包到來前和到來后的TCP會話狀態。
2基于狀態協議分析的入侵檢測實現
協議分析方法可以根據協議信息精確定位檢測域,分析攻擊特征,有針對性地使用詳細具體的檢測手段。提高了檢測的全面性、準確性和效率。針對不同的異常和攻擊,靈活定制檢測方式,由此可檢測大量異常。但對于一些多步驟,分布式的復雜攻擊的檢測單憑單一數據包檢測或簡單重組是無法實現的。所以在協議分析基礎上引入狀態轉移檢測技術,下面就分析利用基于狀態的協議分析技術檢測一些典型入侵的實現。
根據網絡協議狀態信息分析,所有網絡都能以狀態轉移形式來描述,狀態轉移將攻擊描述成網絡事件的狀態和操作(匹配事件),被觀測的事件如果符合有窮狀態機的實例(每個實例都表示一個攻擊場景),都可能引起狀態轉移的發生。如果狀態轉移到一個危害系統安全的終止狀態,就代表著攻擊的發生。這種方式以一種簡單的方式來描述復雜的入侵場景,步式攻擊。
借助聲明原語來計算狀態轉換的條件,包括數據包和網絡日志原語,如檢查IP地址是否是假冒地址的原語ip_saddr_fake(ip_packet),檢查包總長度選項中所聲明長度與實際長度是否一致的原語ip_fray_overlap(ip_packet)等等。
A:接收到IP包且分片標記為1,轉入狀態1;B:規定的時間片中,接收到一個包的所有分片,轉入狀態2;C:比較IP包長度與包頭中聲明的包總長度,不相等則進入狀態3。
依據上面介紹的檢測過程,利用檢查網絡入侵的原語提出檢測IP碎片攻擊的簡單算法:
intCheckIPfragment(receivedIPPacket){
state=s0;
while(TRUE)
{
switch(state)
cases0:
if(ip_is_frazgment(receiveIPPacket)=TRUE)
state=s1;
cases1:
if(timer_exceed()=FALSE&&receive_all_frag(receiveIPPacket)=TRUE)
steate=s2;
cases2:
if(ip_frag_overlap(receiveIPPacket)=FALSE;
alert();break;
}
return0;
}
2.1檢測TCPSynFlooding攻擊
攻擊描述:在短時間內,攻擊者發送大量SYN報文建立TCP連接,在服務器端發送應答包后,客戶端不發出確認,服務器端會維持每個連接直到超時,這樣會使服務端的TCP資源迅速枯竭,導致正常連接不能進入。
解決方式:當客戶端發出的建立TCP連接的SYN包時,便跟蹤記錄此連接的狀態,直到成功完成或超時。同時統計在規定時間內,接受到這種SYN包的個數超過了某個規定的臨界值,則發生TCPSynFlooding攻擊。A:檢查包的協議項,若該協議項為TCP協議,則轉入狀態1;
B:檢查TCP頭的選項,若flag選項為SYN,則轉入狀態2;
C:打開計時器和計數器,在規定時間內,接收到這種SYN包的個數超過臨界值則發生攻擊。
2.2檢測FTP會話
一個FTP會話可以分為以下四個步驟:
(1)建立控制連接:FTP客戶端建立一個TCP連接到服務器的FTP端21;
(2)客戶身份驗證:FTP用戶發送用戶名和口令,或用匿名登陸到服務器;
(3)執行客戶命令:客戶向服務器發出命令,如果要求數據傳輸,則客戶使用一個臨時端口和服務器端口20建立一個數據連接進行數據的傳輸;
(4)斷開連接:FTP會話完成后,斷開TCP連接。
客戶端通過身份驗證后才合法執行命令,以LIST命令為例,LIST命令列表顯示文件或目錄,將引發一個數據連接的建立和使用,客戶端使用PORT命令發送客戶IP地址和端口號給服務器用于建立臨時數據連接。
3協議分析技術在高速網絡下的局限性
網絡的速度的增長已經大大超過了處理器的發展,所以集中的解決方案已經到了他們的極限。特別是如果想要進行深入地、基于狀態入侵檢測分析,這種情況就更明顯了。既然這樣,傳感器不得不在進行中保存攻擊的信息(例如多步驟攻擊)或對包的內容進行應用層的分析。這些工作都是極其耗費資源,并且在單結點安裝會嚴重影響到基本數據包正常捕獲。
由于要保證與高速網絡同步以及網絡流量加密的廣泛使用給入侵檢測帶來的困難,一個普遍的觀點是在高速網絡環境下網絡入侵檢測是不具有實用性的。還有人主張在計算機網絡的外圍(periphery)分布安裝傳感器,這種方式需要網絡負載應該更加易于管理。盡管以上提到的兩種觀點都有好的方面,但在高速網絡交互的環境下進行流量分析仍然是實現網絡裝置的一個基礎要求。一些公司盡量在研究如何滿足這一需求,很多產品銷售商聲稱他們擁有可以運行在高速ATM或千兆以太網環境下的傳感器產品。例如,ISS提供了Net-ICEGigabitSentry,這個系統被設計來在高速網絡下監控網絡流量。公司在產品廣告中宣稱系統可以進行協議重組和分析不同應用層的協議(例如HTTP,SMTP,POP)來識別惡意行為。這個工具被稱為“第一個處理千兆網絡流量的網絡入侵檢測系統”。然而GigaSentry在實驗室環境下可以處理千兆網絡,在實際網絡環境中它的性能將會減弱。用戶一般期望在實際網絡環境的使用中工具可以處理至少300Mbps,并且可以適應網絡本身特點。GigaSentry每秒鐘只能捕獲到不到500000個數據包。這些表明了在高速網絡下實現網絡入侵檢測的困難程度。產品在上層網絡(TopLayerNetworks)提供一個交換機來劃分應用層協議會話。網絡流也根據這些會話進行分組,將分組分發到各個入侵檢測傳感器,同屬于一個會話的包都發送到一個傳感器。這樣傳感器就可以在一個單獨的會話中實現多步驟攻擊的檢測。但是,在不同會話之間的關聯性卻不支持。這樣導致如果一個攻擊針對多個主機(例如pingsweep)或分布在多個會話中就無法檢測出來。
參考文獻
[1]薛靜鋒,寧宇鵬,閻慧.入侵檢測技術[M].北京:機械工業出版社,2006.
[2]唐正軍.入侵檢測技術導論[M].北京:機械工業出版社,2005.
[3]劉文濤.Linux網絡入侵檢測系統[M].北京:電子工業出版社,2006.