這種類型的攻擊赫赫有名,頻頻出現在CERT、SANS、CSI等國際網絡安全組織的最具威脅的攻擊類型名單內。據統計,通過緩沖區溢出進行的攻擊占所有系統攻擊總數的80%以上。這是壹種滲透到系統中的攻擊技術,其基本理是當來自某個程序的輸入數據超出程序緩沖區能夠處理的長度時會產生溢出,結果不受程序員的控制。當入侵者巧妙地安排代碼後,被攻擊的服務器還可能執行入侵者指定的程序代碼,從而導致攻擊者甚至可以獲得系統中超級用戶的權限。比如80年代的Morris蠕蟲事件導致了當時Internet上1/3的計算機癱瘓,這種入侵方式就是采用了UNIX的Finger服務的壹個緩存區溢出的漏洞;2001年的紅色代碼病毒在短短幾個小時內傳遍了全球,造成了數十億美元的損失,也是采用了Windows服務器平臺上的IIS服務的壹個緩存區溢出漏洞。2003年的SQL Slammer蠕蟲、2004年的震蕩波等同樣也是利用了這種漏洞。為什麽這種攻擊這麽多呢?主要原因在於(單不僅限於)目前廣泛用於系統編程的語言-- C語言本身的某些函數就存在著壹些漏洞,造成了這種漏洞的廣泛存在和難以徹底清查。
目前對這種攻擊方式的防範方式主要有以下幾種:第壹,對存在溢出漏洞的程序打補丁。這是最常見的防範方式,需要依靠程序的廠商提供相應的補丁程序才能生效。但是隨著網絡攻擊的頻度不斷加快,壹個漏洞從被發現到運用在大規模的攻擊中的時間大大縮短。往往程序廠商還沒有發布相應的補丁程序,攻擊就已經發生了。所以這種方式是非常被動的,無法防範新出現的漏洞入侵。第二,通過操作系統的設置使得緩沖區不可執行,從而阻止攻擊者植入攻擊代碼。這種方式的主要問題在於首先可能和現有的應用程序存在沖突,其次對溢出攻擊的防範不全面。因為有些攻擊不需要進行攻擊代碼的植入過程。第三,采用專用的防範溢出的編譯器對程序進行編譯檢查。這是壹個比較完整的保護措施,但是卻需要付出非常高昂的時間和費用的代價。
所有上述的辦法都無法在現實的業務系統中順利使用。主機入侵防禦系統則提供了另壹種切實可行、易於實施的防止堆棧溢出攻擊的方法。主機入侵防禦系統中具有壹種STOP (STack Overflow Protection,堆棧溢出保護)技術,可以阻止這種入侵,防止用戶或程序獲得超級用戶權限。
所有的緩沖區漏洞挖掘程序都基於以下壹個假設,即:程序在每次運行時有問題的參數壓入棧內的數據地址空間偏移量是壹定的(或者相差較小)。如果在程序運行時由操作系統定義並且分配壹個隨機化的偏移給該應用程序,那麽則專為此有缺陷的程序設計的溢出程序在溢出時就會返回壹個錯誤的ret地址,而不能跳轉到惡意構造的shellcode下。雖然大部分的緩沖區溢出程序也能提供可調整的offset變量,但由於每次有缺陷的程序運行時都將擁有壹個隨機化的偏移,因此通過上次不成功的溢出猜測所得到的地址空間和內容並不能來指導修正下次調整的offset。主機入侵防禦系統提供了STOP技術在不改變操作系統內核下同級工作,能幫助定義並且分配壹個隨機化的偏移量,在不修改的系統內核的情況動態實現上述功能。
通過這種防範措施,用戶不僅僅能夠對所有已知和未知推棧溢出類型的攻擊進行高強度防範,而且還不需要修改任何現有的操作系統和應用程序,保證原有系統的持續運行,保護了投資。 信息篡改破壞了信息的完整性,是入侵者攻擊目的的壹種。信息篡改主要有兩種形式:信息傳輸中的篡改和信息存儲時的篡改。信息傳輸中的篡改主要發生在在線的交易過程中對交易信息的篡改,將導致交易雙方的嚴重經濟損失;網絡設備控制信息的篡改,可能導致網絡工作異常、甚至導致信息傳輸途徑的更改以至於失密。這種攻擊行為的防範主要依靠信息交換雙方對信息的加密和數字簽名以及強驗證方式來實現。信息存儲時的篡改是最為常見的攻擊方式,往往表現在對關鍵業務服務器上數據的更改,導致業務無法正常運行;對壹些關鍵文件的篡改,比如針對網站主頁的篡改,會導致被攻擊者形象的損失和潛在的經濟損失。比如壹家在線交易單位如果網頁被篡改,其後果可能會導致大量客戶的流失,即使入侵行為沒有危及到關鍵的交易數據。另外壹種最具威脅的攻擊手段是對可執行程序的篡改。入侵者通過對系統原有的可執行文件的篡改能夠達到很多破壞目的。比如通過非法修改證券交易系統或者銀行業務系統的程序以獲取暴利;通過篡改某些關鍵應用程序導致系統無法正常運行。但是最常見的篡改目的是:通過篡改壹些管理員或者用戶經常使用的應用程序,使其在運行的時候除了執行正常的操作之外,同時運行壹個入侵者放置的木馬程序。這樣,對管理員或者用戶來說好像系統運行壹切正常,但是卻在不知不覺中運行了木馬程序,導致後門洞開。這種入侵的後果是非常嚴重的,將可能導致嚴重的信息泄密。
主機入侵防禦系統的解決方法就是從根本入手,大大細化了對資源的控制粒度。不管是UNIX還是Windows服務器操作系統,對文件和目錄的安全許可權限都是非常有限的。但是通過主機入侵防禦系統就能夠使文件和目錄的許可控制大大增強。如圖所示,許可類型除了讀、寫、執行外,還額外添加了刪除、重命名、模式更改、屬主更改、時間更新、ACL更改、創建、更改目錄等8項許可,為管理員提供了充分的授權空間,能夠按照最貼切的方式對各個賬戶進行資源的授權,防止授權過大造成的內部安全隱患。同時,同樣壹個賬戶采用不同的應用程序訪問資源也有可能獲得不同級別的訪問許可,這給某些行業的特殊需求提供了極大的便利。
有了文件許可的細化控制能夠極大地減少由於授權原因造成的信息篡改事件。但是為了徹底杜絕對關鍵信息的篡改,主機入侵防禦系統還提供了數字簽名的功能,能夠對普通文件、數據文件以及可執行文件特別是入侵者攻擊的首要目標--UNIX中的suid和sgid類型的程序進行完整性校驗。如果普通文件和數據文件發生了意外更改,主機入侵防禦系統將會報警;如果可執行文件發生了意外更改,主機入侵防禦系統將會自動拒絕這個可執行文件的執行,並且同時報警。這樣,即使非法入侵者對目標文件進行了篡改,其目的也很難得逞。當然,如果實現利用主機入侵防禦系統的文件保護功能對這些關鍵的文件進行了保護,入侵者是無法達到非法篡改的目的的。 特洛伊木馬(以下簡稱木馬),英文叫做Trojan horse,其名稱取自古希臘的特洛伊木馬攻城故事,相信大家都已經耳熟能詳了。正是這種古老的攻城方式卻成為了現在令人色變的網絡入侵方式。
首先,主機入侵防禦系統具有的程序訪問控制列表(PACL)功能使得同樣壹個用戶訪問同樣的資源的時候,如果采用不同的應用程序訪問,將會得到不同的權限。也就是說,對於壹些重要的資源,我們可以采用主機入侵防禦系統這種功能限定不同應用程序的訪問權限,只允許已知的合法的應用程序訪問這些資源。這樣,即使入侵者在被攻擊的服務器上運行了木馬程序,但是木馬程序需要竊取關鍵信息的時候必須要經過主機入侵防禦系統的安全驗證。由於PACL中沒有定義木馬程序的訪問權限,按照默認權限是不能夠訪問的,由此就起到了對木馬信息竊取的防範。
另外,計算機壹旦連結上了網絡就融入了壹個整體,需要對整體的安全性負責任。通過上文的分析我們已經發現,木馬不僅僅會竊取本地信息,更嚴重的是入侵者能夠通過本地計算機對網絡中的其它計算機發起入侵,如DDoS攻擊行為。美國G0vernment法律規定由於某臺計算機的安全問題直接導致的其它聯網計算機的入侵事件,這臺具有安全問題的計算機的所有人是需要負責任的。目前其它國家也正在陸續出臺相關的規定。所以,在網絡上僅僅采取明哲保身的自保策略是不夠的。為了避免被植入木馬的服務器成為入侵者的跳板和傀儡,主機入侵防禦系統還具備了網絡訪問控制的作用。網絡訪問控制規則不僅僅能夠定義哪些人能夠在什麽時間從哪裏訪問本機的哪些服務,而且更為重要的是,它還能夠定義從本機能夠發出什麽類型的網絡連接。這樣,凡是不符合規則的連結將不能夠從本機發出。舉例來說,在紅色代碼泛濫的時候,許多運行IIS服務的服務器感染病毒後會在網絡中進行大範圍的掃描,發現TCP 80端口開放的潛在受攻擊者。但是Web服務器的這種行為明顯地是非常異常的行為。所以通過在主機入侵防禦系統中定義外出連結的類型,能夠從根本上避免由木馬發起的外部攻擊行為,特別是避免成為DDoS攻擊的傀儡。 在很多關鍵業務環境中,肯定都會有幾種比較重要的服務在運行。比如壹個電子商務交易Web站點,服務器上的HTTP服務或者守護進程就是非常關鍵的。而在後臺的支撐環境中運行的數據庫服務器上,數據庫的守護進程就是這臺服務器的靈魂。同樣地,對於壹個剛剛興起的收費郵箱服務提供商來說,如果後臺郵件服務器上的SMTP服務忽然停頓,勢必會更加難以招徠用戶。所以,信息化的社會的基石就是在關鍵服務器上運行的種種服務。壹旦服務中止,上層的應用就會沒有了根基。而在操作系統中,這些關鍵服務是以後臺進程的方式存在。
目前,受到攻擊最多的服務就是HTTP、SMTP以及數據庫進程,當然也有其它的關鍵服務進程。入侵者對於這些進程的中止方式壹般有兩種:壹種是利用這些服務本身存在的某些漏洞進行入侵,而另外壹種則是首先獲得操作系統中能夠中止進程的權限,壹般是超級用戶的權限,然後再中止進程。
進程的安全性完全依賴於操作系統提供的安全級別。壹般來說,進行進程中止的防止主要是采用Watchdog的技術。所謂Watchdog就是看門狗的意思,其主要功能是對進程進行看護,防止進程的意外中止。如果由於某些意外因素,進程非正常中斷,Watchdog能夠在很短時間內快速重新啟動被看護的進程。
主機入侵防禦系統就具備了這種Watchdog的功能。事實上,主機入侵防禦系統本身提供的服務就是基於三個進程的。主機入侵防禦系統要對操作系統進行安全保護,需要首先進行自身的保護,防止自己進程的意外中止。在實際運行當中,這三個進程出了各自完成自己的職能外,還存在壹種互相看守的關系。就是進程壹是進程二的Watchdog,而進程二又是進程三的Watchdog,進程三則是進程壹的Watchdog。這樣,如果其中壹個進程意外中止了,總有壹個進程會將其重新啟動。即使在非常情況之下兩個進程同時意外中斷,剩下的壹個進程依然能夠將另壹個進程啟動,然後啟動最後壹個進程。所以,主機入侵防禦系統的這種安全機制是非常嚴密的,不僅僅用來保護自己,而且還能夠很好地應用於對關鍵服務進程的安全防護。 超級用戶的存在為管理者帶來了極大的方便,登錄壹次,就能夠完成所有的管理工作,執行所有的命令,進行所有的系統維護。但是,同時正是因為有了超級用戶無所不能的超級權限,也造成了很多的麻煩。
首先拋開入侵者的攻擊不談,僅僅管理員在執行正常的操作時,超級權限就帶來了不少的問題。壹旦使用超級用戶登錄,管理員在作各種操作的時候必須慎之又慎。系統中的很多動作是不可逆的,壹旦管理員因為人為失誤做出不當的操作,往往會造成不可挽回的損失。特別在關鍵的業務服務器系統上經常會出現這種類似的損失慘重的失誤,我們經常能夠在媒體上看到相關的壹些報道。據統計,管理員的人為失誤是對整個網絡系統最大的安全威脅之壹。實際上有壹些操作是遠遠不需要超級用戶的權限就能夠完成的,但是絕大多數的人還是會選擇采用超級用戶的賬戶進行登錄,究其原因,恐怕最根本的就是為了圖方便,從而釀成大錯。
其次,在操作系統中設置超級用戶有其不合理的壹面。壹般來說,管理員的職責是維護系統的正常運行,建立和維護各種賬戶,對資源的訪問權限進行分配等等,他們壹般不應該具有讀取甚至修改、刪除某些存放在服務器上的機密信息的權利。但是在現實中,具有超級用戶的權限者就能夠任意地對這些數據進行處理,即使經過加密的數據他們也能夠輕而易舉地破壞甚至刪除。這是不合乎正常的安全策略的,需要通過某種措施進行控制。
最後,在入侵者的世界裏,恐怕再沒有獲取壹個新的重要系統的超級用戶的身份更加美好的事情了。幾乎所有的攻擊手段的終極目標就是要獲得被攻擊系統的完全控制權,而這壹切基本上同於獲得系統的超級用戶的賬戶名稱和密碼。口令破解、堆棧溢出、網絡竊聽…等等,目的無不於此。壹旦獲得超級用戶的權限,入侵者不僅僅能夠完成上面所說的壹系列行為,而且還能夠任意地切換到其他人的身份,甚至不需要任何密碼驗證;能夠隨意地抹去對自己動作的壹切審計記錄,讓審計人員無據可查。當然,超級用戶的存在同樣也使網絡安全人員陷入了壹種尷尬的境地。不管采用的防火墻是如何的牢不可破、IDS是如何地明察秋毫、加密算法是如何的先進,只要入侵者獲得了超級用戶的權限,這壹切都形同虛設。
為了對於上述的種種情況,主機入侵防禦系統在操作系統的層次對超級用戶的特權進行了再分配,並且將所有的用戶都同等對待,使得系統中不再有超級用戶的概念存在。經過分權後,每壹個管理員自能夠在自己的職責範圍內工作,而不具備其它的特權。比如安全管理員能夠對資源進行許可的分配,但是不能夠隨意刪除日誌;安全審計員的職責就是分析日誌,發現所有用戶的可疑行為,但是卻不具備其它所有的系統權利。這樣就好像給壹個保險箱加了三把鎖壹樣,僅僅拿到壹把鑰匙是沒有辦法獲得保險箱裏面的東西的。為了用戶能夠按照自己的意願進行分權,主機入侵防禦系統還提供了權限分配(task delegation)的接口,以供更加細化的配置,讓普通的用戶具有某些超級用戶才能夠執行的權利。經過權力分配和細化後,可以大幅度避免管理員的人為誤操作,並且防止入侵者壹旦獲得壹個賬戶的所有權後就能夠橫行無阻的狀況發生。
為了更加細致準確地跟蹤系統上的活動,主機入侵防禦系統提供了根據原始登錄ID進行審計的功能。也就是說不論登錄者後來通過su切換到哪壹個登錄ID號,在日誌中始終以其原始的登錄ID進行活動的跟蹤和記錄,而且入侵者即使獲得了root的口令也無法對日誌進行破壞。另外,主機入侵防禦系統將ID的使用權限也作為壹種資源進行管理,也就是說如果壹個賬號需要su到另外壹個賬號,必須經過主機入侵防禦系統的授權,否則就不能成功。哪怕是root用戶想要su到其它賬戶也是如此。這樣就大大降低了通過切換 ID實現的假冒攻擊行為。
主機入侵防禦系統基於穩固的安全體系和全新的安全設計理念,具有穩固的運行特性和強大的安全性,為各種 UNIX平臺以及Windows服務器平臺提供了極大的安全保障,並且同大型機的安全機制兼容。該系統是對關鍵服務器資源進行重點保護的重要安全工具,正在越來越受到用戶的重視。
當然,主機入侵防禦系統提供的保護措施主要是集中在對服務器資源和行為的保護,不能替代所有的安全產品。防火墻、防病毒、網絡入侵檢測系統、VPN等都是對主機入侵防禦系統的有益補充。只有將關鍵服務器的保護和整體的網絡架構保護合理地結合在壹起,才能夠為我們的網絡空間提供最為完善的保障。針對當前的病毒、蠕蟲、入侵等種種威脅構成的混合型威脅,主機入侵防禦系統無疑會給我們的關鍵資源提供更加主動的防禦方式。