泛洪攻擊的幾種方法解析

2021-05-24 09:35:44 字數 4466 閱讀 9146

icmp泛洪

icmp泛洪(icmp flood)是利用icmp報文 進行攻擊的一種方法。如果攻擊者向目標主機發 送大量的icmp echo報文,將產生icmp泛洪, 目標主機會將大量的時間和資源用於處理icmp echo報文,而無法處理正常的請求或響應,從而實現對目標主機的攻擊。

icmp反射泛洪:

smurf ip利用廣播位址傳送icmp包,一旦廣播出去,就會被廣播域內的所有主機回應,當然這些包都回應給了偽裝的ip位址(指向被攻擊主機),偽裝ip位址可以是網際網路上的任何位址,不一定在本地;假如駭客不停地傳送此種型別的包,就會造成dos攻擊。

tcp syn 泛洪:

對於tcp協議,當客戶端向伺服器發起連線請求並初始化時,伺服器一端的協議棧會留一塊緩衝區來處理「握手」過程中的資訊交換。請求建立連線時傳送的資料報的包頭syn位就表明了資料報的順序,攻擊者可以利用在短時間內快速發起大量連線請求,以致伺服器來不及響應。同時攻擊者還可以偽造源ip位址。也就是說攻擊者發起大量連線請求,然後掛起在半連線狀態,以此來占用大量伺服器資源直到拒絕服務。雖然緩衝區中的資料在一段時間內(通常是三分鐘)都沒有回應的話,就會被丟棄,但在這段時間內,大量半連線足以耗盡伺服器資源。

tcp land:

land攻擊利用了tcp連線建立的三次握手過程,通過向乙個目標主機傳送乙個用於建立請求連線的tcp syn報文而實現對目標主機的攻擊。與正常的tcp syn報文不同的是:land攻擊報文的源ip位址和目的ip位址是相同的,都是目標主機的ip位址。這樣目標主機接在收到這個syn 報文後,就會向該報文的源位址傳送乙個ack報文,並建立乙個tcp連線控制結構,而該報文的源位址就是自己。由於目的ip位址和源ip位址是相同的,都是目標主機的ip位址,因此這個ack 報文就發給了目標主機本身。

udp flood:

udp泛洪(udp flood)的實現原理與icmp泛洪類似,攻擊者通過向目標主機傳送大量的udp報文,導致目標主機忙於處理這些udp報文,而無法處理正常的報文請求或響應。

死亡之ping (ping of death) :

由於在早期的階段,路由器對包的最大尺寸都有限制,許多作業系統對tcp/ip棧的實現在icmp包上都是規定64kb,並且在對包的標題頭進行讀取之後,要根據該標題頭里包含的資訊來為有效載荷生成緩衝區,當產生畸形的,聲稱自己的尺寸超過icmp上限的包也就是載入的尺寸超過64k上限時,就會出現記憶體分配錯誤,導致tcp/ip堆疊崩潰,致使接受方當機。

tcp的fin、ack、syn、urg、psh及攻擊方式

三次握手three-way handshake

乙個虛擬連線的建立是通過三次握手來實現的

1. (b) –> [syn] –> (a)

假如伺服器a和客戶機b通訊. 當a要和b通訊時,b首先向a發乙個syn (synchronize) 標記的包,告訴a請求建立連線.

注意: 乙個 syn包就是僅syn標記設為1的tcp包(參見tcp包頭resources). 認識到這點很重要,只有當a受到b發來的syn包,才可建立連線,除此之外別無他法。因此,如果你的防火牆丟棄所有的發往外網介面的syn包,那麼你將不 能讓外部任何主機主動建立連線。

2. (b) <– [syn/ack] <–(a)

接著,a收到後會發乙個對syn包的確認包(syn/ack)回去,表示對第乙個syn包的確認,並繼續握手操作.

注意: syn/ack包是僅syn 和 ack 標記為1的包.

3. (b) –> [ack] –> (a)

b收到syn/ack 包,b發乙個確認包(ack),通知a連線已建立。至此,三次握手完成,乙個tcp連線完成

note: ack包就是僅ack 標記設為1的tcp包. 需要注意的是當三此握手完成、連線建立以後,tcp連線的每個包都會設定ack位

這就是為何連線跟蹤很重要的原因了. 沒有連線跟蹤,防火牆將無法判斷收到的ack包是否屬於乙個已經建立的連線.一般的包過濾(ipchains)收到ack包時,會讓它通過(這絕對不是個 好主意). 而當狀態型防火牆收到此種包時,它會先在連線表中查詢是否屬於哪個已建連線,否則丟棄該包

四次握手four-way handshake

四次握手用來關閉已建立的tcp連線

1. (b) –> ack/fin –> (a)

2. (b) <– ack <– (a)

3. (b) <– ack/fin <– (a)

4. (b) –> ack –> (a)

注意: 由於tcp連線是雙向連線, 因此關閉連線需要在兩個方向上做。ack/fin 包(ack 和fin 標記設為1)通常被認為是fin(終結)包.然而, 由於連線還沒有關閉, fin包總是打上ack標記. 沒有ack標記而僅有fin標記的包不是合法的包,並且通常被認為是惡意的

連線復位resetting a connection

四次握手不是關閉tcp連線的唯一方法. 有時,如果主機需要盡快關閉連線(或連線超時,埠或主機不可達),rst (reset)包將被傳送. 注意在,由於rst包不是tcp連線中的必須部分, 可以只傳送rst包(即不帶ack標記). 但在正常的tcp連線中rst包可以帶ack確認標記

請注意rst包是可以不要收到方確認的?

無效的tcp標記invalid tcp flags

到目前為止,你已經看到了 syn, ack, fin, 和rst 標記. 另外,還有psh (push) 和urg (urgent)標記.

最常見的非法組合是syn/fin 包. 注意:由於 syn包是用來初始化連線的, 它不可能和 fin和rst標記一起出現. 這也是乙個惡意攻擊.

由於現在大多數防火牆已知 syn/fin 包, 別的一些組合,例如syn/fin/psh, syn/fin/rst, syn/fin/rst/psh。很明顯,當網路中出現這種包時,很你的網路肯定受到攻擊了。

別的已知的非法包有fin (無ack標記)和」null」包。如同早先討論的,由於ack/fin包的出現是為了關閉乙個tcp連線,那麼正常的fin包總是帶有 ack 標記。」null」包就是沒有任何tcp標記的包(urg,ack,psh,rst,syn,fin都為0)。

到目前為止,正常的網路活動下,tcp協議棧不可能產生帶有上面提到的任何一種標記組合的tcp包。當你發現這些不正常的包時,肯定有人對你的網路不懷好意。

udp (使用者資料報協議user datagram protocol)

tcp是面向連線的,而udp是非連線的協議。udp沒有對接受進行確認的標記和確認機制。對丟包的處理是在應用層來完成的。(or accidental arrival).

此處需要重點注意的事情是:在正常情況下,當udp包到達乙個關閉的埠時,會返回乙個udp復位包。由於udp是非面向連線的, 因此沒有任何確認資訊來確認包是否正確到達目的地。因此如果你的防火牆丟棄udp包,它會開放所有的udp埠(?)。

由於internet上正常情況下一些包將被丟棄,甚至某些發往已關閉埠(非防火牆的)的udp包將不會到達目的,它們將返回乙個復位udp包。

因為這個原因,udp埠掃瞄總是不精確、不可靠的。

看起來大udp包的碎片是常見的dos (denial of service)攻擊的常見形式 (這裡有個dos攻擊的例子,http://grc.com/dos/grcdos.htm ).

icmp (網間控制訊息協議internet control message protocol)

如同名字一樣, icmp用來在主機/路由器之間傳遞控制資訊的協議。 icmp包可以包含診斷資訊(ping, traceroute - 注意目前unix系統中的traceroute用udp包而不是icmp),錯誤資訊(網路/主機/埠 不可達 network/host/port unreachable), 資訊(時間戳timestamp, 位址掩碼address mask request, etc.),或控制資訊 (source quench, redirect, etc.) 。

你可以在http://www.iana.org/assignments/icmp-parameters 中找到icmp包的型別。

儘管icmp通常是無害的,還是有些型別的icmp資訊需要丟棄。

redirect (5), alternate host address (6), router advertisement (9) 能用來**通訊。

echo (8), timestamp (13) and address mask request (17) 能用來分別判斷主機是否起來,本地時間 和位址掩碼。注意它們是和返回的資訊類別有關的。 它們自己本身是不能被利用的,但它們洩露出的資訊對攻擊者是有用的。

icmp訊息有時也被用來作為dos攻擊的一部分(例如:洪水ping flood ping,死 ping ?呵呵,有趣 ping of death)?/p>

包碎片注意a note about packet fragmentation

如果乙個包的大小超過了tcp的最大段長度mss (maximum segment size) 或mtu (maximum transmission unit),能夠把此包發往目的的唯一方法是把此包分片。由於包分片是正常的,它可以被利用來做惡意的攻擊。

MAC位址泛洪攻擊的原理

mac位址泛洪攻擊的原理 交換機中有一張叫做mac的表,但它的大小有限制,交換機的乙個原理是會自動學習並記錄mac位址。而攻擊者就利用交換機的mac位址學習機制,不斷的進行mac位址重新整理,迅速填滿交換機的mac位址表,以至崩潰,使得交換機不得不使用廣播發包,從而獲取其他人的報文資訊。實驗所需要安...

java幾種遍歷map的幾種方法及解析

先來乙個map集合 mapmap new hashmap student student new student stu01 張三 男 teacher teacher new teacher tea01 王偉 女 map.put student student map.put teacher tea...

關於syn泛洪攻擊的交換機埠安全

syn攻擊利用的是 tcp的 三次握手 機制,攻擊端利用 偽造的ip 位址 向被攻擊端發出請求,而被攻擊端發出的響應 報文將永遠傳送不到目的地,那麼被攻擊端在等待關閉這個連線的過程中消耗了資源,如果有成千上萬的這種連線,主機資源將被耗盡,從而達到攻擊的目的。網上很多人都在說路由器的tcp攔截,然而在...