- 论坛徽章:
- 0
|
RootKit Hunter 後端偵測軟體之架設與執行(本文来自鸟哥linux私房菜)
切換解析度為 800x600
最近更新日期:2004/11/16
由前面幾個章節的說明,我們可以曉得因為主機的某些服務是有漏洞的, 黑客們可以針對這些服務的漏洞來撰寫惡意攻擊的程式,並據以取得該被攻擊主機的超級管理員 root 權限。 這些惡意攻擊程式後來被散佈在網際網路上面,因此,很多小朋友很容易就取得這些惡意程式, 並利用這些程式來攻擊不特定的眾多主機。這種入侵的程式我們可以稱之 Root Kit (Root 工具)。 萬一您的系統被 root kit 之類的程式所攻擊,由於這些程式通常會在您的系統留下一些後門或者是蠕蟲, 因此,我們可以透過分析系統來找出這類的程式,這樣才能進一步移除惡意程式, 讓您的主機保持乾乾淨淨啊!底下我們將介紹一套自由軟體 RootKit Hunter , 這套軟體可以分析您主機上的可能被惡意程式所攻擊的檔案,讓您可以檢查主機是否被入侵喔!
前言
:什麼是 Root Kit
:如何防止 rootkit 的攻擊
:Rootkit Hunter 能作什麼
:rkhunter 例外的錯誤狀態
安裝 rkhunter
檢測系統
系統修訂
--------------------------------------------------------------------------------
前言:
我們知道,要取得一部主機的所有權限,那就是需要取得該部主機的超級管理員 root 的權限! 所以一般黑客都會想盡辦法去取得 root 的權限的。那麼該如何取得 root 的權限呢? 最簡單的方法就是利用網路上流傳的 Root Kit 工具程式來進行入侵的動作了。
由於 Root Kit 工具的取得相當的容易,因此難保我們一般使用者的主機不會被低級的怪客所干擾, 所以我們當然要想辦法保護我們自己的主機啦!為了要偵測主機是否已經被 Root Kit 之類的程式所攻擊, 由自由軟體撰寫團體所開發的 Root Kit Hunter, rkhunter 這個套件,就能夠幫我們偵測囉! 所以,底下我們就來談一談這個咚咚。
--------------------------------------------------------------------------------
什麼是 Root Kit
要取得一部主機的控制權,有相當多的方法!最簡單的當然就是以登入程式(如 login, ssh, telnet 等等) 加上猜測密碼的程式來嘗試進行登入的行為。不過,由於登入程式大部分都有登入次數的限制, 因此使用密碼猜測程式就不這麼流行了。
高級的駭客為了系統網路的安全,會撰寫一些程式去測試自己主機的服務漏洞, 並且在發現了某些服務的漏洞之後,會通報該服務的維護團體,或者是貢獻自己的修補方式, 以補足自己系統的安全性。而服務開發/維護團體在接到這樣的通報之後,會在最短的時間內進行程式修改, 並且在網際網路上面進行通報與釋出該漏洞的修補程式。
然而在這個漏洞通報出來之後,與修補程式釋出之前的空窗期,某些惡意的 cracker 就會針對這樣的漏洞進行攻擊, 這些 cracker 同樣是撰寫程式來攻擊該漏洞,同時取得被攻擊主機的控制權,或者是植入木馬程式在受攻擊的主機上。 這些 cracker 與高級駭客不同的地方,在於他們會很驕傲的將攻擊的成果貼在一些 cracker 常上的網站, 藉以推銷自己,同時,也會將他們撰寫的惡意程式散播到 Internet 上面。 有些有心人士就會將這些惡意程式收集起來,做成程式包,並使這些程式包更加流行於 Internet 上面, 這些惡意的程式包就被稱為 root kit 咯。
RootKit 能作的攻擊真是林林總總的說不完!最常見的就是直接以 rootkit 刺探被攻擊主機的服務漏洞, 如果被攻擊主機『剛好』有此漏洞,那麼該主機的控制權就可能會被 Cracker 所取得。另外, 若該主機被取得控制權之後,為方便 cracker 未來做為跳板之用,因此他可能會利用其他的 rootkit 將被攻擊主機的某些程式換掉,舉例來說,我們曉得觀察主機的一些資訊可以用 ps, ls, top, w 等等的程式,cracker 為了保障自己的入侵不會被真正的系統管理員得知,就會將這些程式換掉, 讓原本的系統管理員無法知道目前系統正在跑的程序裡面,是否有一些不明的程序存在。
--------------------------------------------------------------------------------
如何防止 rootkit 的攻擊
知道了這些 Rootkit 工具包之後,那麼我們如何杜絕 cracker 使用 rootkit 程式包來攻擊我們的主機呢? 由於 rootkit 主要是藉由主機的漏洞來攻擊的,因此, 您必須要確定『不必要的服務請務必關閉』, 此外『隨時更新主機上面各套件的修補程式』。 關閉不必要的服務應該很簡單,這裡鳥哥就不談了。至於更新套件的修補程式, 最好藉助於 apt 或者 yum 或者您的 Linux distribution 提供的線上更新方式來維護, 這樣對於系統管理員來說,會比較輕鬆。
這樣還不夠喔!因為 rootkit 也很可能會偽裝成 Internet 上面合法的軟體, 來吸引您安裝他。例如前幾年,著名的 OpenSSL 網站上所提供的套件竟然被發現已經被 cracker 置換掉~ 所以,在您安裝取得的套件之前,請先以 MD5 或者其他指紋資料進行檔案的比對, 以確定該檔案是沒有問題的。當然,最好還是不要安裝來路不明的套件較好。
而為了確認一下我們的主機是否被 rootkit 程式包所攻擊, 其實我們還可以透過其他的軟體工具來檢查主機的某些重要程式,例如前面提到的 ps, top 等等的。 這就是我們這篇文章要提到的 rootkit hunter 囉。
--------------------------------------------------------------------------------
Root Kit Hunter 能作什麼?
在官方的資料當中,RKHunter 可以作的事情包括:偵測 rootkit 程式、偵測後門程式、以及主機端的套件檢查問題。 rkhunter 所使用的偵測技術包括了底下幾種:
利用 MD5 指紋分析:
記得我們在 基礎學習篇 裡面有提到那個 MD5 的東西吧?簡單的來說,每個檔案都有自己的指紋資料,這個指紋資料是利用雜湊演算的方式來得到一組 MD5 編碼,當這個檔案被更動過,那怕是只改了一個字元,而整個檔案的容量大小不變, 他的 MD5 編碼還是會不同的。因此,若我們在系統安裝完畢之後,立即建立重要檔案的 MD5 資料庫, 然後再以分析工具定期去分析該重要檔案的 MD5 編碼,若有不同,則顯示該檔案被變動過, 此時自然就需要瞭解瞭解為何會被更動了。
利用這個特性, rkhunter 在釋出的時候,就已經收集了各大知名的 Linux distributions 的重要檔案的 MD5 編碼(例如 login, ls, ps, top, w 等等檔案), 並製作成資料庫,然後,當我們安裝好了 rkhunter 並且執行之後, 他就會利用原本資料庫的資料去與我們系統的相關檔案進行比對, 若比對的結果有問題,則會顯示警示文字,提供系統管理員分析。
檢查 rootkit 經常攻擊的檔案:
如同前面所說的,rootkit 為了偽裝自己或者是為了取得系統控制權,他們會主動的去變更某些重要檔案。 因此,藉由分析這些檔案,我們可以很輕易的就知道該檔案有沒有被竄改過! 這也是 rootkit 很重要的一個分析的方法!
檢查是否具有錯誤的檔案權限--針對 binary files:
在 基礎學習篇 裡面的 原始碼與 tarball 我們有談到系統裡頭真正會執行的其實是經過編譯的二進位檔案(binary files),因此, 如果木馬程式想要掌握您的系統,那麼竄改的那些重要檔案自然也就是 binary file 囉, 例如 ls, ps, top 等等的。而重點是,系統原本的這些檔案本來都具有比較嚴謹的檔案權限, 例如 /bin/ls 具有的是 -rwxr-xr-x 的 755 權限。不過,很多的木馬程式竄改之後的檔案權限可能都會變成 -rwxrwxrwx 的 777 權限,因此,直接分析這些重要檔案的權限,也可以判斷該檔案是否有問題。
檢查隱藏檔案:
有的時候我們為了要讓螢幕的顯示資料較為乾淨,可能會將一些檔案隱藏起來, 在 Linux 底下的隱藏檔案,其實只是在檔名最前面加上一個小數點『.』而已。 木馬程式也可能透過這個一般朋友們比較不容易注意的隱藏檔來隱藏他們的主程式, 因此,rkhunter 也會分析某些不法的隱藏檔,以期找出有問題的檔案。
檢查可疑的核心模組(LKM/KLD):
在 基礎學習篇 裡面提到的 核心功能 當中, 可以知道 Linux 的核心功能具有可外掛的特性,也就是 Loadable Kernel Module, LKM 。 而我們也曉得,系統能作什麼是由核心來決定的。因此,惡意程式當然有可能藉由載入核心模組來作怪! 所以囉,rkhunter 也會分析可疑的核心模組。(在 Linux 上面, 我們稱核心模組為 LKM,不過,在 BSD 系列的系統上面,他們稱為 Dynamic Kernel Linker, KLD。)
作業系統的特殊檢測:
每一種作業系統(Operating System)都有他特殊的檔案格式,例如 Linux 底下,我們可以使用 ps 來檢查 /proc 這個記憶體目錄底下的東西是否一致!?不過,也因為每個作業系統都不相同, 所以這個功能並無法在所有的作業系統上面進行測試的。無論如何, Linux 是有被支援的喔!
檢查已啟動的監聽埠號:
如果要產生網路連線,則在 Server 端需要啟動監聽的埠號(listening port), 這樣才能監聽來自 Client 端的要求啊!這也是所謂的『後門』(backdoor)程式最常用的方法。 我們知道,要啟動一個 port 來監聽,就必須要執行某個程式才行( 基礎篇之認識系統服務 ) 如果我們的系統被木馬程式入侵,就很有可能被執行一支程式來啟動某項不知名的服務, 而該服務會啟動一些 port ,藉由這些 port 就可以讓 cracker 輕易的連線到我們的主機。 因此, rkhunter 也會分析主機上面的 LISTENING Ports 來解析是否有問題啊~
特定分析(String scanner):
某些特定的木馬程式或後門程式,他會在系統上面建立一特殊的檔案或者是目錄, 這些特殊的檔案或目錄的檔名是不變的。 所以,rkhunter 會藉由分析這些特定的檔案或目錄是否在您的系統上面, 以用來判斷您的系統是否有被入侵呢?
除了這些方法之外,在新版的 rkhunter 當中,也加入了針對某些常用套件的版本分析。 舉例來說, Apache 這個套件在 2.0.49 以前的版本已經被發現很多的臭蟲, 因此,一般管理者都會建議大家將系統當中的 Apache 升級到 2.0.50 以後的版本( 截至 2004/11 )。 又例如常見的 SSH/SSL 版本也都有類似的問題。 rkhunter 可以分析您系統上面的這些運作當中的套件, 然後告訴您,您的該套件版本是否可能有問題??但也僅只是『可能』有問題~ 咦!幹嘛多了個『可能』啊?呵呵!因為 rkhunter 並不是萬能的!底下我們來談一談, rkhunter 可能有哪些誤判的嫌疑?
-------------------------------------------------------------------------------- |
|