【分享】認識核心層級主機防護



贊助商連結


kaspersky
2007-01-22, 01:26 PM
近年來,保全電腦網路的方法出現了典範的轉移。一直以來,安全性的焦點都圍繞在防護網路周邊、以阻止惡意軟體活動。但由於現代網路動態的本質,使企業面臨各種程度的危險。其中有許多原因,包括:內部的惡意機器、網路通道(VPN、LAN 橋接器等)、用戶端應用程式弱點,以及整體網路不安全的設計。惡意程式碼(蠕蟲、病毒等)和攻擊者利用這些弱點取得周邊後方的網路存取權。為了對抗威脅,有些企業便實行主機(或末端)層級的安全性技術。

對於企業所要保護的數位資產,盡可能在其最近之處實行安全性,可提高其風險態勢。執行主機層級的安全性時,將大幅減少攻擊面(即受危害影響的情形)。攻擊面的減少以及等量的安全性增強,需依所執行的主機式安全性解決方案類型而定。其中一種主機式安全性類型,常稱之為行為式(以行為為主的)核心防護。它會「學習」應用程式的行為、並封鎖「行為設定檔」以外的行動,來發揮效用。對於這種全面保護系統以抵禦惡意行為的能力,在以行為為主的系統中,激發了外界相當大的興趣,但同時卻也導致大眾對其真實能力的誤解。欲確認主機式行為系統保護網路的可能效果和相對價值,我們務必要了解其優點和限制。

深入實質

為了深入了解行為式系統,我們必須先對作業系統的運作方式有基本的概念。作業系統的精髓,即其核心(kernel)。核心就是系統的心臟。它將決定某系統如何能作出反應,以及應用程式可以和不可以採取哪些行動。所有的應用程式功能,最後將由核心來處理。因此在執行較過去多數作業系統更為完整的安全性方面,核心為居重要位置。

經核心傳送應用程式時,在應用程式所利用的應用程式介面(API)上,核心攔截系統可執行分析和篩選。API 是應用程式用來要求作業系統工作的工具,如存取檔案和複製資料等工作。目前許多安全性弱點,都是由於應用程式不當使用 API,以及作業系統 API 經常使本身發生錯誤所導致。

為保護應用程式不受弱點攻擊,主機式行為系統將執行核心攔截驅動程式,以監控 API 應用程式的呼叫,以及經那些 API 通過的特定資料。這是多數主機式行為安全系統的基礎。

靜態行為防護

若分析大部分對現代網路系統的攻擊,我們將發現近 90% 已知弱點都有共同的特性。這些攻擊類別的一些常見名詞包括;緩衝區溢位、格式字串攻擊、目錄周遊攻擊,以及剖析器邏輯錯誤。這些攻擊類型可能經各種方式(如透過網路伺服器、檔案共用或電子郵件用戶端)進入系統,但有時會將攻擊注入作業系統核心以進行處理。在作業系統核心有機會處理這些要求前,攔截核心的驅動程式將攔截要求並加以分析,找出可能的惡意程式活動。這些經掃描的活動,一般都是上述列出攻擊類別的特性內容。若行為系統偵測到符合任一攻擊類別的應用程式行為,就會封鎖該行為,使攻擊受挫。這種行為封鎖含許多優點,一般也可保護系統抵禦多數的攻擊。

『學習模式』的行為防護

多數以主機為主、行為類型的防護系統,還有另一項常見特色,即能學習系統應用程式如何正常運作;若應用程式嘗試執行將會識別為反常的異常行動,防護系統便能防止這種異常行為。因此主機式行為類型的防護系統能保護系統,不致遭受零時差弱點攻擊(尚未建立修補程式的弱點)。為達此安全層級,企業必須投注資源,以正確設定學習模式的行為式系統。

學習模式系統需投資大量人力和資源,才能在大型網路中正確設定、並持續維持這種解決方案。然而不幸,學習模式的系統事實上,是名不符實的。因為防護軟體並沒有真正學習應用程式運作的行為;而通常是由工作繁重的網路管理員費時細心地教導。

部署學習模式系統的基本方法,就是先在網路上部署,其中系統只記錄可疑的攻擊資訊,以建立一正確的基準線。許多主機式行為系統的廠商建議,讓解決方案用「學習模式」(或只加以記錄)執行數日。之後,對於系統中應用程式的一般操作,系統應建立了記錄/事件資訊的基準線。這時,多數主機式行為系統最好能瀏覽所有事件,並將可接受的事件標記為有效。

這就是系統管理員教導「學習」系統的方法基礎,讓它們學會應用程式應該和不應該會執行的行動。一般使用者更需要大量參與此過程。

此方法也引發令人關注的問題。即便在較小的網路中,所產生事件的數量都可能高達上千乃至上萬。這將使網路管理員工作量過多,因為他們必須以極類似執行網路入侵偵測系統的時間密集和龐雜的本質,來過濾每個事件並決定有效和無效的事件。若預期網路管理員驗證各種行為,如允許哪個處理程序存取哪些註冊機碼、檔案或 API 等,不僅使安全性面臨風險,更浪費其他攸關企業的工作和優先順序的寶貴 IT 時間。

即便是博學多聞的安全性專業人員,也不可能知道公司中每個應用程式的每個行為面。因此企業認為,管理員必須學會行為系統可能允許攻擊者取得存取權的異常情形。但不幸,對於這項複雜的問題,多數主機式行為解決方案都沒有權宜之計。

而此問題的暫時解決辦法,就是設計含一組預設應用程式設定檔的主機式行為產品。例如解決方案安裝於 SQL 資料庫伺服器時,選擇 SQL 資料庫伺服器設定檔後,系統應根據經廠商測試和核准的指導方針,來自行設定 SQL 伺服器應如何操作。但此辦法的問題在於,多數企業伺服器和工作站都和實驗式環境中不同,且這些行為系統仍需識別許多協力廠商軟體和自訂軟體、並加入原則。

或者我們也可檢查,將標準的 Windows XP Professional 設定檔部署於網路中時會發生什麼情況。若整個 Windows XP 系統確實是預設的 Windows XP Professional 系統、且不含任何協力廠商軟體,預先設定的行為範本就應該沒問題。但在現實中,通常 Windows XP Professional 系統將有防毒代理程式、修補管理解決方案、企業代理程式(Tivoli、Unicenter、SMS)和其他許多非標準的服務。因此將行為系統的 Windows XP Professional 設定檔範本送至所有相關的工作站時,起初這些範本可能正常運作。但例如,在整個網路上發送修補程式時,其矯正嘗試將可能失敗,由於對使用的 Windows XP Professional 設定檔而言,這是為異常的行為,因此學習模式系統將封鎖這些行為;此時這些範本便無法正常運作。這時必須停用安全性解決方案防護、並返回學習模式,在它記錄修補管理解決方案所建立的事件時,觀察一陣子,再由管理員瀏覽各項事件,以決定對應用程式而言,哪些是正確的行為、哪些不是正確的行為。由此可見這是相當耗費工程的工作。

雖然對含上萬台主機的企業內部部署而言,這種行為式學習技術可能沒有太大意義,但對真正強大的關鍵伺服器來說,它可能是相當有益的安全性解決方案。欲使系統正確執行,資源仍是不可或缺的。此行為式安全性系統將提供更高的攻擊偵測層級,但卻不必然是有效的攻擊防護。

入侵防護的危險

靜態行為防護和學習模式行為防護,都還有多項缺點,這些缺點不一定在於攻擊的偵測,而是在於這些攻擊的防護。如要了解這些核心系統為何較適合用於偵測,而非防護,我們必須了解在從網路、到最終經主機式行為系統偵測到的過程中,攻擊所採取的路徑。

當攻擊最初試圖襲擊系統時,它將從攻擊者的電腦經網路連線(網際網路/內部網路)進入受害的電腦。然後將前往含弱點的應用程式、並深入核心;主機式行為系統的核心攔截驅動程式將在此處攔截攻擊。也就是說在偵測到攻擊前,攻擊就已進入電腦,並以某種方式感染了目標應用程式。這時系統中便開始執行攻擊者的程式碼。待此惡意攻擊程式碼開始執行後,行為式安全系統才開始提供防護。這就是根本上的問題。

首先,目前我們沒有非侵入的方法,能拒絕此不良行為發生。由於在系統中,該行為已經以程式碼的形式執行,因此阻止此不良程式碼的唯一方法,就是終止它的執行。一般可用三種方法,來終止惡意程式碼的執行:

1. 終止應用程式中特定的執行緒

終止關於應用程式和系統之穩定的執行緒時,其中有太多「未知數」。執行緒即存在處理程序(應用程式)中的一個程式碼,它可獨立於應用程式的其他部分,用系統執行並與系統互動。應用程式中可擁有多重執行緒。經常在執行緒之間會進行通訊,執行緒與其主機應用程式間也有相依性。當突然終止執行緒,這些相依性和通訊管道便可能中斷,導致程式損毀,或甚至將必須重新啟動整個系統。

2. 終止整個應用程式

當發生攻擊且核心防護系統終止應用程式時 – 以免應用程式受「危及」 – 這時重要企業處理程序便可能瀕臨失敗。例如,受感染的應用程式若為電子郵件伺服器,將可能終止該應用程式。由於將影響企業處理程序和使用者生產力,因此終止應用程式是重大的問題。許多主機式行為系統確實嘗試對此問題,執行暫時的解決辦法。其一即能在應用程式終止後,採取次要行動。常見的次要行動,就是重新啟動已終止的應用程式。因此當攻擊進入網路伺服器,導致主機式行為系統關閉網路伺服器時,它可自動重新啟動網路伺服器 – 因此能縮短企業處理程序和使用者生產力受影響的期間。如果人類是這些系統的唯一攻擊者,那麼這可能是可行的選擇。

若攻擊者嘗試闖入網路伺服器,攻擊失敗後他們將繼續以下一個系統為目標,這表示應用程式將只會短暫地停止工作。但另一種攻擊者類型將不會讓系統停機一次,而只會繼續前進:自我複製的蠕蟲。多數網路蠕蟲的設計,都將不斷隨機挑選機器來攻擊,以進行傳播。這將導致重要企業應用程式遭受一連串無止盡的攻擊,不斷終止應用程式、然後啟動。重複終止和啟動應用程式(有時是整個系統)將對企業的流程和持續營運,造成相當嚴重的潛在影響,對一般使用者的生產力也將產生負面影響。

3. 關閉並重新啟動整個工作站

有時主機式行為系統保護系統的唯一方法,就是將系統重新啟動。系統是否需重新啟動以受保護,一般視受感染的應用程式(處理程序)類型而定。受感染的應用程式若是重要的作業系統處理程序(如 Sasser 蠕蟲的情形),刪除應用程式將導致全面的系統不穩,因而產生不同性質的系統損毀當機。因此對於特定應用程式,主機式行為系統在應用程式終止時,將選擇重新啟動整個系統,而非允許當機。

很遺憾,上述三種解決方案都無法將系統維持在完全發揮功能的穩定狀態。

總結觀點

別忘了,主機式行為系統仍屬於相當新穎的技術,在市場上幾乎每個月都會出現新廠商。行為系統確實有不少優點,如執行核心攔截等。這些系統的學習能力,也還有更多改善的空間。用主機式行為系統來為應用程式提供一般性防護,當然是很好的想法,但不應將此系統視為完整的主機式安全性解決方案。對於防守而言,主機式行為解決方案是可能的「最後一道防線」,因為它們能保護系統抵禦零時差攻擊。但由於花費的大量時間、人力資源投入,以及這些系統的入侵本質,因此行為式系統較適合用於保全關鍵伺服器,而非企業內所有的主機資產。