2010年8月31日 星期二

psad:建構埠掃描的即時監測系統

http://www.netadmin.com.tw/article_content.asp?sn=1008040015
文.吳惠麟

相信每個網管人員在例行的Log資訊檢查中,經常會發現有些不速之客不斷地試著要登入系統(暴力攻 擊法),或者利用埠掃描(Port Scan)的工具掃描系統。埠掃描不但使網管人員不勝其擾,而且埠掃描往往是駭客想要入侵的前兆,因此建構一套能夠即時偵測埠掃描並以電子郵件通知管理者 的偵測系統,對網管人員來說將有莫大的助益。
本文將結合開源碼的相關資源,實作出一套「埠掃描偵測系統」,所需的相關套件如下表所示。

作業系統掃描原理

在駭客決定攻擊目標後,第一個步驟往往是先行探測目標主機的作業系統。由於每一家作業系統對封包的處理方式均不同,探測軟體即可利用此種特性來辨識出不同的作業系統。

由於此種方式就像人類的指紋一樣,所以又稱為「作業系統指紋(OS Fingerprint)」辨識,作業系統探測方式可分為主動式及被動式,如下所述:

主動式
探測軟體透過傳送特別打造的TCP、UPD或ICMP封包至被探測主機端,再根據被探測主機回傳的封包特徵,來辨識出該主機的作業系統。此種工具以Nmap為代表,其官方網址為「http://nmap.org/」。

被動式
探測軟體並不主動傳送封包至被探測主機上,而是被動地監看往來封包,藉由往來封包的特徵來辨識出作業系統,此種探測軟體以P0f為代表。官方網址為 「http://lcamtuf.coredump.cx/p0f.shtml」。囿於篇幅,本文不多加探討此種探測技術,有興趣的讀者自行參閱相關說 明。

接下來,說明主動式作業系統的辨識原理。

FIN封包探測或XMAS封包探測
掃描軟體送出一個FIN封包(或任何未設置ACK或SYN標記位元的資料包)至欲被探測的主機上,在正常的TCP/IP規範(RFC793)中,對於此類 封包不予理會,但在某些作業系統(如Windows系統、Cisco等)上,將會回應一個Reset(RST)封包。掃描軟體即可利用此種特徵來辨識出作 業系統。由於此種封包在封包表頭上的長相就像一顆聖誕樹一樣,所以又稱為XMAS(聖誕節)的封包探測。

Bogus(偽造)封包探測
掃描軟體在SYN封包的表頭上(Header)設置一個未定義的tcp旗標(Flag)值,正常的TCP/IP規範規定對於此類封包是不予理會的,但在某 些作業系統中當遇到此類封包(SYN+ Bogus)時,將會回應Reset封包來重置連線。掃描軟體即可利用此種特徵來辨識出作業系統。

以TCP Initial Windows探測
TCP Initial Windows(TCP初始化訊窗)是一種控制網路流量的機制。在傳送的過程中,如果已傳送了訊窗大小的封包,即表示須接收到對方的ack回應後,才能繼 續傳送,但在某些作業軟體上,訊窗的長度是固定的,所以掃描軟體可利用此種特徵來辨識出作業系統。

ICMP TOS(Type Of Service)判別
ICMP全名為Internet Control Message Protocol,中文叫「網際網路訊息控制協定」。ICMP基本上是一個錯誤偵測與回報的機制,通常是用來檢驗網路的連線狀態與連線的正確性。常用的ICMP類型說明如右上表所示。

ICMP封包除了可用來確認主機的狀態外,也可利用探測作業系統的種類,探測程式可利用ping程式送出一個icmp echo的請求至要探測的主機上,再由對方主機回應的echo reply封包中的TTL(Time To Live)的欄位值。不同作業系統對於TTL欄位值的設定都不一樣,用來初步判斷主機的作業系統。有興趣的讀者可利用ping指令來觀察Linux系統及 Windows系統回傳封包的TTL欄位:

執行指令「ping <受測主機>」來測試其回應值,即可發現兩種作業系統所回應封包中的TTL值明顯不同。掃描軟體即可利用此種特徵來初步區分作業系統的種類。下圖所示為Linux與Windows作業系統的測試畫面。

▲Windows系統測試畫面。

▲Linux系統測試畫面。

從圖中可以明顯看出不同的作業系統會設定不同的TTL值,探測軟體即可利用此種特性來初步判別作業系統的種類。

另外一種探測方式是利用管理者不當的設定系統組態而造成的作業系統資訊外洩。利用指令「telnet 」即可能獲知作業系統的資訊,如下圖即可得知該主機的作業系統。

另外,也可利用現成的工具來探測主機的作業系統,例如使用「nmap -O 」來偵測主機的作業系統,如下圖所示。

(更多精采文章詳見網管人第55期)