SYN Flood攻擊的過程在TCP協議中稱為三次握手,SYN Flood拒絕服務攻擊就是通過三次握手實現的。
(1)攻擊者向被攻擊的服務器發送包含SYN標誌的TCP消息,SYN(Synchronize)是同步消息。同步消息將指示客戶端使用的端口和TCP連接的初始序列號。此時,與被攻擊的服務器建立了第壹次握手。
(2)受害服務器收到攻擊者的SYN消息後,會返回壹個SYN+ACK消息,表示攻擊者的請求被接受。同時TCP序列號加1,確認ACK(確認),從而與被攻擊的服務器建立第二次握手。
(3)攻擊者也向受害者服務器返回確認消息ACK。同樣,TCP序列號加1,這裏的TCP連接完成,三次握手完成。
具體原理是:在TCP連接的三次握手中,如果用戶在向服務器發送SYN消息後突然死機或掉線,那麽服務器在發送SYN+ACK回復消息後(第五天無法完成)無法接收到客戶端的ACK消息。在這種情況下,服務器壹般會重試(再次向客戶端發送SYN+ACK)並在等待壹段時間後丟棄未完成的連接。這段時間的長短稱為SYN超時,壹般在分鐘量級(約30秒到2分鐘);服務器的壹個線程在用戶異常時等待1分鐘問題不大,但是如果惡意攻擊者大量模擬這種情況(偽造IP地址),服務器為了維護壹個非常大的半鏈表,會消耗大量資源。即使是簡單的保存和遍歷也會消耗大量的CPU時間和內存,更不用說在這個列表中的IP上不斷嘗試SYN+ACK了。事實上,如果服務器的TCP/IP棧不夠強大,最終的結果往往會是棧溢出和崩潰——即使服務器的系統足夠強大,服務器也會忙於處理攻擊者偽造的TCP連接請求而忽略客戶的正常請求(畢竟客戶端的正常請求比例很小)。此時,從正常客戶的角度來看,服務器失去響應。這種情況叫做:服務器受到了SYN Flood攻擊(SYN flood attack)。
SYN cookie防火墻是SYN COOKIE的擴展,建立在TCP棧上,為linux操作系統提供保護。SYN cookie防火墻是linux的壹大特色。您可以使用防火墻來保護您的網絡免受SYN flood攻擊。
以下是SYN cookie防火墻的原理。
客戶端防火墻服務器
- - -
1.SYN-------& gt;
2.& lt- SYN-ACK(cookie)
3.ACK-------& gt;
4.--------SYN-& gt;
5.& lt-----------SYN-ACK
6.-----ACK-& gt;
7.-& gt;中繼->;
& lt-連接& lt-
1:壹個SYN數據包從C發送到s。
2.防火墻在這裏扮演S的角色,用SYN cookie來響應到c的SYN-ACK包。
3: C發送ACK包,然後防火墻和C建立連接。
4.防火墻此時扮演C的角色,向s發送壹個SYN。
5: s向c返回壹個SYN。
6.防火墻扮演C,向S發送ACK確認包,此時防火墻與S的連接建立。
7.防火墻在C和s之間轉發數據。
如果系統遭受SYN flood,第三步不會發生,防火墻和S都不會收到第壹步對應的SYN包,所以我們擊退了SYN Flood攻擊。攻擊的靜態屬性主要包括攻擊控制模式、攻擊通信模式、攻擊技術原理、攻擊協議和攻擊協議層。
(1)攻擊控制模式
攻擊控制方式直接關系到攻擊源的隱蔽程度。根據攻擊機控制攻擊機的方式,可以分為以下三個層次:直接控制方式、間接控制方式和自動控制方式。
最早的拒絕服務攻擊通常是手動直接進行的,即目標的確定、攻擊的發起和終止都是由用戶直接在攻擊主機上手動操作的。這種攻擊相對容易跟蹤。如果能夠準確跟蹤攻擊包,通常可以找到攻擊者的位置。由於直接控制模式的缺點以及攻擊者需要控制大量的攻擊飛機來發動更大規模的攻擊,攻擊者開始構建多層攻擊網絡。多層的攻擊網絡給這類攻擊的追蹤帶來了很大的困難。受害者追蹤到攻擊機後,還需要從攻擊機繼續追蹤控制者。如果攻擊者和最後壹個控制者之間有多個跳板,他還需要跟蹤幾次才能最終找到攻擊者。這種跟蹤不僅需要人工操作,耗時長,而且技術要求也很高。這種攻擊方式是目前最常用的攻擊方式。自動攻擊是指在發布的蠕蟲或攻擊程序中預設攻擊方式,使其在特定時間攻擊指定目標。這種攻擊,攻擊者往往很難追蹤到攻擊者,但這種控制攻擊也需要很高的技術。Mydoom蠕蟲對SCO網站和微軟網站的攻擊屬於第三種【TA04-028A】。
(2)攻擊通信模式
在間接控制的攻擊中,控制者和攻擊者之間有多種通信方式,他們之間使用的通信方式也是影響跟蹤難度的重要因素之壹。攻擊通信模式可分為三種模式,即雙向通信模式(bi)、單向通信模式(mono)和間接通信模式。
雙向通信是指攻擊者收到的控制包中包含了控制器的真實IP地址。例如,當控制器使用TCP與攻擊者連接時,這種通信意味著雙向通信。這種通信模式可以很容易地從攻擊面找到上壹級的控制者。
單向通信是指當攻擊者向攻擊者發送指令時,數據包中並不包含發送者的真實地址信息,例如使用偽造IP地址的UDP包向攻擊者發送指令。這種攻擊很難從攻擊機上找到控制者。只有通過包標記等IP追蹤手段,才能找到向攻擊平面發送指令的機器的真實地址。但是這種通信方式在控制上有壹定的局限性,比如控制者很難得到攻擊機的信息反饋和狀態。
間接通信模式是由第三方交換的雙向通信模式。這種通信方式具有隱蔽性強、難以跟蹤、難以監控和過濾的特點,對攻擊機的審計和跟蹤只能追溯到壹個用作通信中介的公共服務器,難以持續。這種交流方式主要是通過IRC(互聯網中繼聊天)[Jose Nazario]找到的。自從2000年8月出現了壹個名為Trinity的DDoS攻擊工具後,很多DDoS攻擊工具和蠕蟲都采用了這種通信方式。在基於IRC的傀儡網絡中,幾個攻擊者連接到互聯網上的壹個IRC服務器,通過服務器的聊天程序向傀儡主機發送指令。
(3)攻擊原則
DoS攻擊原理主要分為兩種,即:語義攻擊和暴力攻擊。
語義攻擊是指利用目標系統實現中的缺陷和漏洞,對目標主機進行拒絕服務攻擊。這種攻擊往往不需要攻擊者有很高的攻擊帶寬,有時只需要發送1個包就可以達到攻擊目的。防範這種攻擊只需要修復系統中的缺陷。暴力攻擊是指目標系統不需要漏洞或缺陷,只需要發送超過目標系統服務能力的服務請求,就可以達到攻擊的目的,俗稱風暴攻擊。因此,要防禦這種攻擊,必須借助受害者的上遊路由器對攻擊數據進行過濾或分流。壹些兼具語義攻擊和暴力攻擊特征的攻擊,如SYN storm攻擊,利用了TCP協議本身的缺陷,但仍然需要攻擊者發送大量的攻擊請求。為了防禦這種攻擊,用戶不僅需要增強系統本身,還需要增加資源的服務能力。還有壹些攻擊手段,利用系統設計缺陷生成比攻擊者更高帶寬的通信數據來實施暴力攻擊,如DNS請求攻擊、Smurf攻擊等。參見第4.2.3節和參考文獻[IN-2000-04]和[CA-1998-01]。這些攻擊在改進協議和系統後可以消除或減少危害,因此可以歸為語義攻擊。
(4)攻擊協議層
攻擊所在的TCP/IP協議層可以分為以下四類:數據鏈路層、網絡層、傳輸層、應用層。
數據鏈路層拒絕服務攻擊[Converse][Fisch Bach 01][Fisch Bach 02]受協議本身的限制,只能發生在局域網內。這種類型的攻擊很少見。對IP層的攻擊主要是針對目標系統處理IP包時出現的漏洞,比如IP分片攻擊[Anderson01]。在實踐中,傳輸層的攻擊有很多,比如SYN風暴和ACK風暴,應用層的攻擊也有很多。許多高毒性數據包攻擊(如緩沖區溢出攻擊)都屬於這種類型。
(5)攻擊協議
攻擊中涉及的最高特定協議,如SMTP、ICMP、UDP、HTTP等。攻擊涉及的協議層越高,受害者分析攻擊數據包所需的計算資源就越多。攻擊動態屬性主要包括攻擊源地址類型、攻擊數據包數據生成方式和攻擊目標類型。
(1)攻擊源地址類型
攻擊者在攻擊包中使用的源地址類型可以分為三種:真實地址、偽造合法地址和偽造非法地址。
攻擊者在攻擊時可以使用合法的IP地址或偽造的IP地址。偽造的IP地址可以使攻擊者更容易逃避跟蹤,同時也使受害者更難識別和過濾攻擊包,但有些類型的攻擊必須使用真實的IP地址,如連接耗盡攻擊。近年來,由於易於跟蹤和防禦,使用真實IP地址的攻擊比例逐漸下降。使用偽造IP地址的攻擊分為兩種情況:壹種是使用網絡中已有的IP地址,這也是反射攻擊所必須的源地址類型;另壹種是使用網絡中未分配或保留的IP地址(例如192.168.0 . 0/16、172.16.0 . 0/12等內部網絡保留地址[RFC 65438+
(2)攻擊包數據生成模式
攻擊包中主要有五種數據信息模式:無、唯壹、隨機、字典、函數。
當攻擊者實施風暴拒絕服務攻擊時,攻擊者需要向目標主機發送大量數據包。這些數據包中包含的數據信息負載可以有多種生成模式,不同的生成模式對受害者檢測和過濾攻擊包的能力有很大的影響。有些攻擊包不需要包含有效載荷或者只需要包含適當的固定有效載荷,比如SYN storm攻擊和ACK storm攻擊。這兩種攻擊發送的數據包中的有效載荷是空的,所以這種攻擊無法通過有效載荷進行分析。但是對於其他類型的攻擊包,則需要攜帶相應的有效載荷。
攻擊包有效載荷的生成方式有四種:第壹種方式是發送相同有效載荷的包,由於其特征明顯,容易被檢測到。第二種是用隨機生成的負載發送數據包。雖然這種隨機產生的負載很難被模式識別檢測到,但在某些應用中可能會產生大量無意義的數據包,而這些無意義的數據包很容易被過濾掉。但攻擊者仍然可以精心設計載荷的隨機生成方式,使得受害者只能通過解析應用層協議來識別攻擊包,增加了過濾的難度。第三種方式是攻擊者取出壹組幾個有意義的有效載荷,按照壹定的規則壹次壹個地填入攻擊包中。當集合的規模較小時,這種方式更容易檢測。最後壹種方法是按照壹定的規則,每次產生不同的載荷。根據生成函數的不同,該方法具有不同的檢測難度。
(3)攻擊目標類型
攻擊目標的類型可以分為以下六類:應用、系統、關鍵網絡資源、網絡、網絡基礎設施和互聯網。
針對特定應用的攻擊是常見的攻擊,其中大部分是劇毒包,包括利用應用漏洞針對特定應用的拒絕服務攻擊和利用連接耗盡針對壹類應用的拒絕服務攻擊。針對系統的攻擊也很常見,比如SYN storm、UDP storm[CA-1996-01]以及可以導致系統崩潰重啟的劇毒包攻擊,這些攻擊會導致整個系統難以提供服務。對關鍵網絡資源的攻擊包括對特定DNS和路由器的攻擊。面向網絡的攻擊是指針對整個局域網中所有主機的攻擊。針對網絡基礎設施的攻擊需要攻擊者具備相當的資源和技術,攻擊的目標是根域名服務器、骨幹核心路由器、大型證書服務器等網絡基礎設施。雖然這種攻擊的次數不多,但是壹旦攻擊成功,造成的損失是無法估量的[Naraine02]。針對互聯網的攻擊是指由蠕蟲和病毒發起的攻擊,這種攻擊遍布互聯網,導致大量主機和網絡拒絕服務。這種襲擊造成的損失尤其嚴重。