land攻擊
通過傳送源位址和目的位址相同
,源埠和目的埠相同的
icmp echo
報文或tcp syn
請求報文
,可以導致主機不斷地向自己傳送報文
,最終導致系統崩潰。只要檢查報文的源位址和目的位址是否相等、源埠和目的埠是否相等
,就可以判斷出是否為
land
攻擊。syn flooding
利用tcp協議「
三次握手
」機制而發動的攻擊。當
server(b)
收到client(a)
的syn
請求報文時
,將傳送乙個
(ack,syn)
應答報文
,同時建立乙個控制結構
,將其加入到乙個佇列中
,等待對方的
ack報文。接收到
ack報文後
,雙方都進入連線狀態
,就可以傳送資料。如果
server
在一段時間內沒有收到應答資訊
,則控制塊將被釋放。在
tcp協議軟體中
,通常對每個埠等待建立連線的數目(即
backlog)
有一定限制
(windows nt4.0 : 6 , solaris : 32) ,
當佇列長度到達設定的閾值時
,將丟棄後面到達的
tcp syn
請求報文。如果攻擊者不斷傳送大量的
tcp syn報文,
其他使用者就無法再連線到被攻擊主機。增加
backlog
數目、減少連線等待時間等措施都無法阻止此種攻擊。雖然
「連線**
」技術可以保護網路內部主機不受攻擊
,但連線**無法阻止本身受到
syn flooding 攻擊,
而且由於所有的資料都要經過連線**處理
,總的網路延遲將會增加。實時地監測
tcp連線請求,過濾
tcp syn flooding
攻擊報文
,是阻止此攻擊的較為有效的方法。本文給出的
tcp syn flooding
檢測演算法(演算法
1),執行入侵檢測系統上
,可以檢測多種型別的
syn flooding 攻擊,
包括固定的源
ip位址
,隨機變化的源位址等。演算法1
tcp syn flooding
檢測演算法
time window:
時間視窗
packet set :syn ,syn &ack ,ack
報文集合
source ip :
報文源ip
位址destination ip :
報文目的
ip 位址
syn flood threshold :
判斷syn flood
攻擊的閾值
current time :
當前系統時間
sys number = 0 ;
ack number = 0 ;
ack syn number = 0 ;
for (packetx
∈packet set)
if (packetx. syn == 1)and(packetx. ack == 0)
syn number ++ ;
else if (packetx. syn == 0)and(packetx. ack == 1)
ack number ++ ;
else
ack syn number ++ ; }
if ( (syn number >= syn flood threshold) and( ( syn number > = 3 3
ack number)or(syn number > = 3 3 syn ack number) ) )
syn flood attack = ture;
else
syn flood attack = false;
endtcp會話劫持利用
tcp
會話劫持
,攻擊者可以方便地修改、偽造資料。
它的基本原理如下:
tcp
通過三次握手建立連線以後
,主要採用滑動視窗機制來驗證對方傳送的資料。如果對方傳送的資料不在自己的接收視窗內
,則丟棄此資料
,這種傳送序號不在對方接收視窗的狀態稱為非同步狀態。當通訊雙方進入非同步狀態後
,攻擊者可以偽造傳送序號在有效接收視窗內的報文
,也可以截獲報文
,篡改內容後
,再修改傳送序號
,而接收方會認為資料是有效資料。
tcp
劫持的關鍵在於使通訊雙方進入非同步狀態。有多種方法可以達到此目的。如圖
2 所示
,在主機
a 傳送
syn
請求後,b
傳送ack & syn
進行應答,則
a 認為連線已經建立。此時
,攻擊者偽裝成a 向
b傳送乙個
rst 報文,
則b 釋放連線
,攻擊者繼續偽裝成
a 用自己的初始序列號和
b 建立新的連線,而
a 和b 對此毫不覺察。當攻擊者偽裝成a 和
b 建立連線後
,a 和
b 就已經進入了非同步狀態。利用
telnet
協議的nop
命令也可以使通訊雙方進入非同步狀態。主機
b 接收到
nop
命令後,
並不進行任何操作
,但確認序列號將會加
1。如果攻擊者偽裝成a 向
b 傳送大量的
nop 命令,
則會造成a 和
b 的非同步狀態。
檢測tcp
劫持的關鍵在於檢測非同步狀態。如果不斷收到在接收視窗之外的資料或確認報文
,則可以確定遭到
tcp
劫持攻擊。
tcp偽裝利用
tcp
劫持進行攻擊時
,攻擊者必須能監測到雙方的通訊報文
,才能得到雙方的傳送序號
,但進行
tcp
偽裝攻擊時
,攻擊者不需要監測到雙方的通訊報文
,就可以發動攻擊,攻擊者首先用真實的位址訪問
v 提供的服務如
www等,獲得
v 的當前
tcp
初始序列號
,然後偽裝成
c 嘗試建立到主機v 的
telent
埠的連線
(攻擊者要確保
c 關機或被攻擊
,無法響應外部報文
) 。連線建立以後
,攻擊者就可以向
v 傳送一系列命令。此種攻擊可以繞過防火牆或主機對
ip 位址的檢查。
由於攻擊者收不到來自
v 的任何資訊
,要成功進行攻擊
,必須滿足兩個條件:
1) 建立連線時
,攻擊者需要知道
v 的當前初始序列號;
2) 傳送命令時
,攻擊者需要知道
v 的響應報文的資料長度。
條件2)
可輕易滿足。攻擊者只要在能合法訪問的主機上進行測試
,就可以知道響應資訊的內容和長度。
tcp
協議規定所有
tcp
連線使用同乙個初始序列號計數器,每
4us 加1
。當傳送乙個
tcp
連線請求時
,使用計數器的當前值。由於初始序列號計數器隨時間線性增加,因此
,可以按照下式計算序列號的值
:seq(t) = seq(t0) + (t - t0) 3 r
其中,t
為當前時間
,t0
為過去某一時間
,r為序列號按時間增加的速率。由於很容易能得到
t0 ,seq(t0) ,
攻擊者只需要測量攻擊主機和
v 之間的網路傳輸時延就可以成功地進行攻擊。雖然網路的延遲總是在隨機變化
,但在短時間內
,仍然是相對穩定的。攻擊者經過測量延遲的平均值
,就可以估計出
v使用的初始序列號。減小計數器的時間間隔
,可以增加攻擊的難度
,但無法從根本上阻止此類攻擊。如果初始序列號使用隨機值
,或在初始序列號中加入秘密資訊
, 比如
ip 位址的
hash 值等,
就可以防止此種攻擊。文獻
[8 討論了預防
tcp
序列號猜測的方法。在應用層使用認證的辦法
,也可以防止
tcp
偽裝攻擊。檢測
tcp
偽裝只能在進行連線時進行
,當連線成功後
,就無法再進行檢測。當攻擊者進行
tcp
偽裝攻擊時
,首先需要探測
tcp
初始序列號的生成機制、測試網路延遲
,然後再嘗試建立連線。如果收到多個含有錯誤的確認序列號的
ack 報文,
則可以斷定受到了
tcp
偽裝攻擊。
tcp異常報文攻擊與檢測原理
tcp報文標誌位包括 urgack pshrst synfin 攻擊者通過傳送非法tcp flag組合的報文對主機造成危害。檢查tcp報文的各個標誌位urg ack psh rst syn fin,如果標誌位異常,則認為是tcp異常報文。內建規則將所有tcp異常報文全部丟棄,記錄攻擊日誌。異常檢測如...
常見的攻擊與協議
arp協議又稱位址轉換協議,位址解析就是主機在傳送資料前將目標ip位址轉換成目標mac位址的過程。arp欺騙的運作原理是由攻擊者傳送假的arp資料報到網上上,尤其是送到閘道器上。其目的是要讓送至特定的ip位址的流量被錯誤送到攻擊者所取代的地方。因此攻擊者可將這些流量另行轉送到真正的閘道器 被動式資料...
TCP協議與UDP協議的區別
tcp建立連線要進行3次握手,而斷開連線要進行4次 1 當主機a完成資料傳輸後,將控制位fin置1,提出停止tcp連線的請求 2 主機b收到fin後對其作出響應,確認這一方向上的tcp連線將關閉,將ack置1 3 由b 端再提出反方向的關閉請求,將fin置1 4 主機a對主機b的請求進行確認,將ac...