|
作者:林文偉
而且由於 NetFlow 資料來源是網路中的核心的元件-路由器,所以透過從路由器所蒐集到的 NetFlow 資訊可以協助掌握整體網路的情況,而且透過適當的分析 NetFlow 資訊,可以協助管理者在蠕蟲爆發或不正常網路行為的初期快速的偵測出網路的問題,接下來我們進一步介紹如何利用 NetFlow 中所包含的資訊來偵測異常的行為。
利用 TCP 的控制旗標過濾出可疑的 Flow
但對於一些大型網路,攻擊的相關 NetFlow 資訊可能會被其他正常的 NetFlow 資訊所稀釋,例如感染病毒的初期或是謹慎的駭客,可能會利用正常的流量來掩護其異常行為,所以我們在找出建立最多 session 或傳輸最大量的搜尋 NetFlow 資訊中尋異常流量時,可能無法發現真正異常的網路流量 NetFlow。另外,當我們遇到新的攻擊手法或是病毒時,可能無法在第一時間掌握其 Flow 特徵,也無法透過特徵比對的方式找出異常流量。為了更快速有效的偵測出異常的流量,我們試著對 TCP 的控制旗標進行分析,希望縮小需要進一步分析的 NetFlow 資料量,以及早發現異常流量。對蠕蟲而言,由於複製散佈的本質,所以主機在感染任何一種蠕蟲後,都會盡力的找尋可能的受害主機,來進行感染散佈,因此一般來說,蠕蟲會在很短的時間內盡全力探測可能的感染目標,而且大部分的蠕蟲都是透過 TCP 協定來傳輸散佈,所以我們可以從 TCP 的控制旗標中發現到一些蛛絲馬跡,做為我們縮小可疑名單的根據。
以正常的 TCP 連結建立過程而言,用戶端會先送出一個 SYN 封包給目的端主機,接著目的端主機會回應一個 SYN/ACK 封包,用戶端在接收到這樣的封包後,再送回給目的端主機 ACK 封包完成連結的建立,但由於蠕蟲通嘗試透過內建的名單或是隨機產生感染的目標,所以並不是每一次都能順利的建立連結建立,由於 NetFlow 會將每個 session中所有傳輸時的 TCP 控制旗標全部儲存在封包控制旗標 (TCP Flag) 這個欄位中,因此我們可以透過這個欄位中的資訊來協助我們推測特定主機連線的特性,若某個 Flow 正常的建立 TCP 連結後,其封包控制旗標 (TCP Flag) 欄位會記錄的包含 ACK、SYN、FIN 等控制旗標,但是如果蠕蟲進行感染的動作時,由於隨機選取的主機並不一定存在,或是即使存在但目標主機沒有開放蠕蟲所要感染的 TCP port,在這種情況下,NetFlow 資訊中由受感染主機對外連線所產生的 Flow 封包控制旗標(TCP Flag) 欄位會只存在 SYN 這個TCP 控制旗標,根據這種特性網路管理者可以先將其 NetFlow 資料中封包控制旗標 (TCP Flag)欄位只有存在 SYN 控制旗標的 Flow 資料過濾出來,透過這種方式我們可以把大部分正常的流量排除,這時候我們要從可疑的資料中找出真正異常流量的難度就會降低許多,能快速的找出問題,也可以避免運算資源無謂的浪費。
利用ICMP的訊息協助過濾出可疑的Flow
某些蠕蟲或網路攻擊也會利用 ICMP 來進行,例如 W32.Welchia、W32.Blaster 都會利用 ICMP 來掃瞄其他電腦,所以感染這類型蠕蟲的主機會對外送出大量的 ICMP 封包,也會伴隨大量的 ICMP port/host/network unreachable 回應訊息,我們可以從 NetFlow資料中過濾出有異常行為的主機,首先找出通訊協定 (protocol) 欄位值為 1 的 Flow,代表所使用的通訊協定為 ICMP,再根據目的主機之埠號 (destination TCP/UDP port)欄位值分析出所代表的 ICMP 訊息,例如目的主機之埠號 (destination TCP/UDP port)欄位值為 2048,轉化成八進位為 800,第一位代表位數字代表的是 ICMP 的類型,後兩碼為這個 ICMP 類型中的編碼,整體的意思是 ICMP echo 請求,但如果欄位值為 769,轉化為八進位則為 301,這個編碼代表得是 ICMP host unreachable,如果欄位值是 771
則代表 ICMP port unreachable,欄位值是 768 則代表 ICMP network unreachable,我們可以先找出所使用通訊協定為 ICMP 的 Flow,進一步過濾出其中目的主機所使用埠號為 768、769、771 的 Flow,再進一步分析找出可能的異常行為。透過這種方式從大量NetFlow 資料中過濾出可疑名單,再對名單內的 Flow 資料進行進一步的分析,這樣可以幫助網路管理者快速地在異常發生的初期找出問題所在。 |