|
網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機整體,實現(xiàn)資源的全面共享和有機協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源、大型數(shù)據(jù)庫、網(wǎng)絡(luò)、傳感器等。 當前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認為是互聯(lián)網(wǎng)發(fā)展的第三階段。 通常,我們在獲得了對目標的控制權(quán)后,還想保持這種控制權(quán)限,于是就出現(xiàn)了木馬后門,Rootkit之類的保護權(quán)限的手段。首先來說一下我們常見的應(yīng)用層次的木馬后門,比如我們常見的遠程控制類的軟件,像國外的Sub7,VNC,netbus,國內(nèi)的冰河,灰鴿子,黑洞等等,這些大家都很熟悉就不詳細介紹了。此類后門很容易被發(fā)現(xiàn),現(xiàn)在的殺毒軟件大多都能輕松的查殺,即使暫時查不到,用其它手段檢測發(fā)現(xiàn)也不困難,而這次給大家介紹的是比一般木馬后門潛伏的更深木馬后門--Rootkit。 傳統(tǒng)的Rootkit是一種比普通木馬后門更為陰險的木馬后門。它主要通過替換系統(tǒng)文件來達到目的,這樣就會更加隱蔽,使檢測變得比較困難。傳統(tǒng)的Rootkit主要針對Unix平臺,例如Linux、AIX、SunOs等操作系統(tǒng),有些Rootkits可以通過替換DLL文件或更改系統(tǒng)來攻擊Windows平臺。Rootkit并不能讓你直接獲得權(quán)限,相反它是在你通過各種方法獲得權(quán)限后才能使用的一種保護權(quán)限的措施,在我們獲取系統(tǒng)根權(quán)限(根權(quán)限即root權(quán)限,是Unix系統(tǒng)的最高權(quán)限)以后,Rootkits提供了一套工具用來建立后門和隱藏行跡,從而讓攻擊者保住權(quán)限。 RootKits是如何實現(xiàn)后門的呢?為了理解Rootkits后門,有必要先了解一下Unix的基本工作流程,當我們訪問Unix時(不管是本地還是遠程登錄),/bin/login程序都會運行,系統(tǒng)將通過/bin/login來收集并核對用戶的帳號和密碼。Rootkits使用一個帶有根權(quán)限后門密碼的/bin/login來替換系統(tǒng)的/bin/login,這樣攻擊者輸入根權(quán)限后門的密碼,就能進入系統(tǒng)。就算管理員更改了原來的系統(tǒng)密碼或者把密碼清空。我們?nèi)阅軌蚴褂煤箝T密碼以根用戶身份登錄。在攻入Unix系統(tǒng)后,入侵者通常會進行一系列的攻擊動作,如安裝嗅探器收集重要數(shù)據(jù),而Unix中也會有些系統(tǒng)文件會監(jiān)視這些動作,比如ifconfig等,Rootkit當然不會束手就擒,它會同樣替換一下這些系統(tǒng)文件,通常被Rootkit替換的系統(tǒng)程序有l(wèi)ogin,ifconfig,du,find,ls,netstart,ps等。由于篇幅問題,這些系統(tǒng)文件的功能就不一一羅列,有興趣的讀者可以自己去查找,現(xiàn)在Rootkit的工具很多,里面基本都是包含一些處理過的系統(tǒng)文件來代替原來的系統(tǒng)文件的,像tOmkit等一些Rootkit就是比較優(yōu)秀的了。 寫到這里,戰(zhàn)爭似乎結(jié)束了,然而更可怕的Rootkit還沒登場,那就是內(nèi)核級Rootkit。在大多數(shù)操作系統(tǒng)中(各種Unix和Windows),內(nèi)核是操作系統(tǒng)最基本的部件,它控制著對網(wǎng)絡(luò)設(shè)備、進程、系統(tǒng)內(nèi)存、磁盤等的訪問。例如當你打開一個文件時,打開文件的請求被發(fā)送到內(nèi)核,內(nèi)核負責從磁盤得到文件的比特位并運行你的文件瀏覽程序。內(nèi)核級Rootkit使攻擊者獲得對系統(tǒng)底層的完全控制權(quán)。攻擊者可以修改你的內(nèi)核,大多數(shù)內(nèi)核級Rootkit都能進行執(zhí)行重定向,即截獲運行某一程序的命令,將其重定向到入侵者所選中的程序并運行此程序。也就是說用戶或管理員要運行程序A,被修改過的內(nèi)核假裝執(zhí)行A,實際卻執(zhí)行了程序B。 [page_break]內(nèi)核級Rootkit對Unix的攻擊 和傳統(tǒng)的Rootkit不同,內(nèi)核級Rootkit攻擊時Unix的bin/login并未被修改,但所有執(zhí)行/bin/login的請求(當?shù)卿浵到y(tǒng)時將產(chǎn)生)都被重定向到攻擊者制作的隱藏文件/bin/backdoorlogin,這樣當系統(tǒng)管理員使用檢測傳統(tǒng)級別的Rootkit的方法(比如用tripwire之類的軟件檢測文件的完整性)就行不通了,因為/bin/login并沒有被改變。同樣的道理,攻擊者對其他的系統(tǒng)程序也進行重定,這樣你的操作實際就是按照入侵者的意愿執(zhí)行了。 內(nèi)核級Rootkit不僅會進行“執(zhí)行重定向”設(shè)置,還有很多支持文件隱蔽。傳統(tǒng)的Rootkit是通過替換ls程序來實現(xiàn)文件的隱藏,而內(nèi)核級的Rootkit則是通過對內(nèi)核的修改來對ls程序欺騙,更加的陰險隱蔽。另外內(nèi)核級的Rootkit還能對進程和網(wǎng)絡(luò)進行隱藏,用戶將得不到真實的系統(tǒng)情況報告。 因此,許多內(nèi)核級Rootkit都通過LKM來實現(xiàn)。安裝通過LKM實現(xiàn)的內(nèi)核級Rootkit十分簡單。例如,在Linux上安裝Knark內(nèi)核級Rootkit只需具有根權(quán)限的入侵者輸入命令:insmod knark.o就行了,模塊被安裝后就等著我們輸入命令了。更妙的是整個過程不需要重啟。通過LKM實現(xiàn)的Rootkit在Unix上十分流行。我們也常常會通過給windows平臺打LKM補丁的方法攻擊windows。 [page_break]內(nèi)核級Rootkit實例 現(xiàn)在有大量的內(nèi)核級Rootkit可用,就選幾種比較強大的來跟大家討論一下。 Knark具有各種標準的內(nèi)核級Rootkit功能,包括執(zhí)行重定向,文件隱藏,進程隱藏和網(wǎng)絡(luò)隱藏。另外,還有不少比較過癮的功能,如: 1、遠程執(zhí)行:我們可以通過網(wǎng)絡(luò)向運行Knark的機器發(fā)送一條命令,源地址是假造的,命令被發(fā)往UDP端口53,使之表面上看起來像是DNS流量。我們就可以利用這個功能來升級Knark,刪除系統(tǒng)文件或任何我們想做的事。 2、任務(wù)攻擊:當某一進程在系統(tǒng)上運行時,它總是具有與UID和有效的UID(EUID)相關(guān)的權(quán)限。另外進程還具有與文件系統(tǒng)UID(FSUID)相關(guān)的文件及目錄訪問權(quán)。Knark的任務(wù)攻擊能力可實時地將進程UID,EUID和FSUID改變。進程在不停止運動的情況下突然具有了新的權(quán)限。 3、隱藏混雜模式:同一般的RootKit一樣,入侵者也會在受害者機器上運行嗅探器。我們可以用文件隱藏和進程隱藏將嗅探器隱藏起來。然而,以太網(wǎng)卡會被設(shè)成混雜模式,管理員可以檢查到這一點Knark將內(nèi)核進行了修改,使之隱瞞網(wǎng)卡的混合模式,這將使嗅探變得更加隱秘。 4、實時進程隱藏:Knark可以將一個正在運行的進程隱藏起來。通過發(fā)送信號31給一個進程,此進程將消失,但仍在運行。命令kill-31 process_id將阻止內(nèi)核匯報任何有關(guān)此進程的信息。進程在運行時,ps和lsof命令的使用都不能顯示此進程。 5、內(nèi)核模塊隱藏:Linux中的lsmod命令可以列出當前在機器上安裝的LKM,我們自然不想讓管理員看到Knark模塊,因此Knark包含了一個單獨的模塊modhide,modhide將Knark和自己隱藏了起來。這樣,當我們用Knark攻擊一個系統(tǒng)時,我們首先為Knark.o做一個insmod,然后為modhide.o做一個insmod。這樣不管誰運行l(wèi)smod命令,這些模塊都不會被發(fā)現(xiàn)。 同Knark一樣,Adore也是一個針對Linux的LKM RootKit,他包含了標準的內(nèi)核級Rootkit功能,如文件隱藏,進程隱藏,網(wǎng)絡(luò)隱藏和內(nèi)核模塊隱藏。我們只所以討論Adore,是因為他還有一個非常強大的功能:內(nèi)置的根權(quán)限后門。 Adore的根權(quán)限后門可以讓我們連接到系統(tǒng)上并獲得根權(quán)限的命令外殼,此功能十分直接了當 ,Adore將此功能巧妙的包含在內(nèi)核模塊中了。這一招十分難破,因為管理員看不到任何文件、進程、偵聽網(wǎng)絡(luò)端口的跡象。 現(xiàn)在也存在一些Rootkit自動檢測工具,但都不是很可靠。同時內(nèi)核級的Rootkit也在不斷的發(fā)展中,對一些系統(tǒng)來說防御它最好的辦法是使用不支持LKM的內(nèi)核,Linux的內(nèi)核就可以設(shè)成不支持LKM的單一內(nèi)核。 下面是一些圖例,幫助大家理解。 ![]() 圖:普通應(yīng)用級別的木馬后門 ![]() 圖:傳統(tǒng)的RootKit ![]() 圖:內(nèi)核級的RootKit 網(wǎng)絡(luò)的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術(shù)都需要適時應(yīng)勢,對應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!