電腦安全如何識別驅(qū)動木馬
電腦安全如何識別驅(qū)動木馬
一提起木馬或者病毒,大家都會是一臉憎惡且避而遠之的態(tài)度。但是現(xiàn)實卻是殘酷的,在當今這個時代,國內(nèi)用于家庭和企業(yè)的電腦,平均每十臺就有至少一臺感染過后門。下面是學習啦小編收集整理的電腦安全如何識別驅(qū)動木馬,希望對大家有幫助~~
電腦安全如何識別驅(qū)動木馬
正所謂知己知彼、百戰(zhàn)不殆,要想遠離木馬或病毒的騷擾,當然需要我們對它們有詳細的了解,才能讓我們戰(zhàn)勝這些木馬、病毒以及那些惡意的入侵!下面我們就為大家介紹一種歷史悠久的木馬――驅(qū)動木馬。
一、 隱藏技術(shù)的演變:
要談驅(qū)動木馬的識別,就不能不介紹木馬、病毒的隱藏技術(shù)的演變過程。最初的木馬,如同惡意軟件或流氓軟件那樣,使用普通的EXE可運行文件和簡單的隱藏技術(shù)。較為強大的木馬,是直接跳過了第一代木馬形態(tài),而采用DLL文件形態(tài)和線程注射技術(shù)。
線程注射的全稱是“遠程線程注射”(RemoteThread Injection),通常情況下,各個進程的內(nèi)存空間是不可以相互訪問的,這也是為程序能夠穩(wěn)定運行打下基礎(chǔ),這個訪問限制讓所有進程之間互相獨立,這樣一來,任何一個非系統(tǒng)關(guān)鍵進程發(fā)生崩潰時都不會影響到其他內(nèi)存空間里的進程執(zhí)行,從而使NT架構(gòu)的穩(wěn)定性遠遠高于Win9x架構(gòu)。但是在一些特定的場合里,必須讓進程之間可以互相訪問和管理,這就是“遠程線程”技術(shù)的初衷,這個技術(shù)實現(xiàn)了進程之間的跨內(nèi)存空間訪問,其核心是產(chǎn)生一個特殊的線程,這個線程能夠?qū)⒁欢螆?zhí)行代碼連接到另一個進程所處的內(nèi)存空間里,作為另一個進程的其中一個非核心線程來運行,從而達到交換數(shù)據(jù)的目的,這個連接的過程被稱為“注射”(Injection)。遠程線程技術(shù)好比一棵寄生在大樹上的蔓藤,一旦目標進程被注射,這段新生的線程就成為目標進程的一部分代碼了,只要目標進程不被終止,原進程無論是否還在運行都不會再影響到執(zhí)行結(jié)果了。
曾經(jīng),線程注射技術(shù)成為擺在用戶面前的一道難題,因為一旦它加載運行,一般的手段就無法對其造成傷害,但是隨著時代變遷,它的“弊端”也開始暴露得越來越明顯了,例如在安全模式下,由于載體EXE的啟動項無法被調(diào)用運行,這些木馬自然也就失去了作用。而一部分木馬則利用開始瀏覽器,只要“Windows外殼”Explorer.exe程序被加載,它就隨之啟動了,雖然它使用這種方法實現(xiàn)了在一般的安全模式里也能保持運行,但是在更進一步的“命令提示符的安全模式”里,由于它的依賴載體Explorer.exe并不會被調(diào)用(該模式里使用CMD.EXE作為外殼),在有經(jīng)驗的用戶面前,這種保護模式也就被破解了。
二、驅(qū)動木馬的誕生:
于是木馬開發(fā)者開始尋求一種更高級更保險的手段來確保自己的“作品”不受破壞,最終他們把眼光投向了系統(tǒng)底層——Ring 0,這里運行著系統(tǒng)核心模塊和各種驅(qū)動程序模塊,而且也只能運行這些以驅(qū)動文件為形態(tài)的代碼。為了達到目的,后門作者們把“作品”編寫成符合WDM規(guī)范(Windows Driver Model)的驅(qū)動程序模塊,把自身添加進注冊表的驅(qū)動程序加載入口,便實現(xiàn)了“無啟動項”運行。一般的進程查看器都只能枚舉可執(zhí)行文件EXE的信息,所以通過驅(qū)動模塊和執(zhí)行文件結(jié)合的后門程序便得以生存下來,由于它運行在Ring 0級別,擁有與系統(tǒng)核心同等級的權(quán)限,因此它可以更輕易的把自己隱藏起來,無論是進程信息還是文件體,甚至通訊的端口也能被隱藏起來,在如此強大的隱藏技術(shù)面前,無論是任務(wù)管理器還是系統(tǒng)配置實用程序,甚至系統(tǒng)自帶的注冊表工具都失去了效果,這種木馬,就是讓人聞之色變的Rootkit。
起初,這種技術(shù)僅僅為高級的木馬所使用,然而到了后期,為了避免自身被用戶和惡意軟件清理工具卸載,越來越多的惡意軟件紛紛加入了這個陣營,到了這個階段,惡意軟件已經(jīng)徹底成為流氓了,有許多惡意軟件甚至結(jié)合了多種途徑蠶食用戶的系統(tǒng)領(lǐng)域,包括驅(qū)動形態(tài)、線程注射的DLL形態(tài)和表面上的EXE——它們只比類似的木馬多了一個EXE而已。在多種技術(shù)的結(jié)合下,這些惹人討厭的東西越來越難以查殺。
【責編:Chuan】
三、驅(qū)動木馬的發(fā)展:
早期的驅(qū)動木馬雖然采取了驅(qū)動形態(tài)達到隱藏自己避免查殺的目的,但是在安全模式里它仍然被發(fā)現(xiàn)了。因為Windows的“安全模式”不僅僅限于加載用戶界面和啟動項這些區(qū)別,它還包括各種驅(qū)動的“安全模式”,在安全模式里,為了確保Windows不會由于某個驅(qū)動文件的缺陷而崩潰——畢竟一部分人被迫進入安全模式就是因為遇到了某些設(shè)備驅(qū)動不兼容或存在問題而導(dǎo)致系統(tǒng)不能正常運行,大部分被標記為“不必要”的驅(qū)動在“硬件抽象層(HAL)”的干涉下,是不會被加載的,甚至顯卡驅(qū)動也不能例外。所以此時Windows是相對安全的基于“默認硬件”運行的界面簡陋的系統(tǒng)。操作系統(tǒng)廠商此舉其實很好理解,想象一下如果你因為安裝了某個設(shè)備的驅(qū)動程序而導(dǎo)致系統(tǒng)藍屏,然后你來到安全模式里想要修復(fù)它,卻不幸的發(fā)現(xiàn)安全模式也出現(xiàn)了藍屏——因為這個驅(qū)動被系統(tǒng)加載了,如果這樣,安全模式還有什么意義。于是,在這樣的設(shè)計思想下,早期的驅(qū)動木馬到了安全模式,還是很好清理的,因為那個時候,大部分開發(fā)者還處于開發(fā)Rootkit的試探階段,誰也不敢貿(mào)然繞過這種安全體系。
硬件抽象層(Hardware Abstraction Layer,HAL)是微軟公司為了便于操作系統(tǒng)在不同硬件結(jié)構(gòu)上進行移植而提出的將系統(tǒng)底層與硬件相關(guān)的部分獨立運作的思想,HAL為系統(tǒng)實現(xiàn)了“硬件無關(guān)性”,即在不同的硬件平臺上,硬件與操作系統(tǒng)的交互也不會有所差異,這樣一來,硬件廠商開發(fā)驅(qū)動的難度便能大大降低,HAL將硬件的接口細節(jié)隱藏起來,并為操作系統(tǒng)提供一個標準硬件交互接口,目前所有的硬件驅(qū)動都工作在這個層面上,當外界硬件存在指令請求時,驅(qū)動程序響應(yīng)請求并將指令通過HAL轉(zhuǎn)換為系統(tǒng)核心層能理解的指令交給內(nèi)核執(zhí)行,如果未找到相應(yīng)的驅(qū)動程序類型,則將其視為“默認硬件”(Default Hardware)處理,什么叫“默認硬件”呢?最簡單的例子就是進入安全模式,這時候大部分驅(qū)動程序不會被加載,此時的系統(tǒng)便是工作于“默認硬件”上。
然而在經(jīng)歷了一段時間的試煉以后,開發(fā)者的技術(shù)熟練了,膽子也大了,他們開始修改驅(qū)動模塊的運行級別——系統(tǒng)的“默認硬件”是根據(jù)驅(qū)動模塊加載入口聲明的啟動優(yōu)先級判斷的,對于絕對安全的驅(qū)動程序,它的優(yōu)先級被提高了,于是系統(tǒng)無論在什么模式下都會加載它,例如鍵盤驅(qū)動、鼠標驅(qū)動、各種基礎(chǔ)的系統(tǒng)設(shè)備驅(qū)動等,如果某個驅(qū)動文件的優(yōu)先級被人為提高,系統(tǒng)就會將其視為必備驅(qū)動加載,而這個優(yōu)先級的提高方法非常簡單,只需要改動注冊表的驅(qū)動模塊分支里的一個數(shù)據(jù)而已。至此,即使在加載模塊最少的“基于命令提示符的安全模式”下,這樣驅(qū)動木馬就可以不受阻礙的橫行霸道了,即使是專業(yè)的計算機用戶查殺也很困難了,更別說那么“菜鳥”們了。
四、識別驅(qū)動木馬:
大部分驅(qū)動木馬的驅(qū)動模塊并不是用來實現(xiàn)入侵行為或者進行瀏覽器劫持的,而是為真正負責這部分操作的位于用戶層的可執(zhí)行程序本體提供保護功能,因此驅(qū)動木馬的大部分工作就是攔截相關(guān)的系統(tǒng)API調(diào)用工作,使得用戶無法直接查找到真正的文件本體,或者對它們屢殺不禁,甚至連相關(guān)的注冊表項目都無法刪除,這就是因為它們直接從驅(qū)動層攔截了實現(xiàn)這些功能的API。
雖然驅(qū)動木馬使用的種種手段使得自己可以保全于普通的系統(tǒng)安全檢測工具下,但是在基于驅(qū)動層的安全檢測工具出現(xiàn)后,這個一方獨霸的局面被打破了,通過使用國產(chǎn)的幾個優(yōu)秀工具如IceSword和安全巡警專業(yè)版(AST Pro),普通用戶也能具備發(fā)現(xiàn)驅(qū)動木馬的能力。那么,如何判斷系統(tǒng)是否中了木馬,以及是中了驅(qū)動木馬呢?首先用戶要具備基礎(chǔ)的系統(tǒng)啟動項知識,雖然啟動項里的東西會隨著用戶安裝的一些軟件而增加,但是實際上系統(tǒng)可以只存在最少的兩個甚至一個啟動項:用于同步的mobsync、輸入法指示器internat(Windows 2000)或高級文字服務(wù)ctfmon(Windows XP),默認情況下Windows XP還會出現(xiàn)一些MG或IME開頭的啟動項,這些都是無關(guān)緊要的。
也許您會問,如果我一直沒有養(yǎng)成記錄系統(tǒng)啟動項的習慣,也沒有過檢測木馬的經(jīng)驗,我該如何去判斷一個啟動項是否木馬呢?這個問題很難用固定的思維回答,但是用戶可以采取一個笨而實用的方法來測試,雖然它很煩瑣,但是卻比較直觀。
首先運行“系統(tǒng)配置實用工具”msconfig.exe,在它的“啟動”選項卡里面把所有啟動項取消,然后重啟計算機,你會發(fā)現(xiàn)系統(tǒng)任務(wù)欄右邊的托盤區(qū)少了許多東西,這時候,再次運行msconfig,邊把當前的啟動項名稱記錄在筆記上并勾上第一個啟動項,然后確定重啟,通過觀察系統(tǒng)啟動后托盤區(qū)里是否多出了圖標就可以判斷出這個啟動項的大概作用了,如果托盤區(qū)出現(xiàn)了圖標或者直接就出現(xiàn)了一些窗口界面如QQ的登錄對話框,就可以確認這是個正常的啟動項,在筆記上對應(yīng)的啟動項名稱前打勾。然后再次運行msconfig,取消第一個啟動項的勾,勾上第二個啟動項,再次重啟,直到所有啟動項都分別獨立開啟了一次為止,最后看看你記錄下來的筆記里有多少個項目是打了勾的,而剩下那些未被勾選的項目,有80%的幾率就是一般的木馬。
這個方法最保險,也最煩瑣,所以用戶需要記住一條規(guī)律,如今有許多木馬的文件名和啟動項名稱都是很混亂或者很“系統(tǒng)”的,如看到“48ED0A5E”、“svchost”、“svohost”、“services”、“ssdt”、“ssodl”這樣的啟動項,那就不必懷疑了,它絕對是木馬。
用戶的疑問又來了,這方法的結(jié)尾說,這只是測試“一般的木馬”而已,那我該如何判斷系統(tǒng)是否感染了“驅(qū)動木馬”呢?其實,如果用戶的機器已經(jīng)感染了驅(qū)動木馬,那么在剛才的測試里它就已經(jīng)暴露了,細心的用戶應(yīng)該不難發(fā)現(xiàn),他們的機器里有一個甚至多個啟動項,即使剛才在msconfig里已經(jīng)取消,重啟后卻發(fā)現(xiàn)它仍然是選中的狀態(tài),如果用戶是使用具備實時刷新功能的第三方工具管理啟動項,甚至會發(fā)現(xiàn)自己剛?cè)∠诉@個啟動項就馬上被自動恢復(fù)了,而這些始終不肯放棄自啟動權(quán)利的項目,就是我們要找的驅(qū)動木馬的用戶層本體——不要高興,它并不是驅(qū)動木馬的真正危害部分,這個只是驅(qū)動木馬千方百計要保護的對象而已。這個方法正是利用驅(qū)動木馬的保護特性,讓它自我暴露。
結(jié)束語:以上從木馬的隱藏技術(shù)一直到驅(qū)動木馬的識別,進行了詳盡的敘述,而光發(fā)現(xiàn)和識別驅(qū)動木馬是不夠了,如何絞殺這些討厭的家伙呢,請大家關(guān)注我們后續(xù)的文章!
電腦安全如何識別驅(qū)動木馬相關(guān)文章: