「小黑,據說昨天晚上你把張大胖揍了一頓啊,咋回事兒?」web
「張大胖這個傢伙,看我不順眼,竟然用什麼「ARP 攻擊」讓我打不了遊戲!你說我能不教訓他麼?」面試
關於 ARP 攻擊事件,看這篇:一次成功的黑客欺騙攻擊,沒想到結局如此悲催緩存
「這。。。」小李滿頭黑線,弱弱的說:「不是說你晚上打遊戲太晚吵到他們了麼。。。」服務器
「蛤?張大胖晚上外放抖音我都沒說啥,他還好意思嫌棄我?」微信
「搞了半天大家倆也是半斤八兩。」小李內心這麼想,但嘴上可不敢表現出來,就勸他:「那舍友之間也不能動粗啊,低頭不見擡頭見的,都是大學生了,仍是不要打架爲好,再說了,對付他的 ARP 攻擊,只用設置一個靜態的 ARP 映射表就能夠了,比你打他一頓都快。」網絡
「真有你說的那麼簡單?我還覺得這東西複雜的很呢。」app
「哪兒有,ARP 攻擊能夠說是最基礎的攻擊手段了,還有很多簡單的網絡攻擊手段,像什麼「TCP-RST 攻擊」,「DNS 緩存攻擊」,「TCP SYN拒絕服務攻擊」等等,用到的知識也都是我們計算機網絡上學過的。」微服務
這句話彷彿給小黑打開了一扇嶄新的大門,他一臉壞笑的看着小李:「嘿嘿,你說我用這些攻擊手段讓張大胖晚上看不了視頻怎麼樣?」性能
小李內心咯噔一下,意識到本身剛剛說了不應說的話,支支吾吾的說:「這個嘛,,,從技術上說沒什麼問題,大家又是在一個局域網下,實施起來還會更方便。」學習
「nice~那你教教我,怎麼執行你說的那些攻擊手段?」
小李轉念一想,教給小黑技術總比讓他打人要好,因而說:「那我先教你 TCP RST 攻擊 吧,不過這個手段涉及到 TCP 協議,我得知道你對 TCP 協議瞭解的清不清楚。」
小黑拍拍胸脯:「TCP 協議,不就是三次握手,四次分手嘛,我記得可清楚了!」
「是四次揮手。。。意思差很少吧。」
「呀,我是真的記得,「分手」只是是爲了好記!不信你聽我給你講,TCP 是面向鏈接的可靠的運輸協議,當客戶進程想要經過 TCP 協議與服務端進程通訊時,就須要與服務器進行三次握手,其實就是來回發送三個數據包,具體的過程是這樣的:
等到握手完畢,客戶端進程和服務端進程之間就創建起了一條「虛擬管道」,經過這條管道,兩個進程之間就可以互相傳遞消息了:
最後,若是客戶端發現通訊結束,能夠關閉鏈接時,就向服務器發送終止報文,開始「四次揮手」:
四次揮手完,客戶端進程和服務端進程就會主動把這條鏈接關閉,通訊也就結束了。」
小李驚歎:「woc!沒想到你小子居然記得這麼清楚!還真是小看你了!」
「哈哈,當時咱老師不是說 TCP 三次握手啥的必考嘛,我就給記下來了,並且我以爲這些協議挺有意思,因此一直沒忘~」小黑得意之情溢於言表。
「那看來今天這「TCP-RST 攻擊」你很容易就能理解了,像你剛剛講到的,客戶端利用標誌位 SYN
請求與服務器握手,利用 FIN
標誌位通知服務器斷開鏈接,這兩個是正常狀況下使用的標誌位。但 TCP 報文的標誌位有 6 個,除了 FIN
,還有一個標誌位也能夠斷開 TCP 鏈接,你還記不記得?」
「這些細節我早忘記了。。。」
小李哈哈一笑:「看來仍是有你沒記住的嘛,我這兒有 TCP 報文的結構圖,你看:
注意到 RST
標誌位了嗎?這就是 RST 攻擊的關鍵。」
「我看看,「重置鏈接」?處理異常的時候用嗎?」
「對的,若是客戶端或者服務器認爲如今發生了異常,就會向對方發送 RST 報文,一個常見的例子就是,客戶端向服務器發起鏈接,但服務器發現本身並無正在監聽該端口的進程,確定就不能進行第二次握手啊,他就會給客戶端發送 RST 包,表示出現了異常。客戶端收到 RST 包後,知道服務器那邊出現了異常,就強制切斷本身這邊的鏈接。」
小黑恍然大悟:「也就是說,我只要假裝服務器,給張大胖的電腦發送 RST 包,就能強制關閉他的 TCP 鏈接?」
小李點點頭:「這就是 TCP-RST 攻擊,若是你持續發出 RST 包,會致使張大胖的網絡「卡頓」,由於他的 TCP 鏈接被強制中斷了:
可是 RST 攻擊並不能阻止全部的 TCP 鏈接,好比說張大胖在瀏覽一些簡單網頁的時候,阻斷率就不高,由於等到 RST 包到達張大胖電腦的時候,頁面內容就已經傳輸結束了。」
「我聽明白了,那僞造 TCP 報文有什麼須要注意的嗎?」
「僞造 RST 包還有點門道的,最關鍵的兩個因素是源端口和序列號,你也知道,一個 TCP 鏈接是由「客戶端端口,客戶端 IP,服務端端口,服務端 IP」這四個信息惟一肯定的,因此你首先須要知道這四個信息,不過這對你來講不是問題,由於你和張大胖在一個局域網,你很容易就能截獲張大胖和服務器之間的數據包,而後找到它們。因此麻煩在於序列號。」
「序列號?要這有什麼用?」
「誒,你可別忘了 TCP 的滑動窗口!」
「啊,我想起來了,若是序列號不在滑動窗口範圍內,這個數據包會被直接丟棄,即便是 RST 包也不例外,因此我還得保證序列號落在接收方的滑動窗口才行啊!可這我怎麼能保證啊?」
「不能保證,因此就暴力嘗試嘍,反正只要有一個 RST 包的序列號在範圍內,你就成功了。」
「有道理,我今天晚上就去教訓教訓這個張大胖,讓他見識一下真正的網絡攻擊!」
當天晚上,其餘舍友們驚奇的發現,張大胖竟然沒有外放抖音了!小黑也可貴的沒有玩遊戲,不知道在電腦上捯飭着什麼。
咱也不知道,咱也不敢問。
後臺回覆「加羣」,帶你進入高手如雲交流羣
推薦閱讀:
Linux後臺服務啓動方式systemd、daemon、nohup大比拼
10T 技術資源大放送!包括但不限於:雲計算、虛擬化、微服務、大數據、網絡、Linux、Docker、Kubernetes、Python、Go、C/C++、Shell、PPT 等。在公衆號內回覆「1024」,便可免費獲取!!
本文分享自微信公衆號 - Linux雲計算網絡(cloud_dev)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。