<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          DDoS攻擊:無(wú)限戰(zhàn)爭(zhēng) (續(xù)篇)

          共 2854字,需瀏覽 6分鐘

           ·

          2020-01-16 23:25

          274ed72ce54a1a4016e56d3bef2b64c6.webp

          前情回顧

          經(jīng)過(guò)黑衣人和的合作,終于清除了入侵Linux帝國(guó)的網(wǎng)頁(yè)病毒,并修復(fù)了漏洞。不曾想激怒了幕后的黑手,一場(chǎng)新的風(fēng)雨即將來(lái)臨。詳情參見一條SQL注入引出的驚天大案

          1

          風(fēng)云再起

          小Q是Linux帝國(guó)網(wǎng)絡(luò)部負(fù)責(zé)TCP連接的公務(wù)員。

          一直以來(lái)工作都很輕松,加班也少,但自從小馬哥到Linux帝國(guó)開設(shè)了nginx公司,小Q的工作量一下就大了起來(lái),經(jīng)常加班,為此小Q背后沒少抱怨。


          一大早,nginx按時(shí)啟動(dòng),綁定了80端口監(jiān)聽,開始了今天的營(yíng)生。

          沒過(guò)多久,今天的第一個(gè)客戶來(lái)了。

          00921fc65891916a3051e09a35fdf67a.webp

          小Q還是如往常一樣,收到這個(gè)帶有SYN標(biāo)記的數(shù)據(jù)包后,創(chuàng)建了一個(gè)連接請(qǐng)求塊,然后將其放入80端口歸屬的連接請(qǐng)求隊(duì)列中,回復(fù)了一個(gè)帶有SYN和ACK標(biāo)記的數(shù)據(jù)包后,開啟了一個(gè)定時(shí)器,等待第三次握手的完成。

          d451e913b8904d701fc981f204dd81e7.webp

          沒等多久,這個(gè)客戶就發(fā)來(lái)了回信,三次握手完成。小Q把這個(gè)連接請(qǐng)求塊轉(zhuǎn)移到了80端口對(duì)應(yīng)的連接就緒隊(duì)列中,并按下了鈴鐺。


          聽到鈴聲的nginx線程從epoll_wait函數(shù)中醒來(lái),調(diào)用accept函數(shù),從隊(duì)列中拿到了這個(gè)新來(lái)的客戶,開始服務(wù)。

          這就是小Q的日常,他已經(jīng)干這份工作太久了,輕車熟路。


          83b47359c4698bcd4c7953d5ea9745c5.webp

          很快到了深夜,小Q準(zhǔn)備打個(gè)盹兒,這么晚估計(jì)是沒有活干了。


          沒想到剛躺下,就來(lái)了一個(gè)連接請(qǐng)求,小Q揉揉惺忪的睡眼,準(zhǔn)備來(lái)處理,然后接著很快來(lái)了第二個(gè),第三個(gè),第四個(gè)······


          奇怪的是,每一個(gè)客戶只發(fā)送了一個(gè)SYN就沒了音訊,眼看著連接請(qǐng)求隊(duì)列里的請(qǐng)求塊越來(lái)越多,最后實(shí)在沒有空間安放新的請(qǐng)求塊,小Q開始意識(shí)到情況不妙,拉響了帝國(guó)安全警報(bào)······

          7a3de22c0c09ad67c6a3ed01c7c49a14.webp

          2

          全軍出擊

          十分鐘前······


          “快醒醒,有消息來(lái)了“,還在sleep的阿D被喚醒了。

          “上峰總算想起我了,我來(lái)到Windows帝國(guó)都快一個(gè)月了,一直沒有指示,只是讓我保持靜默,我都憋壞了。”,阿D伸了伸懶腰,起身調(diào)用recv函數(shù)取到了消息:

          目標(biāo):222.230.189.34

          端口:80

          動(dòng)作:偽造源IP地址,發(fā)送SYN數(shù)據(jù)包


          讀完消息后,阿D使用原始套接字構(gòu)造了一個(gè)TCP數(shù)據(jù)包,將SYN標(biāo)記點(diǎn)亮,偽造了一個(gè)源IP地址,將其發(fā)送了出去。

          經(jīng)過(guò)一通路由轉(zhuǎn)發(fā),這個(gè)數(shù)據(jù)包終于來(lái)到Linux帝國(guó),卻遲遲沒有人來(lái)接待,側(cè)目望去,原來(lái),已經(jīng)有數(shù)不清的TCP包堵在門口,還有無(wú)數(shù)類似的TCP包正在源源不斷的涌入……

          08b5f176e2dc2219ef2bb3d30c432254.webp


          3

          SYN Flood

          此刻,帝國(guó)高層正在召開緊急會(huì)議。

          防火墻:“現(xiàn)在有無(wú)數(shù)的網(wǎng)絡(luò)連接進(jìn)來(lái),為了帝國(guó)的安全,我只好先關(guān)閉了網(wǎng)絡(luò),把那些數(shù)據(jù)包擋在外面。”

          443780b49b7af6cb4cbf999c1d22f288.webp

          小馬哥:“需要趕緊采取措施,恢復(fù)正常,我們nginx公司每秒鐘都在丟失大量的客戶,這是一筆巨額損失!”


          帝國(guó)安全部長(zhǎng):“小Q,你把當(dāng)前的形勢(shì)介紹一下,大家一起來(lái)出謀劃策。”

          小Q:“好的。TCP的三次握手想必諸位都有所了解,收到SYN數(shù)據(jù)包后,我需要準(zhǔn)備一個(gè)數(shù)據(jù)塊來(lái)存儲(chǔ)客戶端的信息,敵軍正是瞄準(zhǔn)了這一點(diǎn),給我發(fā)送SYN數(shù)據(jù)包,我就需要分配大量的數(shù)據(jù)塊,直到把帝國(guó)空間耗盡。”

          606d35140ff64f3930224bf3b740a780.webp

          小馬哥:“抱歉,我打斷一下,你為何不及時(shí)把無(wú)效的數(shù)據(jù)塊釋放掉,騰出空間呢?

          小Q:“當(dāng)然有,我有一套超時(shí)機(jī)制,超時(shí)以后第三次握手還沒來(lái),我就會(huì)給釋放掉。但現(xiàn)在問(wèn)題是敵軍聲勢(shì)浩大,剛剛騰出的空間馬上又會(huì)被擠占。”

          fc1f266f805af8bfb2c724aa3b609c1c.webp

          小馬哥:“那簡(jiǎn)單,你把超時(shí)時(shí)間調(diào)小一點(diǎn),盡快釋放無(wú)效的數(shù)據(jù)塊不就行了!”

          小Q:“要是太小了,正常的用戶因?yàn)榫W(wǎng)絡(luò)原因,時(shí)延比較大的,這不就誤傷了嗎?”

          小馬哥:“嗯,這個(gè)你們自己權(quán)衡一下,取一個(gè)合適的值,如今也沒有其他辦法,趕緊恢復(fù)生產(chǎn)才是!”


          安全部長(zhǎng):“小Q,先這樣試試看”

          小Q:“行吧,我這就去”


          1740795d03448d977f21323c0acec84e.webp半小時(shí)后······


          小Q:“大人,我已經(jīng)按照指示執(zhí)行,不過(guò)網(wǎng)絡(luò)連接越來(lái)越多,這一招恐怕支撐不了太久,還是早做打算才是。”


          安全部長(zhǎng):“WAF公司呢,你們有什么辦法沒有?”

          WAF公司黑衣人:“大人,我們關(guān)注的業(yè)務(wù)在于web應(yīng)用安全,此次的SYN Flood,實(shí)非我等擅長(zhǎng)。”


          現(xiàn)場(chǎng)陷入了久久的沉默……


          21349268f77579703db9d8db7e9f46b0.webp


          良久,防火墻打破了沉默:“小Q,為何非得在收到第一次握手SYN數(shù)據(jù)包后就建立數(shù)據(jù)塊?如果把數(shù)據(jù)塊的建立時(shí)間放在第三次握手之后呢?

          小Q:“如果一開始不用建立數(shù)據(jù)塊占用空間,那確實(shí)解決了大麻煩!不過(guò),不建立數(shù)據(jù)塊,那如何把客戶端的信息保存起來(lái)呢?”


          防火墻:“保存什么信息?”

          小Q:“客戶端的IP、端口、序列號(hào)這些啊。”

          防火墻:“這些信息在第三次握手來(lái)的數(shù)據(jù)包中也有啊,不用提前存起來(lái)嘛!”

          b236b02ef2c63d42bde480165da326f9.webp

          小Q:“說(shuō)的也是,唉,還是不對(duì),第三次握手我得校驗(yàn)對(duì)方發(fā)來(lái)的ACK是不是我在第二次發(fā)給他的序列號(hào)+1,如果我提前不分配數(shù)據(jù)塊把我發(fā)給他的序列號(hào)存起來(lái),到時(shí)候就沒辦法校驗(yàn)了呀!不行,還是得提前存下來(lái)!”


          防火墻:“有沒有什么辦法,不用提前存,也能做校驗(yàn)?zāi)兀俊?br />

          小Q:“這,這怎么做?”

          防火墻:“有了!第二次發(fā)給客戶端的序列號(hào),如果不是一個(gè)隨機(jī)值,而是根據(jù)客戶端信息和其他信息綜合計(jì)算出來(lái)的一個(gè)哈希值,收到第三次握手的時(shí)候,我們拿到客戶端答復(fù)的ACK,再重新計(jì)算一次哈希值,如果哈希值+1=ACK,那就能對(duì)得上,反之就是錯(cuò)誤的包,直接丟棄!

          eced9af0210f988b2c0456eb345653da.webp

          還沒等小Q回過(guò)神,安全部長(zhǎng)起身鼓掌:“妙哉!這真是一個(gè)絕妙的點(diǎn)子!小Q,就按這個(gè)辦法,趕緊去辦!


          4

          絕處逢生

          小Q回到工作崗位,按照防火墻提供的思路修改了策略。隨后,通知防火墻重新打開網(wǎng)絡(luò)碼頭,但究竟效果如何,小Q心里還是捏了一把汗。

          ae6e5962e5246b201efe3bef88f22e48.webp

          網(wǎng)絡(luò)恢復(fù)的一剎那,無(wú)數(shù)TCP SYN數(shù)據(jù)包涌了進(jìn)來(lái),這一次,小Q不再分配數(shù)據(jù)塊,只是快速計(jì)算了一個(gè)哈希值作為序列號(hào),回復(fù)給了客戶端。小Q忙的滿頭大汗,但看到存儲(chǔ)空間總算沒有瘋狂增長(zhǎng),小Q心里長(zhǎng)舒了一口氣。

          66307d176b42b25e5d842da477d81c22.webp

          收到消息的會(huì)議室里響起了熱烈的掌聲!安全部長(zhǎng):“本次經(jīng)歷值得牢記,我們給這個(gè)方案取個(gè)名字吧,告知比特宇宙其他的帝國(guó),幫助大家一起抵抗黑暗勢(shì)力的侵?jǐn)_。”

          79200c4d12a036d3eb6bde2ba410bb38.webp

          WAF黑衣人搶先發(fā)言:“我覺得這個(gè)方式關(guān)鍵點(diǎn)在于把校驗(yàn)信息的存儲(chǔ)從服務(wù)器放到了客戶端,有點(diǎn)類似web技術(shù)中的Cookie。要不咱們就叫做SYN Cookie吧!”

          防火墻:“嗯,這個(gè)名字好,總結(jié)的很到位”


          一個(gè)小時(shí)后,瘋狂的TCP SYN數(shù)據(jù)包潮水逐漸退去,Linux帝國(guó)終于恢復(fù)了往日的寧?kù)o,nginx公司的業(yè)務(wù)也恢復(fù)了正常。小Q抬頭一看,天邊已經(jīng)微亮,這漫長(zhǎng)的夜晚總算是熬過(guò)去了。

          ef4fa0bc4fa7556e1897daf0e7496fea.webp


          未完待續(xù)·······



          彩蛋

          “大人,Linux帝國(guó)有防火墻、WAF一幫人守衛(wèi),我們的攻擊沒有起到什么效果。”

          “你以為他們真的是靠自己的本事勝利的嗎?這次只是給他們點(diǎn)教訓(xùn),我們的游戲才剛剛開始。


          欲知后事如何,請(qǐng)關(guān)注后續(xù)精彩......


          -END-


          另外,新關(guān)注我們公眾號(hào)的朋友,可以在公眾號(hào)后臺(tái)聊天框回復(fù)【1024】,可以免費(fèi)獲取2T的編程視頻,算法、人工智能、Python、Java、Linux、Go、C語(yǔ)言、軟考、英語(yǔ)等等資源 。


          推薦閱讀:




          ae88e3dc239fc4b7444ad5a433c222eb.webp原創(chuàng)不容易,別光看,轉(zhuǎn)發(fā)分享給更多人啊bfb05f56fe61237ddb848375f6c8b22f.webp
          瀏覽 73
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人影音a片 | 五月天成人免费视频 | 无码操逼动漫 | 欧美操逼免费毛片视频 | 操屄视频免费看 |