個人總結系列17常見網路攻擊方法及原理學習總結

2021-03-10 05:39:52 字數 3809 閱讀 3173

tcp syn拒絕服務攻擊

一般情況下,乙個tcp連線的建立需要經過三次握手的過程,即:

1、 建立發起者向目標計算機傳送乙個tcp syn報文;

2、 目標計算機收到這個syn報文後,在記憶體中建立tcp連線控制塊(tcb),然後向發起者回送乙個tcp ack報文,等待發起者的回應;

3、 發起者收到tcp ack報文後,再回應乙個ack報文,這樣tcp連線就建立起來了。

利用這個過程,一些惡意的攻擊者可以進行所謂的tcp syn拒絕服務攻擊:

1、 攻擊者向目標計算機傳送乙個tcp syn報文;

2、 目標計算機收到這個報文後,建立tcp連線控制結構(tcb),並回應乙個ack,等待發起者的回應;

3、 而發起者則不向目標計算機回應ack報文,這樣導致目標計算機一致處於等待狀態。

可以看出,目標計算機如果接收到大量的tcp syn報文,而沒有收到發起者的第三次ack回應,會一直等待,處於這樣尷尬狀態的半連線如果很多,則會把目標計算機的資源(tcb控制結構,tcb,一般情況下是有限的)耗盡,而不能響應正常的tcp連線請求。

埠掃瞄

根據tcp協議規範,當一台計算機收到乙個tcp連線建立請求報文(tcp syn)的時候,做這樣的處理:

1、 如果請求的tcp埠是開放的,則回應乙個tcp ack報文,並建立tcp連線控制結構(tcb);

2、 如果請求的tcp埠沒有開放,則回應乙個tcp rst(tcp頭部中的rst標誌設為1)報文,告訴發起計算機,該埠沒有開放。

相應地,如果ip協議棧收到乙個udp報文,做如下處理:

1、 如果該報文的目標埠開放,則把該udp報文送上層協議(udp)處理,不回應任何報文(上層協議根據處理結果而回應的報文例外);

2、 如果該報文的目標埠沒有開放,則向發起者回應乙個icmp不可達報文,告訴發起者計算機該udp報文的埠不可達。

利用這個原理,攻擊者計算機便可以通過傳送合適的報文,判斷目標計算機哪些tcp或udp埠是開放的,過程如下:

1、 發出埠號從0開始依次遞增的tcp syn或udp報文(埠號是乙個16位元的數字,這樣最大為65535,數量很有限);

2、 如果收到了針對這個tcp報文的rst報文,或針對這個udp報文的icmp不可達報文,則說明這個埠沒有開放;

3、 相反,如果收到了針對這個tcp syn報文的ack報文,或者沒有接收到任何針對該udp報文的icmp報文,則說明該tcp埠是開放的,udp埠可能開放(因為有的實現中可能不回應icmp不可達報文,即使該udp埠沒有開放)。

這樣繼續下去,便可以很容易的判斷出目標計算機開放了哪些tcp或udp埠,然後針對埠的具體數字,進行下一步攻擊,這就是所謂的埠掃瞄攻擊。

分片ip報文攻擊

為了傳送乙個大的ip報文,ip協議棧需要根據鏈路介面的mtu對該ip報文進行分片,通過填充適當的ip頭中的分片指示字段,接收計算機可以很容易的把這些ip分片報文組裝起來。

目標計算機在處理這些分片報文的時候,會把先到的分片報文快取起來,然後一直等待後續的分片報文,這個過程會消耗掉一部分記憶體,以及一些ip協議棧的資料結構。如果攻擊者給目標計算機只傳送一片分片報文,而不傳送所有的分片報文,這樣攻擊者計算機便會一直等待(直到乙個內部計時器到時),如果攻擊者傳送了大量的分片報文,就會消耗掉目標計算機的資源,而導致不能相應正常的ip報文,這也是一種dos攻擊。

syn位元和fin位元同時設定

在tcp報文的報頭中,有幾個標誌字段:

1、 syn:連線建立標誌,tcp syn報文就是把這個標誌設定為1,來請求建立連線;

2、 ack:回應標誌,在乙個tcp連線中,除了第乙個報文(tcp syn)外,所有報文都設定該欄位,作為對上乙個報文的相應;

3、 fin:結束標誌,當一台計算機接收到乙個設定了fin標誌的tcp報文後,會拆除這個tcp連線;

4、 rst:復位標誌,當ip協議棧接收到乙個目標埠不存在的tcp報文的時候,會回應乙個rst標誌設定的報文;

5、 psh:通知協議棧盡快把tcp資料提交給上層程式處理。

正常情況下,syn標誌(連線請求標誌)和fin標誌(連線拆除標誌)是不能同時出現在乙個tcp報文中的。而且rfc也沒有規定ip協議棧如何處理這樣的畸形報文,因此,各個作業系統的協議棧在收到這樣的報文後的處理方式也不同,攻擊者就可以利用這個特徵,通過傳送syn和fin同時設定的報文,來判斷作業系統的型別,然後針對該作業系統,進行進一步的攻擊。

沒有設定任何標誌的tcp報文攻擊

正常情況下,任何tcp報文都會設定syn,fin,ack,rst,psh五個標誌中的至少乙個標誌,第乙個tcp報文(tcp連線請求報文)設定syn標誌,後續報文都設定ack標誌。有的協議棧基於這樣的假設,沒有針對不設定任何標誌的tcp報文的處理過程,因此,這樣的協議棧如果收到了這樣的報文,可能會崩潰。攻擊者利用了這個特點,對目標計算機進行攻擊。

設定了fin標誌卻沒有設定ack標誌的tcp報文攻擊

正常情況下,ack標誌在除了第乙個報文(syn報文)外,所有的報文都設定,包括tcp連線拆除報文(fin標誌設定的報文)。但有的攻擊者卻可能向目標計算機傳送設定了fin標誌卻沒有設定ack標誌的tcp報文,這樣可能導致目標計算機崩潰。

淚滴攻擊

對於一些大的ip包,需要對其進行分片傳送,這是為了迎合鏈路層的mtu(最大傳輸單元)的要求。比如,乙個節的ip包,在mtu為1500的鏈路上傳輸的時候,就需要分成三個ip包。

在ip報頭中有乙個偏移欄位和乙個分片標誌(mf),如果mf標誌設定為1,則表面這個ip包是乙個大ip包的片斷,其中偏移字段指出了這個片斷在整個ip包中的位置。

例如,對乙個節的ip包進行分片(mtu為1500),則三個片斷中偏移欄位的值依次為:0,1500,3000。這樣接收端就可以根據這些資訊成功的組裝該ip包。

如果乙個攻擊者打破這種正常情況,把偏移字段設定成不正確的值,即可能出現重合或斷開的情況,就可能導致目標作業系統崩潰。比如,把上述偏移設定為0,1300,3000。這就是所謂的淚滴攻擊。

死亡之ping

tcp/ip規範要求ip報文的長度在一定範圍內(比如,0-64k),但有的攻擊計算機可能向目標計算機發出大於64k長度的ping報文,導致目標計算機ip協議棧崩潰。

未知協議欄位的ip報文

在ip報文頭中,有乙個協議字段,這個字段指明了該ip報文承載了何種協議 ,比如,如果該字段值為1,則表明該ip報文承載了icmp報文,如果為6,則是tcp,等等。目前情況下,已經分配的該字段的值都是小於100的,因此,乙個帶大於100的協議欄位的ip報文,可能就是不合法的,這樣的報文可能對一些計算機作業系統的協議棧進行破壞。

land攻擊

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

這樣如果攻擊者傳送了足夠多的syn報文,則目標計算機的tcb可能會耗盡,最終不能正常服務。這也是一種dos攻擊。

**urf攻擊

icmp echo請求包用來對網路進行診斷,當一台計算機接收到這樣乙個報文後,會向報文的源位址回應乙個icmp echo reply。一般情況下,計算機是不檢查該echo請求的源位址的,因此,如果乙個惡意的攻擊者把echo的源位址設定為乙個廣播位址,這樣計算機在恢復reply的時候,就會以廣播位址為目的位址,這樣本地網路上所有的計算機都必須處理這些廣播報文。如果攻擊者傳送的echo 請求報文足夠多,產生的reply廣播報文就可能把整個網路淹沒。

這就是所謂的**urf攻擊。除了把echo報文的源位址設定為廣播位址外,攻擊者還可能把源位址設定為乙個子網廣播位址,這樣,該子網所在的計算機就可能受影響。

個人總結系列 53 Matlab學習總結

matlab是美國mathworks公司出品的商業數學軟體,用於演算法開發 資料視覺化 資料分析以及數值計算的高階技術計算語言和互動式環境。首先簡單介紹一下matlab的主要功能,首先是數值計算和符號計算功能 matlab以矩陣作為資料操作的基本單位,還提供了十分豐富的數值計算函式 其次是繪圖功能 ...

高中數學複習系列數列常見題型總結

題型一 求值類的計算題 多關於等差等比數列 a 根據基本量求解 方程的思想 1 已知為等差數列的前項和,求 2 等差數列中,且成等比數列,求數列前20項的和 3 設是公比為正數的等比數列,若,求數列前7項的和.4 已知四個實數,前三個數成等差數列,後三個數成等比數列,首末兩數之和為,中間兩數之和為,...

高中數學複習系列數列常見題型總結

數列題型一 求值類的計算題 多關於等差等比數列 a 根據基本量求解 方程的思想 1 已知為等差數列的前項和,求 2 等差數列中,且成等比數列,求數列前20項的和 3 設是公比為正數的等比數列,若,求數列前7項的和.4 已知四個實數,前三個數成等差數列,後三個數成等比數列,首末兩數之和為,中間兩數之和...