天天看點

unix下的 rootkit

傳統的Rootkit是一種比普通木馬後門更為陰險的木馬後門。它主要通過替換系統檔案來達到目的,這樣就會更加隐蔽,使檢測變得比較困難。傳統的 Rootkit主要針對Unix平台,例如Linux、AIX、 SunOs等作業系統,有些Rootkits可以通過替換DLL檔案或更改系統來攻擊Windows平台。Rootkit并不能讓你直接獲得權限,相反它 是在你通過各種方法獲得權限後才能使用的一種保護權限的措施,在我們擷取系統根權限(根權限即root權限,是Unix系統的最高權限)以後, Rootkits提供了一套工具用來建立後門和隐藏行迹,進而讓攻擊者保住權限。

傳統Rootkit對Unix的攻擊

RootKits是如何實作後門的呢?為了了解 Rootkits後門,有必要先了解一下Unix的基本工作流程,當我們通路Unix時(不管是本地還是遠端登入),/bin/login程式都會運作, 系統将通過/bin/login來收集并核對使用者的帳号和密碼。Rootkits使用一個帶有根權限後門密碼的/bin/login來替換系統的 /bin/login,這樣攻擊者輸入根權限後門的密碼,就能進入系統。就算管理者更改了原來的系統密碼或者把密碼清空。我們仍能夠使用後門密碼以根使用者 身份登入。在攻入Unix系統後,入侵者通常會進行一系列的攻擊動作,如安裝嗅探器收集重要資料,而Unix中也會有些系統檔案會監視這些動作,比如 ifconfig等,Rootkit當然不會束手就擒,它會同樣替換一下這些系統檔案,通常被Rootkit替換的系統程式有login, ifconfig,du,find,ls,netstart,ps等。由于篇幅問題,這些系統檔案的功能就不一一羅列,有興趣的讀者可以自己去查找,現在 Rootkit的工具很多,裡面基本都是包含一些處理過的系統檔案來代替原來的系統檔案的,像tOmkit等一些Rootkit就是比較優秀的了。

防禦辦法:Rootkit如此可怕,得好好防它才行,實際上,最有效的防禦方法是定期對重要系統檔案的完整性進行核查,這類的工具很多,像 Tripwire就是一個非常不錯的檔案完整性檢查工具。一但發現遭受到 Rootkit攻擊,必須完全重裝所有的系統檔案、部件和程式,以確定安全性。

寫到這裡,戰争似乎結束了,然而更可怕的Rootkit還沒登場,那就是核心級Rootkit。在大多數作業系統中(各種Unix和Windows),内 核是作業系統最基本的部件,它控制着對網絡裝置、程序、系統記憶體、磁盤等的通路。例如當你打開一個檔案時,打開檔案的請求被發送到核心,核心負責從磁盤得 到檔案的比特位并運作你的檔案浏覽程式。核心級 Rootkit使攻擊者獲得對系統底層的完全控制權。攻擊者可以修改你的核心,大多數核心級Rootkit都能進行執行重定向,即截獲運作某一程式的命 令,将其重定向到入侵者所選中的程式并運作此程式。也就是說使用者或管理者要運作程式A,被修改過的核心假裝執行A,實際卻執行了程式B。

核心級Rootkit對Unix的攻擊

和傳統的Rootkit不同,核心級Rootkit攻擊時 Unix的bin/login并未被修改,但所有執行/bin/login的請求(當登入系統時将産生)都被重定向到攻擊者制作的隐藏檔案 /bin/backdoorlogin,這樣當系統管理者使用檢測傳統級别的Rootkit的方法(比如用tripwire之類的軟體檢測檔案的完整性) 就行不通了,因為/bin/login并沒有被改變。同樣的道理,攻擊者對其他的系統程式也進行重定,這樣你的操作實際就是按照入侵者的意願執行了。

核心級Rootkit不僅會進行“執行重定向”設定,還有很多支援檔案隐蔽。傳統的Rootkit是通過替換ls程式來實作檔案的隐藏,而核心級的 Rootkit則是通過對核心的修改來對ls程式欺騙,更加的陰險隐蔽。另外核心級的Rootkit還能對程序和網絡進行隐藏,使用者将得不到真實的系統情 況報告。

實作思路:根據系統的類型,攻擊者有不同的方法來對核心進行修改,在N種Unix系統上修改核心最簡單的方法就是利用系統本身的加載的核心子產品(LKM) 的功能,是以大多數的核心級Rootkit通過利用LKM動态地将核心更新來提供新功能,新添加的子產品擴充了核心,同時對核心和其他使用核心的所有東西有 了完全通路權。

是以,許多核心級Rootkit都通過LKM來實作。安裝通過LKM實作的核心級Rootkit十分簡單。例如,在Linux上安裝Knark核心級 Rootkit隻需具有根權限的入侵者輸入指令:insmod knark.o就行了,子產品被安裝後就等着我們輸入指令了。更妙的是整個過程不需要重新開機。通過LKM實作的Rootkit在Unix上十分流行。我們也常 常會通過給windows平台打LKM更新檔的方法攻擊windows。

核心級Rootkit執行個體

現在有大量的核心級Rootkit可用,就選幾種比較強大的來跟大家讨論一下。

一、linux上的核心級Rootkit:Knark

Knark具有各種标準的核心級Rootkit功能,包括執行重定向,檔案隐藏,程序隐藏和網絡隐藏。另外,還有不少比較過瘾的功能,如:

1、遠端執行:我們可以通過網絡向運作Knark的機器發送一條指令,源位址是假造的,指令被發往UDP端口53,使之表面上看起來像是DNS流量。我們 就可以利用這個功能來更新Knark,删除系統檔案或任何我們想做的事。

2、任務攻擊:當某一程序在系統上運作時,它總是具有與 UID和有效的UID(EUID)相關的權限。另外程序還具有與檔案系統UID(FSUID)相關的檔案及目錄通路權。Knark的任務攻擊能力可實時地 将程序UID,EUID和FSUID改變。程序在不停止運動的情況下突然具有了新的權限。

3、隐藏混雜模式:同一般的RootKit一樣,入侵者也會在受害者機器上運作嗅探器。我們可以用檔案隐藏和程序隐藏将嗅探器隐藏起來。然而,以太網卡會 被設成混雜模式,管理者可以檢查到這一點Knark将核心進行了修改,使之隐瞞網卡的混合模式,這将使嗅探變得更加隐秘。

4、實時程序隐藏:Knark可以将一個正在運作的程序隐藏起來。通過發送信号31給一個程序,此程序将消失,但仍在運作。指令kill-31 process_id将阻止核心彙報任何有關此程序的資訊。程序在運作時,ps和lsof指令的使用都不能顯示此程序。

5、核心子產品隐藏:Linux中的lsmod指令可以列出目前在機器上安裝的LKM,我們自然不想讓管理者看到Knark子產品,是以Knark包含了一個 單獨的子產品modhide,modhide将Knark和自己隐藏了起來。這樣,當我們用Knark攻擊一個系統時,我們首先為Knark.o做一個 insmod,然後為modhide.o做一個insmod。這樣不管誰運作lsmod指令,這些子產品都不會被發現。

二、另一個Linux上的核心級Rootkit:Adore

同Knark一樣,Adore也是一個針對Linux的LKM RootKit,他包含了标準的核心級Rootkit功能,如檔案隐藏,程序隐藏,網絡隐藏和核心子產品隐藏。我們隻是以讨論Adore,是因為他還有一個 非常強大的功能:内置的根權限後門。

Adore的根權限後門可以讓我們連接配接到系統上并獲得根權限的指令外殼,此功能十分直接了當 ,Adore将此功能巧妙的包含在核心子產品中了。這一招十分難破,因為管理者看不到任何檔案、程序、偵聽網絡端口的迹象。

防禦辦法:防禦核心級的Rootkit的根本辦法是不要讓攻擊者得到你的機器的系統的根本權限(Unix裡的root和windows裡的admin), 不過這看起來像廢話:),目前對核心級的Rootkit還沒有絕對的防禦體系。