黑客可以利用TCP/IP發(fā)動(dòng)哪些攻擊?
TCP/IP是網(wǎng)絡(luò)最基本的通信協(xié)議,任何廠家生產(chǎn)的計(jì)算機(jī)系統(tǒng),只要遵守該協(xié)議,就能與因特網(wǎng)互聯(lián)互通。但是,TCP/IP存在的一些缺陷,常常被不法分子利用,成為他們發(fā)動(dòng)攻擊的一種手段。
2020年初,黑客對著名代碼托管平臺GitHub發(fā)動(dòng)攻擊,GitHub和旗下很多子站點(diǎn)均被提示有信息安全問題,大批訪問用戶被擋在網(wǎng)站之外。
這樣的例子還有很多,14年微軟賬號系統(tǒng)被入侵事件,16年美國網(wǎng)絡(luò)癱瘓事件等等等等。
今天,我們一起來看看TCP/IP常見的3種攻擊手段。
SYN Flood
要建立一個(gè)TCP連接,需要經(jīng)過三次握手,過程如下:
(1) 客戶端向服務(wù)器發(fā)送SYN包,并進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器確認(rèn);
(2) 服務(wù)器收到SYN包并進(jìn)行確認(rèn),同時(shí)向客戶端發(fā)送SYN包,即SYN+ACK包。此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)。
(3) 客戶端收到服務(wù)器的SYN+ACK包后,向服務(wù)器發(fā)送確認(rèn)包ACK,發(fā)送完畢后,TCP連接成功,完成三次握手。
為了保證三次握手TCP連接的順利建立,TCP協(xié)議在三次握手過程中,設(shè)置了一些異常處理機(jī)制。
第三步客戶端發(fā)送確認(rèn)包ACK后,如果服務(wù)器沒有收到,會(huì)一直處于第二步的SYN_RECV狀態(tài),并將客戶端IP加入等待列表,重發(fā)SYN+ACK報(bào)文試圖重試。
重發(fā)一般會(huì)進(jìn)行3-5次,大約30秒左右輪詢一次等待列表重試所有客戶端。
SYN_RECV狀態(tài)如果一直存在,超過了服務(wù)器承受上限后,新的SYN報(bào)文將不再被接收,也就會(huì)拒絕新的TCP連接的建立。
SYN Flood正是利用了這一設(shè)定來攻擊目標(biāo),攻擊者偽裝大量的IP地址給服務(wù)器發(fā)送SYN報(bào)文,由于IP地址不存在,客戶端不會(huì)給服務(wù)器發(fā)送最終確認(rèn)包ACK,使服務(wù)器要維持一個(gè)龐大的 等待列表,不斷重試發(fā)送SYN+ACK報(bào)文,SYN_RECV隊(duì)列被占滿后,服務(wù)器也就徹底崩潰了。
怎么防SYN Flood呢?最簡單的方法是使用DDoS云清洗。DDoS不僅能清洗SYN Flood攻擊,對其他類型的DDoS攻擊也有效,例如UDP Flood、CC等。
CDN也有緩解這類攻擊的作用,前提是攻擊量沒有達(dá)到CDN最大承受能力,否則就會(huì)直接穿透到達(dá)源站,很快源站也會(huì)失守,徹底淪陷。如果網(wǎng)站/APP經(jīng)常遭受DDoS攻擊,最好使用DDoS云清洗。
IP欺騙
我們知道,IP是識別身份的重要信息,所以它自然也成了黑客們極力想利用的對象。
假設(shè)一個(gè)用戶,已經(jīng)和服務(wù)器建立正常的TCP連接,攻擊者會(huì)通過構(gòu)造TCP數(shù)據(jù),將自己的IP偽裝為與這名用戶相同的IP,并向服務(wù)器發(fā)送一個(gè)帶有RSI位的TCP數(shù)據(jù)段。
服務(wù)器收到這一數(shù)據(jù)后,會(huì)認(rèn)為從用戶發(fā)送的連接有錯(cuò)誤,將清空緩沖區(qū)中建立好的連接。
這樣一來,這名用戶再發(fā)送數(shù)據(jù)時(shí),服務(wù)器已經(jīng)沒有連接,無法響應(yīng),用戶必須從新建立連接。
黑客會(huì)偽造大量的IP地址,向目標(biāo)發(fā)送RST數(shù)據(jù),使服務(wù)器無法對正常用戶服務(wù),這就是IP欺騙攻擊。
TCP重置攻擊
TCP連接有一個(gè)特別的設(shè)定,如果客戶端發(fā)現(xiàn)到達(dá)的報(bào)文段,對于相關(guān)連接而言是不正確的,TCP會(huì)發(fā)送一個(gè)重置報(bào)文段斷開連接,防止連接被用來進(jìn)一步交換信息。
攻擊者正是利用了這一機(jī)制,通過向通信的一方或者雙方發(fā)送偽造的重置報(bào)文段,讓通信方提前關(guān)閉TCP連接。雖然服務(wù)器仍然可以創(chuàng)建一個(gè)新的TCP連接恢復(fù)通信,但還是很可能會(huì)被攻擊者重置。
TCP重置攻擊有兩種。
一種是攻擊者截獲了通信雙方的交換信息,讀取數(shù)據(jù)包上的序列號和確認(rèn)應(yīng)答號后,得出偽裝的TCP重置報(bào)文段的序列號。
另一種是攻擊者無法截取交換信息,無法確定重置報(bào)文段的序列號,但通過批量發(fā)出不同序列號的重置報(bào)文,盲猜序列號,一旦猜中,攻擊目的便達(dá)成了。