第一部分,我們講述TCP連接的建立過程(通常稱作三階段握手),然后討論與掃描程序有關的一些實現細節。
然后,簡單介紹一下經典的掃描器(全連接)以及所謂的SYN(半連接)掃描器。
第三部分主要討論間接掃描和秘密掃描,還有隱藏攻擊源的技術。
秘密掃描基于FIN段的使用。在大多數實現中,關閉的端口對一個FIN 段返回一個RST,但是打開的端口通常丟棄這個段,不作任何回答。間接掃描,就像它的名字,是用一個欺騙主機來幫助實施,這臺主機通常不是自愿的。
第四部分介紹了一種與應用協議有關掃描。這些掃描器通常利用協議實現中的一些缺陷或者錯誤。認證掃描(ident scanning)也被成為代理掃描(proxy scanning)。
最后一部分,介紹了另外一些掃描技術??紤]了一些不是基于TCP端口和主要用來進行安全掃描的掃描工具(例如SATAN)。另外分析了使用掃描器的棧指紋。棧指紋通過檢測主機TCP并將應答跟已知操作系統TCP/IP協議棧應答相比較,解決了識別操作系統的問題。
一:TCP/IP相關問題
連接端及標記
IP地址和端口被稱作套接字,它代表一個TCP連接的一個連接端。為了獲得TCP服務,必須在發送機的一個端口上和接收機的一個端口上建立連接。TCP連接用兩個連接端來區別,也就是(連接端1,連接端2)。連接端互相發送數據包。
一個TCP數據包包括一個TCP頭,后面是選項和數據。一個TCP頭包含6個標志位。它們的意義分別為:
SYN: 標志位用來建立連接,讓連接雙方同步序列號。如果SYN=1而ACK=0,則表示該數據包為連接請求,如果SYN=1而ACK=1則表示接受連接。
FIN: 表示發送端已經沒有數據要求傳輸了,希望釋放連接。
RST: 用來復位一個連接。RST標志置位的數據包稱為復位包。一般情況下,如果TCP收到的一個分段明顯不是屬于該主機上的任何一個連接,則向遠端發送一個復位包。
URG: 為緊急數據標志。如果它為1,表示本數據包中包含緊急數據。此時緊急數據指針有效。
ACK: 為確認標志位。如果為1,表示包中的確認號時有效的。否則,包中的確認號無效。
PSH: 如果置位,接收端應盡快把數據傳送給應用層。
TCP連接的建立
TCP是一個面向連接的可靠傳輸協議。面向連接表示兩個應用端在利用TCP傳送數據前必須先建立TCP連接。 TCP的可靠性通過校驗和,定時器,數據序號和應答來提供。通過給每個發送的字節分配一個序號,接收端接收到數據后發送應答,TCP協議保證了數據的可靠傳輸。數據序號用來保證數據的順序,剔除重復的數據。在一個TCP會話中,有兩個數據流(每個連接端從另外一端接收數據,同時向對方發送數據),因此在建立連接時,必須要為每一個數據流分配ISN(初始序號)。為了了解實現過程,我們假設客戶端C希望跟服務器端S建立連接,然后分析連接建立的過程(通常稱作三階段握手):
新聞熱點
疑難解答