前言
第一部分,我們講述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建立連線,然後分析連線建立的過程(通常稱作三階段握手):
1: c --syn xxà s
2: c ?-syn yy/ack xx+1------- s
3: c ----ack yy+1--à s
1:c傳送乙個tcp包(syn 請求)給s,其中標記syn(同步序號)要開啟。syn請求指明了客戶端希望連線的伺服器端埠號和客戶端的isn(xx是乙個例子)。
2:伺服器端發回應答,包含自己的syn資訊isn(yy)和對c的syn應答,應答時返回下乙個希望得到的位元組序號(yy+1)。
3:c 對從s 來的syn進行應答,資料傳送開始。
一些實現細節
大部分tcp/ip實現遵循以下原則:
1:當乙個syn或者fin資料報到達乙個關閉的埠,tcp丟棄資料報同時傳送乙個rst資料報。
2:當乙個rst資料報到達乙個監聽埠,rst被丟棄。
3:當乙個rst資料報到達乙個關閉的埠,rst被丟棄。
4:當乙個包含ack的資料報到達乙個監聽埠時,資料報被丟棄,同時傳送乙個rst資料報。
5:當乙個syn位關閉的資料報到達乙個監聽埠時,資料報被丟棄。
6:當乙個syn資料報到達乙個監聽埠時,正常的三階段握手繼續,回答乙個syn ack資料報。
7:當乙個fin資料報到達乙個監聽埠時,資料報被丟棄。"fin行為"(關閉得埠返回rst,監聽埠丟棄包),在urg和psh標誌位置位時同樣要發生。所有的urg,psh和fin,或者沒有任何標記的tcp資料報都會引起"fin行為"。
二:全tcp連線和syn掃瞄器
全tcp連線
全tcp連線是長期以來tcp埠掃瞄的基礎。掃瞄主機嘗試(使用三次握手)與目的機指定埠建立建立正規的連線。連線由系統呼叫connect()開始。對於每乙個監聽埠,connect()會獲得成功,否則返回-1,表示埠不可訪問。由於通常情況下,這不需要什麼特權,所以幾乎所有的使用者(包括多使用者環境下)都可以通過connect來實現這個技術。
這種掃瞄方法很容易檢測出來(在日誌檔案中會有大量密集的連線和錯誤記錄)。courtney,gabriel和tcp wrapper監測程式通常用來進行監測。另外,tcp wrapper可以對連線請求進行控制,所以它可以用來阻止來自不明主機的全連線掃瞄。
tcp syn掃瞄
在這種技術中,掃瞄主機向目標主機的選擇埠傳送syn資料段。如果應答是rst,那麼說明埠是關閉的,按照設定就探聽其它埠;如果應答中包含syn和ack,說明目標埠處於監聽狀態。由於所有的掃瞄主機都需要知道這個資訊,傳送乙個rst給目標機從而停止建立連線。由於在syn掃瞄時,全連線尚未建立,所以這種技術通常被稱為半開啟掃瞄。syn掃瞄的優點在於即使日誌中對掃瞄有所記錄,但是嘗試進行連線的記錄也要比全掃瞄少得多。缺點是在大部分作業系統下,傳送主機需要構造適用於這種掃瞄的ip包,通常情況下,構造syn資料報需要超級使用者或者授權使用者訪問專門的系統呼叫。
埠掃瞄技術
目前主要的埠掃瞄技術有以下幾種 1 tcp connect scan tcp連線掃瞄 這種方法也稱之為 tcp全連線掃瞄 它是最簡單的一種掃瞄技術,所利用的是tcp協議的3次握手過程。它直接連到目標埠並完成乙個完整的3次握手過 程 syn syn ack和ack 作業系統提供的 connect 函式...
iSCSI儲存技術全攻略答疑
1 每秒最大i o 100,000 iops io多大?回答 儲存端的iops效能和主機端的io是不同的,iops是指儲存每秒可接受多少次主機發出的訪問,主機的一次io需要多次訪問儲存才可以完成。例如,主機寫入乙個最小的資料塊,也要經過 傳送寫入請求 寫入資料 收到寫入確認 等三個步驟,也就是3個儲...
埠掃瞄技術與分析(四)
埠掃瞄分析 三 乙個簡單的掃瞄程式 下面是乙個埠掃瞄器的源程式,功能相當的簡單,乙個典型的tcpconnect 掃瞄。沒有對返回的資料進行分析。include include include include include include int main intargc,char argv for...