三次握手-几个状态
时间:2005-11-22 来源:xiaokugua
LISTENING表示處於偵聽狀態,只有提供某種服務才會處於LISTENING狀態,前面提到過TCP狀態變化就是某個埠的狀態變化,提供一個服務就打開一個埠,例如:提供www服務默認開的是80埠,提供ftp服務默認的埠為21,當提供的服務沒有被連接時就處於LISTENING狀態。FTP服務啟動後首先處於偵聽(LISTENING)狀態。處於偵聽LISTENING狀態時,該埠是開放的,等待連接,但還沒有被連接。就像你房子的門已經敞開的,但還沒有人進來。
、 詳解幾個狀態
1、伺服器端LISTENING狀態
LISTENING表示處於偵聽狀態,只有提供某種服務才會處於LISTENING狀態,前面提到過TCP狀態變化就是某個埠的狀態變化,提供一個服務就打開一個埠,例如:提供www服務默認開的是80埠,提供ftp服務默認的埠為21,當提供的服務沒有被連接時就處於LISTENING狀態。FTP服務啟動後首先處於偵聽(LISTENING)狀態。處於偵聽LISTENING狀態時,該埠是開放的,等待連接,但還沒有被連接。就像你房子的門已經敞開的,但還沒有人進來。
看LISTENING狀態最主要的是看本機開了哪些埠,這些埠都是哪個程式開的,關閉不必要的埠是保證安全的一個非常重要的方面,服務埠都對應一個服務(應用程式),停止該服務就關閉了該埠,例如要關閉21埠只要停止IIS服務中的FTP服務即可。關於這方面的知識請參閱其他文章。
如果你不幸中了服務埠的木馬,木馬也開個埠處於LISTENING狀態。
2、ESTABLISHED狀態
ESTABLISHED狀態是表示兩台機器正在傳輸資料,觀察這個狀態最主要的就是看哪個程式正在處於ESTABLISHED狀態,圖12是IEXPLORE.EXE(IE)在正常的訪問一個網站,而圖13是EXPLORER.EXE(木馬程式)在和駭客交換資料。
圖12
圖13
3、用戶端SYN_SENT狀態
從上面的分析可以看出,當請求連接時用戶端首先要發送同步信號給要訪問的機器,此時狀態為SYN_SENT,如果連接成功了就變為ESTABLISHED,正常情況下SYN_SENT狀態非常短暫。例如要訪問網站http://www.ccidnet.com,如果是正常連接的話,用TCPView觀察IEXPLORE.EXE(IE)建立的連接會發現很快從SYN_SENT變為ESTABLISHED,表示連接成功。SYN_SENT狀態快的也許看不到。
如果發現有很多SYN_SENT出現,那一般有這麼幾種情況,一是你要訪問的網站不存在或線路不好,二是用掃描軟體掃描一個網段的機器,如下圖14所示:在用xscan掃描軟體掃描192.168.113.0這個網段時用TCPView捕捉到的,另外就是可能中了病毒了,例如中了"衝擊波",病毒發作時會掃描其他機器,這樣會有很多SYN_SENT出現。
圖14
4、伺服器端狀態SYN_RCVD
從上面的分析可以看出,當伺服器收到用戶端發送的同步信號時,將標誌位元ACK和SYN置1發送給用戶端,此時伺服器端處於SYN_RCVD狀態,如果連接成功了就變為ESTABLISHED,正常情況下SYN_RCVD狀態非常短暫。
如果發現有很多SYN_RCVD狀態,那你的機器有可能被SYN Flood的DoS(拒絕服務攻擊)攻擊了。下圖15就是在其他機器上模擬對本機進行SYN Flood攻擊時用TCPView捕捉到的。SYN Flood的攻擊原理是:在進行三次握手時,攻擊軟體向被攻擊的伺服器(本例是192.168.113.207)發送SYN連接請求(握手的第一步),但是這個位址是偽造的,如圖攻擊軟體隨機偽造了51.133.163.104、65.158.99.152等等位址,207號機在收到連接請求時將標誌位元ACK和SYN置1發送給用戶端(握手的第二步),但是這些用戶端的IP位址都是偽造的,伺服器根本找不到客戶機,也就是說握手的第三步不可能完成。這種情況下伺服器端一般會重試(再次發送SYN+ACK給用戶端)並等待一段時間後丟棄這個未完成的連接,這段時間的長度我們稱為SYN Timeout,一般來說這個時間是分鐘的數量級(大約為30秒-2分鐘);一個用戶出現異常導致伺服器的一個線程等待1分鐘並不是什麼很大的問題,但如果有一個惡意的攻擊者大量類比這種情況,伺服器端將為了維護一個非常大的半連接列表而消耗非常多的資源----數以萬計的半連接,即使是簡單的保存並遍曆也會消耗非常多的CPU時間和記憶體,何況還要不斷對這個列表中的IP進行SYN+ACK的重試。此時從正常客戶的角度看來,伺服器失去響應,這種情況我們稱做:伺服器端受到了SYN Flood攻擊(SYN洪水攻擊)。
圖15
下圖是用sniffer pro抓的SYN Flood攻擊資料包,從圖上可以清楚地看出,120行是第一次握手,121是207號機對51.133.163.104這個位址的回復,但這個位址不通的,第三次握手沒法進行下去。
圖16
因為涉及到攻擊,具體攻擊過程不做演示,只把結果貼出來。
5、其他
在TCP的標誌位元中有一位元是Reset,如果包重發該標誌位置為1,重發包很多時網路一定有問題,圖17是我上網時打不開用網頁用IRIS抓得包,8-13行的Reset位都為1且SEQ號都相同,這種情況網肯定是有問題了,後查明是ADSL貓有問題了。
圖17