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