你到底遭受了多大的SYN Flood攻擊?

2021-09-09 02:59:01 字數 2297 閱讀 8925

這是一篇好玩的文章,它並不是講syn flood的攻擊原理的,也不描述防禦攻擊的解決方案。在這裡,我會隨便說說幾個通常被裝置廠商或無意,或有意隱藏的幾個細節。如果你在考慮買防禦攻擊的裝置,希望這個文章能夠給你一些幫助——至少在和廠商談判的時候,知道問哪些問題,不會輕易被人忽悠了。

一. 乙太網填充

目前的syn flood程式,為了提高傳送效率,填充包頭的時候,沒有填充可選的字段,因此ip頭長度恰好是20位元組(byte),圖示如下:

typedef struct ip_hdr

ip_header;

同樣的,對於tcp頭部,長度也是20位元組,圖示如下:

typedef struct tcp_hdr

tcp_header;

也就是說,攻擊程式填充了乙個40位元組的資料報,開始傳送。但是對於乙太網來說,最小的包長度資料段必須達到46位元組,而我們的包只有40位元組,因此,網絡卡在傳送的時候,會作一些處理。我們40位元組的ip頭加tcp頭包的末尾,會被網絡卡填充6個0來滿足最小包的長度要求。這個時候,整個資料報的長度為14位元組的乙太網頭,20位元組的ip頭,20位元組的tcp頭,再加上因為最小包長度要求而填充的6個位元組的0,一共是60位元組。但是這並還沒有完,因為乙太網在傳輸的時候,還有crc檢驗的要求,傳送資料之前,網絡卡會對資料報進行crc檢驗,將4位元組的crc值附加到包頭的最後面。這個時候,我們的資料報長度已經不再是40位元組,而是變成了64位元組了。這時資料報的結構如下:

|              14位元組乙太網頭                           | 20位元組ip頭 |  20位元組tcp頭 |    6位元組填充      |   4位元組檢驗  |  

| 目的mac位址 | 源mac位址 | 上層協議型別 |       ip頭     |         tcp頭    |     乙太網填充   |    crc檢驗   |

這些工作都做完了,網絡卡就開始傳送資料報了。但是遺憾的是,你在攻擊發起端使用一般的抓包工具,比如tcpdump,wireshark這些,是沒法看到這個過程的,這個過程只能由受攻擊的主機上抓包進行一些簡單的驗證。但是在被攻擊端使用類工具進行抓包,則可以明顯的看到,傳送的只有ip頭和tcp頭的syn資料報,到達被攻擊的機器的時候,後面會多了6個位元組的0填充,這就是剛才所說的乙太網最小包長度填充了。比較遺憾的是,4位元組的crc檢驗在網絡卡接受到資料報完成檢驗之後,就丟掉了,在被攻擊端也沒法使用常見的工具捕獲到。

也就是說,你填充的40位元組的報文在到達被攻擊機器網絡卡的時候,已經不是40位元組,而是64位元組了。

二. 乙太網傳輸

剛才我們說了在傳送時候網絡卡對資料報的填充等操作,但是還沒完,我們來看看攻擊資料報在網路上的傳輸過程。因為攻擊資料報很小,遠遠不夠最大傳輸單元(mtu)的1500位元組,因此不會被分片。難道這些資料報就像生產流水線上的罐頭一樣,乙個包連著乙個包緊密的擠在一起傳輸的嗎?事實上不是這樣的。

乙太網在傳輸的時候,還有前導碼(preamble)和幀間距(inter-frame gap)。其中前導碼佔8位元組(byte),64位元位。前導碼前面的7位元組都是10101010,1和0間隔而成。但是第八個位元組就變成了10101011,當主機監測到連續的兩個1的時候,就知道後面開始是資料了,首先是目的mac位址等等,依次解析。也就是說,前導碼是告訴主機做好接收資料準備的。幀間距是乙太網資料報之間的間隙,幀間距的大小是12位元組(byte),96位元位。因此,在網路傳輸的時候,資料的結構如下:

| 8位元組前導碼 | 6位元組目的mac位址 | 6位元組源mac位址 | 2位元組上層協議型別 | 20位元組ip頭  | 20位元組tcp頭 | 6位元組乙太網填充 | 4位元組crc檢驗 | 12位元組幀間距 |

也就是說,乙個syn包,在網路上傳輸的時候占得頻寬,其實是84位元組。

三. 百兆線速或者千兆線速

有了上面的基礎,現在可以開始討論網路安全裝置的線速問題了,這裡的安全裝置可以是anti-ddos裝置,也可以是ids,或者ips等裝置。當只填充ip頭和tcp頭的最小syn包跑在以太網路上的時候,100mbit的網路,能支援的最大pps是100*10^6 / (8 * (64 + 8 + 12)) = 148809 pps,1000mbit的網路,能支援的最大pps是1488090 pps。

當廠商來宣傳他們的安全裝置的時候,他們的資料是否和這些符合呢?他們的ids支援的最大流量是怎麼計算的?包含了哪些內容?他們的anti-ddos裝置宣傳的線速是符合實際情況的嗎?是否真的能夠防禦相應的pps的攻擊?當你和別人講,你們的ids顯示你們遭受了n gbit syn flood攻擊,pps達到n百萬的時候,你真的遭受了大的攻擊嗎?

四. 總結以及參考

這是去年作ddos防禦方面的專案時的一些心得筆記,今天周五沒太多事情,就整理一下發出來,或許對一些朋友有幫助。

你到底遭受了多大的SYN Flood攻擊?

這是一篇好玩的文章,它並不是講syn flood的攻擊原理的,也不描述防禦攻擊的解決方案。在這裡,我會隨便說說幾個通常被裝置廠商或無意,或有意隱藏的幾個細節。如果你在考慮買防禦攻擊的裝置,希望這個文章能夠給你一些幫助 至少在和廠商談判的時候,知道問哪些問題,不會輕易被人忽悠了。一.乙太網填充 目前的...

示波器到底選擇多大的頻寬合適

本文 這是個經常碰到的問題 我想測8gbps的pcie 還有sas sata usb lvds等等 串 行匯流排,16g的示波器行不行?12g的示波器行不行?8g的示波器行不行?對於高速序列匯流排來說,示波器到底多大頻寬夠用呢?最簡單的筧法是,假定匯流排中傳輸 的都是0 1間隔的訊號,就是方波時鐘,...

樂視遭受200G的DDOS攻擊有多大威力?

事件發生後,有發出疑問,200g的ddos流量攻擊究竟有多大威力?居然能把一家大型網際網路公司 攻擊癱瘓?如何才能做到防患於未然呢?這些問題要先從什麼是ddos說起。據公開資料顯示,ddos distributed denial of service 全稱分布式拒絕服務攻擊 也稱流量洪水 其主要攻擊...