https://newera17031.activehosted.com/index.php?action=social&chash=ba1b3eba322eab5d895aa3023fe78b9c.2767&nosocial=1
https://newera17031.activehosted.com/index.php?action=social&chash=ba1b3eba322eab5d895aa3023fe78b9c.2767&nosocial=1

觀點

試玉要燒三日滿辨材須待七年期(上)

2009 / 08 / 31
劉榮太
試玉要燒三日滿辨材須待七年期(上)
漫談新一代入侵防禦系統的評鑑標準。 
  
  從1994年Wheel Group所開發的NetRange 問世至今,網路入侵偵測/防禦系統(NIDS/NIPS,Network Intrusion Detection/Prevention System)的技術已經有十多年的歷史,其功能、可靠度、以及效能也已經大幅提升。雖然市面上的NIPS廠商都宣稱自己擁有最佳的防禦技術及最好的效能,但是一般的使用者並不容易親自驗證這些系統或是做出有效的比較。隨著入侵偵測市場的日益壯大,相關的獨立驗證單位也就應運而生,其中最著名的兩個單位就是NSS以及ICSA Labs了。

  驗證單位在測試過程中往往得執行上千項的測試程序,搭配數10萬美金的驗證設備,因此對消費者而言,閱讀驗證單位所發行的測試報告有助於了解及比較市面上入侵偵測產品的優劣。本文將說明驗證單位的檢測項目及其背後的意義,也會談到入侵偵測技術演進的過程,希望能對讀者了解相關技術或是產品能夠有所助益。

高超的防禦能力是IPS的根本

 不論是NSS或是ICSA Labs,檢驗一台IPS是從驗證特徵碼資料庫(Signature Database)的涵蓋程度開始。但是這項工作並不容易,而且做法也隨著技術的演進而有所改變。大致上有兩樣命題:合理的測試方法及列舉出具代表性的攻擊或弱點。 
 
  一般而言,驗證IPS是否能成功偵測並且阻擋某種攻擊程式是蠻費工夫的,最辛苦地在於架設受害者(Victim)環境以及攻擊程式(Exploits)的取得。舉個例子來說,要測試IPS能否保護CVE-2001-0797這個漏洞,tester就必須架設Solaris 5.6或5.8的版本,並且蒐集真實的exploits來攻擊。當測試的規模達到上千個攻擊程式或是系統弱點的時候,架設不同的作業系統及應用程式的確很耗費時間。因此IPS廠商多依賴VMWARE模擬器,如此一來便可重複利用此環境。但是依照我們的經驗,還是有些情形無法靠模擬器來完成,得要真正將OS架設在硬體上。可能會有讀者想到利用弱點掃描(Vulnerability Assessment Scanner)軟體測試,就不需要架設Victim。但是弱點掃描軟體不等同於攻擊程式,因為VA軟體只需要找出弱點(例如
確定IIS的版本)而不需要真的送出攻擊。因此IPS就算無法偵測出VA的意圖,也不能算是失職。事實上在NSS第4版的IPS 測試計畫中,就把這類偵測VA軟體的特徵碼稱作Audit,但偵測的成效並不算取得認證的必要條件。另外,Blade Software開發的IDS Informer是一套專門用來測試IDS/IPS的軟體,也號稱不用架設victim,這一、兩年新推出的類似軟體還有K a r a l o n出品的TrafficIQ Pro。但是不管是NSS或ICSA都不會直接使用IDS Informer和TrafficIQ Pro來驗證IPS,因為那是個雞生蛋、蛋生雞的問題,除非驗證單位還得想辦法先舉證這些程式所產生的攻擊真的有效果,否則又怎麼能相信他們的測試結果?但是因為這類產品的操作簡單,因此廣泛被一些網路雜誌的Test Lab拿來使用。

  NSS及ICSA又是如何進行特徵碼涵蓋程度的測試呢?他們還是得要把victim架好,然後使用蒐集到的exploits或是滲透工具(Penetration Tool)來攻擊,證實這些攻擊程式有用並把攻擊封包錄下來。像這樣一個一個蒐集,直到所有想要測試的攻擊都錄下來後,就可以不用victim而使用Tomahawk這種封包播送工具播放這些錄下來的封包以進行測試。這麼做的好處是能夠重複且快速的播放攻擊封包(而且證明是有效的攻擊),而且因為Tomahawk支援重送的機制,因此要是攻擊封包沒辦法順利播完,極有可能就是IPS順利攔阻了攻擊。相反地,要是封包能夠順利的播放,也就代表IPS讓這攻擊給溜過,此時就得使用真正的exploits去驗證了。只是這個方法也有一些盲點,因為目前的Penetration Tool往往會變造攻擊,以避免IPS使用簡單的特徵碼(signature)就能進行攔阻,也因此很難列舉所有攻擊的變形。另一方面它對於evasion technique的搭配也有問題。舉例來說,fragroute會送出TCP checksum錯誤的封包以混淆IDS/IPS的偵測,但是當使用Tomahawk播放帶有這種封包的攻擊時,tester無法分辨Tomahawk播送的中斷是由於I P S 成功的阻攔了攻擊或只是丟棄checksum錯誤的封包。因此要進行抗閃躲(anti evasion)的測試時,就不能使用Tomahawk了。

  2004年,NSS進行第二次的IPS Group Test,那時候open source的Metasploit Framework剛出v2.0,而市面上最專業的商用測試程式是IDS Informer。但NSS的tester主要還是使用自己蒐集的exploits來測試,只是利用IDS Informer來播放。到了2005下半年,Immunity Inc.的CANVAS以及Core Security的Core Impact也成為tester的好幫手。這些攻擊程式不像早期的IDS Informer送出固定的攻擊因而讓IPS廠商容易做出對應的signature,相反的他們會儘可能的更改每次的攻擊內容。比如緩衝區溢位(buffer overflow)攻擊,他們每每會使用不同的字串來進行overflow。因此對測試單位而言,多種的攻擊來源加上好用的封包播送工具讓攻擊阻擋的檢驗的價值更加提高。

  但是這麼多個攻擊來源(CANVAS、Metasploit、Core Impact,或其他來源),要怎麼挑選並知會IPS廠商呢?NSS的tester是自行挑選攻擊程式的。在第4次的IPS Group Test之前,大致上就是使用他自己挑選出來的攻擊程式,而且參賽的IPS設備一定要對這些攻擊有9成以上的阻擋率,沒得商量。有興趣的讀者可以到NSS的網站閱讀不用花錢的測試報告,可以看出來他在攻擊辨識(Attack Recognition)大約採用了一百多條的攻擊程式。而且NSS有兩階段的測試,第一階段是out-ofbox測試,也就是說測試IPS廠商平時出貨的版本。然後NSS會給廠商兩天的時間做修正,兩天後再測試一次,當成最後的得分。但是在測試報告裡面,兩階段的得分都會被列出來。第一階段必須有70%的防禦率,而第二階段必須有90%的防禦率才能過關。在第一次out-ofbox測試結束以後,NSS會給參加測試的廠商一份攻擊程式的清單,並且列出有哪些攻擊並沒有被阻攔。ICSA Labs就採用比較不一樣的做法。因為IPS廠商們已經是NIPD Consortium的成員了,因此對於測試所採用的漏洞是可以提出意見的。事實上在2005年中我們就收到ICSA Labs寄來一份五百多條的漏洞的清單,他請所有會員列出需要增刪(比如說太輕微不容易發生或是已經關在動物園裡的就拿掉,重要卻未列的就要增加)的部份,然後集思廣益得出一份大家都能接受的版本。

  此清單就不是針對攻擊了,而是針對漏洞。這個差別也反映了IPS的演化。以往IPS的signature大多是針對exploits,也就是用來防禦特定攻擊的。但是exploits的原始碼經常可在Internet中找到,也就是說,有心人士可以修改成自己要的exploits以防止IDS/IPS的偵測。要是不管入侵,只要達到阻斷服務(DoS, Denial of Service)的目的,那更不用管buffer overflow時內文要填什麼垃圾了。因此好的IPS要能夠知道buffer overflow的行為, 而非只是針對特定字串做阻擋。例如,CVE-2003-0727是Oracle 9i Database release 2的漏洞,當使用者在認證時,user欄只能輸入100個字元,超過了會引起DoS。IPS要能知道user欄位限制填入100 bytes的資料,不管他是AAAAAA? 或是 BBBBBBB?。因此IPS要支援更有彈性的signature格式(比如說Snort的byte_test、byte_jump、pcre等),或是需要第七層有應用程式解碼器(Application Decoder)來補單純字串比對的不足。用這一行的專業術語/?黑話來說,前一代針對攻擊程式的就稱為exploit-based signatures,而新一代的就是vulnerability-based signatures(儘管行銷人員會取個好聽名字像是數位疫苗、數位補丁等)。

減少誤判的發生 管理才會容易

  從IDS演變成IPS,一方面是因為市場需要更週全的保護,另一方面則是因為廠商對於誤判的發生已經有了比較好的控制。以往IDS最常被詬病的也是這兩點:常常不能及時阻擋攻擊,而且因為誤判很多因而管理不易。對某些網管人員來說,誤判有時比漏判還嚴重。比如說新竹科學園區的晶圓廠的設備機台和管理機器的溝通要是因為IPS誤判而中斷,損失可就無法估計。銀行業者也有相同的例子。因此在筆者參加的認證過程中,設備是否會產生誤判也是一定會測試的項目。ICSA Labs的母公司是Cybertrust,美國第一名的安全服務公司。ICSA Labs從Cybertrust服務的這些大客戶那邊可以得到一些珍貴的封包紀錄(Packet Trace),在過濾之後,ICSA Labs就得到很乾淨的Packet Trace。而參加認證的IPS不能夠阻擋這些乾淨的封包,否則就是誤判。NSS在第4次IPS Group Test以前, 都是用特別的封包去引誘IPS誤判。雖然覆蓋率不夠,倒是容易找出一般容易誤判的項目。這些特別的設計主要是針對 FTP、HTTP、SMTP、及POP3等一般較常使用的服務。例如,有些IPS為了要檢查buffer overflow的攻擊會特別制定一條signature偵測NOP sled(註:NOP sled就是一串幾十個以上的NOP command,用來複寫EIP,因此program counter就會順著NOP sled而執行到shell code。以X86平台來說,就是0x909090?)。因此NSS就測試一個從HTTP server上面下載一個GIF檔案的動作,而這個GIF圖檔裡面恰巧就包含了一連串的0x90。IPS應該要能區分這個字串只是圖檔的一部分,而不是NOP Sled。其精神就在於,他希望IPS是能真的能從網路封包中分辨出使用者的行為,而不是執行簡單的字串比對而已。

  但是所謂誤判的多寡其實是難以使用科學化的方法去估量的。網路的環境變異性實在太大,校園網路和企業網路的內容就差異很多,而不同的企業會使用不同的ERP或其他的服務程式,因此在實驗室裡面實在是難以列舉。而且,一般的IPS會依照RFC(Request ForComments)標準去實做,但是用戶端的程式真的會依照標準嗎?當一個IPS阻擋了一個不依標準實做的善良應用程式,依我們的經驗,網管人員還是會認為那是一種誤擋。Linux的UDP Path MTU Discovery就是最有名的問題之一。RFC 791規定了IP表頭裡面的DF和MF不能同時設為1,但是Linux 的 NFS Client就是藉著把DF和MF同時設為1去找出PMTU。Linux還算是大家常會遇到的作業系統,至於一些私人企業委託某某公司開發出來的不知名程式要是不遵照RFC標準,IPS也無從得知。

  因此要是使用者想要知道一個IPS會不會造成誤擋,我想唯有在自家的網路環境測試才是最準確的。而且要是發現了內部網路有機器不按照RFC標準而觸發了某條signature,IPS是得把整條signature關掉或是有能力只針對這台機器忽略也是一個值得注意的功能。

  另外, 使用者也可以觀察一個I P S 預設開啟的signature有多少條。雖然目前各個廠商的signature database大小都已經超過兩千條,但是根據Gartner今年的報導,絕大部分的使用者都使用廠商的預設值,BroadWeb之前的預設值是全開,但是其他的廠商的預設值都大多只有數百條。這也是一個值得參考的數字。

背景說明

  NSS(http://www.nss.co.uk)是一家註冊在英國的公司,其測試基地在法南古城Montpellier旁的一個小村落。從IDS時代,NSS就是此項技術最佳的驗證單位,同期還有Neohapsis以及ICSA。但是以驗證的細緻度和驗證方法的更新頻率來說,當時還是以NSS為最佳。2003年Gartner發表了「IDS將死」的報導,IDS廠商也都推出了IPS以因應市場所需,NSS成為唯一具有公信力的IPS認證單位。

  ICSA Labs是Cybertrust的子公司,長期以來一直在Firewall、VPN、以及Anti-Virus等系統的認證上面享有極佳的聲譽,因此在NIPS領域也急起直追。ICSA Labs(
http://www.icsalabs.com/icsa/)在2005年3月成立了N e two r k I P S P r o d u c t D e v e l o p e r s ( N I P D )Consortium,會員至今有17家廠商,包括BroadWeb、Cisco、Checkpoint、ISS、McAfee、TippingPoint等。其目的就是讓這些廠商協同ICSA Labs一同制定出一套驗證Network IPS的測試準則(Testing Criteria),而能完全通過這套測試準則的廠商就能得 ICSA Labs的Network IPSCertificate。


更精彩內容請見下期:變造的攻擊也要能準確的阻擋、防禦分散式阻斷攻擊要能明辨忠奸、效能是inline設備必要的課題