Internet protocol - IP
IP是OSI model第三層,也就是網路層的協定,它不是連結模式,意謂著交易的狀況是沒有資訊的,被用來路由網路上的封包。除此之外,沒有任何方式可以得知封包是否有被正確的傳送到目的地。
檢查IP標頭,我們知道前12個bytes(也就是標頭最上面那三列)包含封包的各種資訊。接下來的8個bytes( 接下來兩列),就是來源和目的地的IP位址。隨便找個工具,攻擊者就可以修改那些位址,特別是「來源位址」。特別值得注意的是每一筆資料都是獨立的,因為ip的狀態無從得知。好好記住這一點,下面我們檢視TCP的時候用的到。
Transmission Control Protocol - TCP
我們可以把IP想成是第四層(傳輸層)的路由外包,包含Transmission Control Protocol (TCP)。和IP不一樣的是,TCP的設計是連結導向的。這表示我們要先有一個TCP區塊的連結-經由3-way hanshake(SYN-SYN/ACK-ACK)-更新另一個進程-經由序數和確認碼。這溝通確保資料的可靠性,因為接收方在封包交換之後會傳送OK給傳送方。
由上可知TCP和IP的標頭截然不同,我們很在意TCP封包的前12 bytes,裏面有port和序列資訊。就像IP資訊,TCP封包可以經由軟體產生。來源和目的地的port一般來說看是在跑什麼網路程式(例如HTTP走80這個port)。現在我們了解到序數和確認碼對偽裝來說是很重要的,這一個欄位的資料可以確認封包是不是需要重送,序數則是目前封包第一位元的數字,和資料流是相關的。相對的,確認碼則包含了下一個封包預期的序數。這關係可以保證兩邊有收到正確的封包。和IP不一樣的是,每一個筆的交易狀態都被嚴密的監視著。
Consequences of the TCP/IP Design
我們綜覽了TCP/IP的格式,現在檢視它的必然性。很明顯的,要掩飾來源相當簡單,只要改IP標頭就好了 。用這技巧的原因相當簡單,下面的攻擊方式也都是採用這方法。另一個後果就是序數是可以預測的,這導致入侵者劫取連線或主機模擬。這方法建立在IP偽裝,一個假的的建線被建立。我們會在下面討論採用這種攻擊方式的各個分枝流派。
Spoofing Attacks
成功的使用 IP 偽裝的攻擊有一些變化,儘管一些相對的較久,可是有的和現今安全性議題還是相關。
捍衛偽裝攻擊
這裡有一些方法可以降低 IP spoofing 對你網路的危險:
在路由器作過濾
在網路進出的路由器上過濾進出的封包是你防衛偽裝很好的開始,你將需要維護一個存取控制表(access control list, ACL)可以封鎖往內介面上的虛擬IP。此外這個介面不應該允許來源是你內部網域的IP範圍,這是常被用的欺騙手段以規避防火牆。在往外的介面你應該限定你可信任的範圍,以防止內部網路的人送出偽裝的流量到網路上。