Rootkit的基礎知識和防御方法 |
發布時間: 2012/7/4 14:12:47 |
好多人有一個誤解,他們認為rootkit是用作獲得系統root訪問權限的工具。實際上,rootkit是攻擊者用來隱藏自己的蹤跡和保留root訪問權限的工具。通常,攻擊者通過遠程攻擊獲得root訪問權限,或者首先密碼猜測或者密碼強制破譯的方式獲得系統的訪問權限。進入系統后,如果他還沒有獲得root權限,再通過某些安全漏洞獲得系統的root權限。接著,攻擊者會在侵入的主機中安裝rootkit,然后他將經常通過rootkit的后門檢查系統是否有其他的用戶登錄,如果只有自己,攻擊者就開始著手清理日志中的有關信息。通過rootkit的嗅探器獲得其它系統的用戶和密碼之后,攻擊者就會利用這些信息侵入其它的系統。 一 全面認識rootkit: Rootkit出現于二十世紀90年代初,在1994年2月的一篇安全咨詢報告中首先使用了rootkit這個名詞。這篇安全咨詢就是CERT-CC的CA-1994-01,題目是Ongoing Network Monitoring Attacks,最新的修訂時間是1997年9月19日。從出現至今,rootkit的技術發展非常迅速,應用越來越廣泛,檢測難度也越來越大。 rootkit介紹Rootkit是一種奇特的程序,它具有隱身功能:無論靜止時(作為文件存在),還是活動時,(作為進程存在),都不會被察覺。換句話說,這種程序可能一直存在于我們的計算機中,但我們卻渾然不知,這一功能正是許多人夢寐以求的——不論是計算機黑客,還是計算機取證人員。黑客可以在入侵后置入Rootkit,秘密地窺探敏感信息,或等待時機,伺機而動;取證人員也可以利用Rootkit實時監控嫌疑人員的不法行為,它不僅能搜集證據,還有利于及時采取行動。 二 了解Rootkit的攻擊原理: 要了解Rootkit的攻擊原理,就必須從系統原理說起,我們知道,操作系統是由內核(Kernel)和外殼(Shell)兩部分組成的,內核負責一切實際的工作,包括CPU任務調度、內存分配管理、設備管理、文件操作等,外殼是基于內核提供的交互功能而存在的界面,它負責指令傳遞和解釋。由于內核和外殼負責的任務不同,它們的處理環境也不同,因此處理器提供了多個不同的處理環境,把它們稱為運行級別(Ring),Ring讓程序指令能訪問的計算機資源依次逐級遞減,目的在于保護計算機遭受意外損害——內核運行于Ring 0級別,擁有最完全最底層的管理功能,而到了外殼部分,它只能擁有Ring 3級別,這個級別能操作的功能極少,幾乎所有指令都需要傳遞給內核來決定能否執行,一旦發現有可能對系統造成破壞的指令傳遞(例如超越指定范圍的內存讀寫),內核便返回一個“非法越權”標志,發送這個指令的程序就有可能被終止運行,這就是大部分常見的“非法操作”的由來,這樣做的目的是為了保護計算機免遭破壞,如果外殼和內核的運行級別一樣,用戶一個不經意的點擊都有可能破壞整個系統。 由于Ring的存在,除了由系統內核加載的程序以外,由外殼調用執行的一般程序都只能運行在Ring 3級別,也就是說,它們的操作指令全部依賴于內核授權的功能,一般的進程查看工具和殺毒軟件也不例外,由于這層機制的存在,我們能看到的進程其實是內核 “看到”并通過相關接口指令(還記得API嗎?)反饋到應用程序的,這樣就不可避免的存在一條數據通道,雖然在一般情況下它是難以被篡改的,但是不能避免意外的發生,Rootkit正是“制造”這種意外的程序。簡單的說,Rootkit實質是一種“越權執行”的應用程序,它設法讓自己達到和內核一樣的運行級別,甚至進入內核空間,這樣它就擁有了和內核一樣的訪問權限,因而可以對內核指令進行修改,最常見的是修改內核枚舉進程的API,讓它們返回的數據始終 “遺漏”Rootkit自身進程的信息,一般的進程工具自然就“看”不到Rootkit了。更高級的Rootkit還篡改更多API,這樣,用戶就看不到進程(進程API被攔截),看不到文件(文件讀寫API被攔截),看不到被打開的端口(網絡組件Sock API被攔截),更攔截不到相關的網絡數據包(網絡組件NDIS API被攔截)了,幸好網絡設備的數據指示不受內核控制,否則恐怕Rootkit要讓它也不會亮了才好!我們使用的系統是在內核功能支持下運作的,如果內核變得不可信任了,依賴它運行的程序還能信任嗎? 三 rootkit的未來發展趨勢: 未來的rootkit的發展趨勢是與惡意軟件越多地結合,或者說將自己隱藏于惡意軟件之中。這種隱藏技術的最嚴重后果便是rootkit不但能夠輕易的將僵尸隱藏于系統的“視線”之外,還可以避開檢測rootkit的最后一道防線-網絡檢測。而多數公司需要開放著80號端口,因為其雇員需要使用互聯網。一些惡意用戶使用這個通道傳輸數據。作為網管員應當知道,這個端口主要用作進入的而不是發出的通信,因為網管員應當依靠網關設備上的過濾器來掃描發出的HTTP數據通信。當然,這需要好好調教你的過濾器。惡意的通信還可以借助可接受的發出數據通信來傳輸。例如,它可依附于發出的DNS數據包上。因此,建議管理員密切監視三種通信,一是突發的通信,二是大文件通信,三是其它的異常通信。這三者可能表明有人正在遠程執行控制命令。 從傳統上講,檢測系統上的rootkit要比檢測隱藏于網絡通信中的rootkit困難得多,因為多數rootkit要比反病毒軟件有更高的特權。 不過,我們應當注意這樣一個有趣的事實:近來,Vmware公司用其新的VMsafe安全擴展增加了對反病毒的支持,這樣就可以在虛擬機監視程序的保護下運行反病毒產品,其特權更高。 四 rootkit的檢查和防御: 檢查:特定rootkit的檢測工具,如RootkitRevealer可以找到內核系統調用和直接磁盤檢查的差異,并可以據此檢測隱藏的文件、注冊表鍵值及其它屬性。例如,在Windows計算機上,可以查找任務管理器的進程列表與內部系統任務列表的差異。 不過,要注意,這些工具的運行級別仍低于rootkit。運行于用戶系統上的檢測程序需要動態分析計算機,看看計算機是否撒謊。但最佳的方法是從一個完全干凈的系統檢測當前系統;蛘哂昧硗庖粋原來完全相同的系統對當前系統進行對比,找出其差異。 防御:rootkit要求深度防御,最新的內核級rootkit,將多種類型的惡意代碼包裝在內,它可以跳轉到處理器,在BIOS檢測時,再跳轉到系統內核,在計算機被清除和恢復后也難于徹底根除。這種永久性rootkit已經成為最危險的rootkit,在兩星期以前的黑帽大會上有研究人員已經清楚地演示了這一點。還有一種所謂的游戲僵尸,這種程序尤其喜歡多處理器,它可以運行多個線程,又能平衡負載。其中有些僵尸可通過自動的僵尸程序竊取虛擬幣或虛擬貨物,然后換賣真實的金錢。rootkit可以從多個方面來利用固件的漏洞,如可借助于啟動加載程序、設備驅動程序、閃速固件更新等。 很顯然,只有使你的網絡非常安全讓攻擊者無隙可乘,才能是自己的網絡免受rootkit的影響。不過,恐怕沒有人能夠提供這個保證,但是在日常的網絡管理維護中保持一些良好的習慣,能夠在一定程度上減小由rootkit造成的損失,并及時發現rootkit的存在。不要在網絡上使用明文傳輸密碼,或者使用一次性密碼。這樣,即使你的系統已經被安裝了rootkit,攻擊者也無法通過網絡監聽,獲得更多用戶名和密碼,從而避免入侵的蔓延。 防止rootkit 進入您的系統是能夠使用的最佳辦法。為了實現這個目的,可以使用與防范所有攻擊計算機的惡意軟件一樣的深入防衛策略。深度防衛的要素包括:病毒掃描程序、定期更新軟件、在主機和網絡上安裝防火墻,以及強密碼策略等。 本文出自:億恩科技【www.endtimedelusion.com】 |