2012年4月3日 星期二

早期警報防範駭客攻擊 運用iplog偵測惡意掃描


早期警報防範駭客攻擊 運用iplog偵測惡意掃描

駭客攻擊之前必定會利用掃描的方式來尋找目標的弱點,若能制敵先機,在對方開始掃描時即事先得知,就可以立即做好防範,讓對方無法得逞,這種防範未然機制,可透過即時偵測掃描動作的軟體來建構,例如本文所介紹的iplog,就能發揮極大的預警效果。

隨著網路的普及,相關的攻擊事件也有日漸增多的趨勢。而駭客在攻擊之前,通常會經過下列的步驟:先確定攻擊目標,再確認目標主機的作業系統,接著確認目標主機所開啟的服務,最後以相關的攻擊程式進行攻擊。

在攻擊之前,駭客必定利用多種掃描工具對目標主機進行掃描,來確認目標主機的相關資訊,例如作業系統、開啟的服務等等。

偵測主機作業系統掃描 

如果能夠在駭客攻擊前的掃描階段就偵測出掃描動作,即可防患於未然,因此一套能即時偵測掃描動作的工具,對於防護駭客攻擊會有極大的幫助。

為此,本文將介紹一套可即時偵測掃描動作的軟體iplog,其官方網站為「http://ojnk.sourceforge.net/」。

在駭客選擇完攻擊目標之後,接下來的步驟往往是先行探測目標主機的作業系統,以便針對該作業系統的漏洞進行攻擊,而區別作業系統的原理即在於,利用每一家作業系統對於封包的處理方式均不同的特性,來辨識出不同的作業系統。

由於此種方式就像辨認人類的指紋一樣,所以又稱為「作業系統指紋(OS Fingerprint)」辨識,而作業系統探測方式可分為「被動式指紋辨識(Passive fingerprinting)」及「主動式指紋辨識(Active fingerprinting)」,以下將概要說明。

被動式指紋辨識 
探測軟體並不主動傳送封包至目標主機上,而是利用監聽技術(Sniffer)被動地監看往來封包,並藉由往來封包的特徵來辨識出作業系統,此種探測軟體以P0f為代表,其官方網址為「http://lcamtuf.coredump.cx/p0f.shtml」。

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

由於大部分的探測軟體均是使用「主動式指紋辨識」的方式偵測,因此本文並不討論「被動式指紋辨識」的原理,請讀者自行參閱其他文件。接下來,繼續說明主動式作業系統的辨識原理。

主動式作業系統的辨識依偵測原理來區分,可區分為以下幾種偵測方式:

FIN封包偵測
掃描軟體利用送出一個FIN封包至目標主機上,在正常的TCP/IP規範(RFC793)中對於此類封包是不予理會,但在某些的作業系統上,如Windows系統、Cisco等等作業系統,則會回應一個Reset(RST)封包。掃描軟體即可利用此種特徵來辨識出作業系統的種類。

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

ICMP錯誤訊息抑制(Error Message Quenching) 
ICMP(Internet Control Message Protocol)主要應用在TCP/IP網路中發送控制消息,並提供可能發生在通訊環境中的各種問題反饋,透過這些訊息,管理者可以對所發生的問題做出診斷,然後採取適當的措施解決。

而此種特性也可應用在識別作業系統上。掃描軟體針對目標主機發送一連串ICMP封包,並統計出一段時間內ICMP unreachable封包的個數,將其與作業系統的預設值進行比較,即可辨認出作業系統的類型與版本。

以上是常用的作業系統偵測原理。在確定目標主機的作業系統後,接著駭客即須進行通訊埠掃描,以確認目標主機有那些服務正在運作。接著,說明通訊埠的掃描原理。

通訊埠掃描原理 

在確定主機的作業系統後,接下來的步驟是確認該主機上運作的服務資訊,以便擬定攻擊策略。通訊埠的偵測主要是利用目標主機對於探測封包的回應情況,來判別目標主機的通訊埠(Port)是否為開啟的情況。所使用的探測技術,如下所述:

全連接技術
全連接技術為正常連接的探測方式,利用與目標主機完成三向交握(Three Handshake)的方式來確認被探測主機的通訊埠是否處於開啟的狀態。三向交握原理如下頁圖1所示。

▲圖1 三向交握運作原理。


從圖1中可以得知,來源端欲與目的端完成連線,會經由下列步驟來完成連線:

1. 來源端主機送出SYN封包至目的端主機來要求連線。
2. 目的端主機收到SYN封包要求後,會回覆SYN+ACK封包給來源端主機。
3. 來源端主機收到目的端主機回覆的SYN+ACK封包後,即會回覆ACK封包至目的端主機,至此完成三向交握流程,雙方建立連線。接下來才進行真正的資料傳輸。

一旦掃描軟體與目標主機順利完成三向交握,並與目標主機完成連線,就代表該通訊埠處於開啟的狀態;反之,該通訊埠則處於關閉的狀態。此種掃描方式即稱為全連接掃描。

全連接掃描由於已完成正常的連線,所以此種掃描方式會被防火牆或入侵偵測系統(IDS)所記錄,而無法完成匿蹤的要求,也因此發展出半連接偵測技術。

半連接偵測技術即使沒有完成三向交握的步驟,也可判別出該通訊埠是否處於開啟的狀態。以下介紹半連接偵測技術的運作原理。

半連接偵測技術 
由於使用全連接方式的掃描,而且已完成正常的三向交握連線,所以很容易被防火牆或入侵偵測系統所記錄,所以一般的通訊埠掃描技術大都不會與目標主機完成正常的連線以避免被記錄,此種的偵測技術稱為半連接偵測技術,以下介紹幾種常用的半連接偵測技術。

SYN封包掃描
在上述的三向交握機制中,當傳送端主機要傳送資訊至接收端主機時,會先發出SYN封包到接收端主機,一旦接收端主機接收到後,會回覆SYN/ACK封包給傳送端主機,而後傳送端主機將再回覆ACK封包至接收端主機,至此連線階段建立,方可開始傳送資訊。

SYN封包掃描即是在發出SYN封包至對方主機之後,如果對方主機有正常的回應SYN/ACK封包,即表示埠是開啟的情況,並立即發出RST封包,切斷該次連線;反之,則表示該通訊埠是處於關閉的情況。

由於並未完整地完成三向交握連線,所以防火牆或入侵偵測系統並不會記錄該次的連線。

SYN/ACK封包掃描技術
SYN/ACK掃描是利用繞過三向交握機制中第一步的SYN封包傳送,而直接利用傳送SYN/ACK封包至目的主機上的埠口。

由於TCP協定具有連接性的性質,當目的埠口接收到此封包後,若其處於開啟的狀態,即會知道此封包並不是合法的封包(因為沒有相對應SYN封包),而直接丟棄(Drop)。

但如果目的通訊埠是關閉的狀態,則會回傳RST封包(直接重置該連線),SYN/ACK掃描即可利用此種特性來確認該通訊埠是否為開啟的狀態。

FIN封包掃描技術 
FIN掃描是利用繞過三向交握第一步的SYN封包傳送,而直接利用傳送FIN封包至目的主機上的通訊埠,當目的通訊埠接收到此封包後,如果它是開啟(Open)的狀態,就知道此封包並不是合法的封包(因為沒有相對應SYN封包),而直接丟棄。

但如果目的通訊埠是關閉的狀態,則會回傳RST封包(重置該連線),FIN掃描即可利用此種特性來確認通訊埠是否在開啟的狀態。

當駭客經由掃描目標主機得到作業系統和通訊埠的相關資訊後,即會再利用相關的攻擊程式進行攻擊,因此若能在駭客攻擊的掃描階段時,就偵測出不法的掃描意圖,即可在駭客攻擊之前提早因應,防患於未然,此部分即可由iplog程式來完成。

安裝iplog 

先至iplog網站中取得最新版本(筆者所取得的版本為2.2.3)。解壓縮後,執行下列指令編譯:


筆者編譯程式時,在iplog_options.c程式中的443行曾經出現語法錯誤的問題。這是因為有些C編譯器不支援print_help(void)函式的寫法(筆者所使用的C編譯器版本為4.1.1)。

由於print_help(void)函式僅是用於顯示幫助(Help)資訊,無實際功能,所以讀者可將該函式內的相關程式碼刪除,僅留下exit()函式即可。

更改後的函式內容如下所示:


更改完成後,再重新進行編譯即可。iplog的組態檔位置資訊是直接寫在原始碼中,預設為「/etc/iplog.conf」。

讀者若想更改組態檔預設的位置,可以直接更改iplog.h檔案中的#define CONFFILE "/etc/iplog.conf",將預設組態檔的位置改為自訂的檔案位置,再重新進行編譯即可。


編譯完成之後,即可開始設定iplog組態檔(iplog.conf)的內容。iplog.conf組態檔的相關選項說明如表1所示。

表1 iplog組態選項說明



在了解相關的組態選項意義後,接著設定相關的組態檔。以下為組態檔實際設定內容:


設定完成後,即可以啟動iplog。iplog會以常駐程式的形式常駐在系統,以便偵測相關的埠掃描事件。安裝完成後,可利用開源碼社群中最有名的掃描軟體Nmap進行測試,表2為Nmap常用掃描參數,其餘更進階的參數請讀者自行參考其他相關的文件說明。

表2 Nmap常用掃描參數說明 


在此僅以FIN掃描來測試,利用「nmap -sF xxx.xxx.xxx.xxx」來掃描目標主機。如果在目標主機下的「/var/log/message」中發現以下圖例中的字樣,即表示iplog已經安裝成功。


▲iplog已安裝成功。

其餘的各種掃描測試,就由讀者自行測試。至此,一個具有偵測惡意掃描的系統即告完成。

轉載自《網管人




沒有留言:

張貼留言