電腦安全如何識別驅動木馬

General 更新 2024年11月29日

  一提起木馬或者病毒,大家都會是一臉憎惡且避而遠之的態度。但是現實卻是殘酷的,在當今這個時代,國內用於家庭和企業的電腦,平均每十臺就有至少一臺感染過後門。下面是小編收集整理的,希望對大家有幫助~~

  

  正所謂知己知彼、百戰不殆,要想遠離木馬或病毒的騷擾,當然需要我們對它們有詳細的瞭解,才能讓我們戰勝這些木馬、病毒以及那些惡意的入侵!下面我們就為大家介紹一種歷史悠久的木馬――驅動木馬。

  一、 隱藏技術的演變:

  要談驅動木馬的識別,就不能不介紹木馬、病毒的隱藏技術的演變過程。最初的木馬,如同惡意軟體或流氓軟體那樣,使用普通的EXE可執行檔案和簡單的隱藏技術。較為強大的木馬,是直接跳過了第一代木馬形態,而採用DLL檔案形態和執行緒注射技術。

  執行緒注射的全稱是“遠端執行緒注射”***RemoteThread Injection***,通常情況下,各個程序的記憶體空間是不可以相互訪問的,這也是為程式能夠穩定執行打下基礎,這個訪問限制讓所有程序之間互相獨立,這樣一來,任何一個非系統關鍵程序發生崩潰時都不會影響到其他記憶體空間裡的程序執行,從而使NT架構的穩定性遠遠高於Win9x架構。但是在一些特定的場合裡,必須讓程序之間可以互相訪問和管理,這就是“遠端執行緒”技術的初衷,這個技術實現了程序之間的跨記憶體空間訪問,其核心是產生一個特殊的執行緒,這個執行緒能夠將一段執行程式碼連線到另一個程序所處的記憶體空間裡,作為另一個程序的其中一個非核心執行緒來執行,從而達到交換資料的目的,這個連線的過程被稱為“注射”***Injection***。遠端執行緒技術好比一棵寄生在大樹上的蔓藤,一旦目標程序被注射,這段新生的執行緒就成為目標程序的一部分程式碼了,只要目標程序不被終止,原程序無論是否還在執行都不會再影響到執行結果了。

  曾經,執行緒注射技術成為擺在使用者面前的一道難題,因為一旦它載入執行,一般的手段就無法對其造成傷害,但是隨著時代變遷,它的“弊端”也開始暴露得越來越明顯了,例如在安全模式下,由於載體EXE的啟動項無法被呼叫執行,這些木馬自然也就失去了作用。而一部分木馬則利用開始瀏覽器,只要“Windows外殼”Explorer.exe程式被載入,它就隨之啟動了,雖然它使用這種方法實現了在一般的安全模式裡也能保持執行,但是在更進一步的“命令提示符的安全模式”裡,由於它的依賴載體Explorer.exe並不會被呼叫***該模式裡使用CMD.EXE作為外殼***,在有經驗的使用者面前,這種保護模式也就被破解了。

  二、驅動木馬的誕生:

  於是木馬開發者開始尋求一種更高階更保險的手段來確保自己的“作品”不受破壞,最終他們把眼光投向了系統底層——Ring 0,這裡執行著系統核心模組和各種驅動程式模組,而且也只能執行這些以驅動檔案為形態的程式碼。為了達到目的,後門作者們把“作品”編寫成符合WDM規範***Windows Driver Model***的驅動程式模組,把自身新增進登錄檔的驅動程式載入***,便實現了“無啟動項”執行。一般的程序檢視器都只能列舉可執行檔案EXE的資訊,所以通過驅動模組和執行檔案結合的後門程式便得以生存下來,由於它執行在Ring 0級別,擁有與系統核心同等級的許可權,因此它可以更輕易的把自己隱藏起來,無論是程序資訊還是檔案體,甚至通訊的埠也能被隱藏起來,在如此強大的隱藏技術面前,無論是工作管理員還是系統配置實用程式,甚至系統自帶的登錄檔工具都失去了效果,這種木馬,就是讓人聞之色變的Rootkit。

  起初,這種技術僅僅為高階的木馬所使用,然而到了後期,為了避免自身被使用者和惡意軟體清理工具解除安裝,越來越多的惡意軟體紛紛加入了這個陣營,到了這個階段,惡意軟體已經徹底成為流氓了,有許多惡意軟體甚至結合了多種途徑蠶食使用者的系統領域,包括驅動形態、執行緒注射的DLL形態和表面上的EXE——它們只比類似的木馬多了一個EXE而已。在多種技術的結合下,這些惹人討厭的東西越來越難以查殺。

  【責編:Chuan】

  三、驅動木馬的發展:

  早期的驅動木馬雖然採取了驅動形態達到隱藏自己避免查殺的目的,但是在安全模式裡它仍然被發現了。因為Windows的“安全模式”不僅僅限於載入使用者介面和啟動項這些區別,它還包括各種驅動的“安全模式”,在安全模式裡,為了確保Windows不會由於某個驅動檔案的缺陷而崩潰——畢竟一部分人被迫進入安全模式就是因為遇到了某些裝置驅動不相容或存在問題而導致系統不能正常執行,大部分被標記為“不必要”的驅動在“硬體抽象層***HAL***”的干涉下,是不會被載入的,甚至顯示卡驅動也不能例外。所以此時Windows是相對安全的基於“預設硬體”執行的介面簡陋的系統。作業系統廠商此舉其實很好理解,想象一下如果你因為安裝了某個裝置的驅動程式而導致系統藍屏,然後你來到安全模式裡想要修復它,卻不幸的發現安全模式也出現了藍屏——因為這個驅動被系統載入了,如果這樣,安全模式還有什麼意義。於是,在這樣的設計思想下,早期的驅動木馬到了安全模式,還是很好清理的,因為那個時候,大部分開發者還處於開發Rootkit的試探階段,誰也不敢貿然繞過這種安全體系。

  硬體抽象層***Hardware Abstraction Layer,HAL***是微軟公司為了便於作業系統在不同硬體結構上進行移植而提出的將系統底層與硬體相關的部分獨立運作的思想,HAL為系統實現了“硬體無關性”,即在不同的硬體平臺上,硬體與作業系統的互動也不會有所差異,這樣一來,硬體廠商開發驅動的難度便能大大降低,HAL將硬體的介面細節隱藏起來,併為作業系統提供一個標準硬體互動介面,目前所有的硬體驅動都工作在這個層面上,當外界硬體存在指令請求時,驅動程式響應請求並將指令通過HAL轉換為系統核心層能理解的指令交給核心執行,如果未找到相應的驅動程式型別,則將其視為“預設硬體”***Default Hardware***處理,什麼叫“預設硬體”呢?最簡單的例子就是進入安全模式,這時候大部分驅動程式不會被載入,此時的系統便是工作於“預設硬體”上。

  然而在經歷了一段時間的試煉以後,開發者的技術熟練了,膽子也大了,他們開始修改驅動模組的執行級別——系統的“預設硬體”是根據驅動模組載入***宣告的啟動優先順序判斷的,對於絕對安全的驅動程式,它的優先順序被提高了,於是系統無論在什麼模式下都會載入它,例如鍵盤驅動、滑鼠驅動、各種基礎的系統裝置驅動等,如果某個驅動檔案的優先順序被人為提高,系統就會將其視為必備驅動載入,而這個優先順序的提高方法非常簡單,只需要改動登錄檔的驅動模組分支裡的一個數據而已。至此,即使在載入模組最少的“基於命令提示符的安全模式”下,這樣驅動木馬就可以不受阻礙的橫行霸道了,即使是專業的計算機使用者查殺也很困難了,更別說那麼“菜鳥”們了。

  四、識別驅動木馬:

  大部分驅動木馬的驅動模組並不是用來實現入侵行為或者進行瀏覽器劫持的,而是為真正負責這部分操作的位於使用者層的可執行程式本體提供保護功能,因此驅動木馬的大部分工作就是攔截相關的系統API呼叫工作,使得使用者無法直接查詢到真正的檔案本體,或者對它們屢殺不禁,甚至連相關的登錄檔專案都無法刪除,這就是因為它們直接從驅動層攔截了實現這些功能的API。

  雖然驅動木馬使用的種種手段使得自己可以保全於普通的系統安全檢測工具下,但是在基於驅動層的安全檢測工具出現後,這個一方獨霸的局面被打破了,通過使用國產的幾個優秀工具如IceSword和安全巡警專業版***AST Pro***,普通使用者也能具備發現驅動木馬的能力。那麼,如何判斷系統是否中了木馬,以及是中了驅動木馬呢?首先使用者要具備基礎的系統啟動項知識,雖然啟動項裡的東西會隨著使用者安裝的一些軟體而增加,但是實際上系統可以只存在最少的兩個甚至一個啟動項:用於同步的mobsync、輸入法指示器internat***Windows 2000***或高階文字服務ctfmon***Windows XP***,預設情況下Windows XP還會出現一些MG或IME開頭的啟動項,這些都是無關緊要的。

  也許您會問,如果我一直沒有養成記錄系統啟動項的習慣,也沒有過檢測木馬的經驗,我該如何去判斷一個啟動項是否木馬呢?這個問題很難用固定的思維回答,但是使用者可以採取一個笨而實用的方法來測試,雖然它很煩瑣,但是卻比較直觀。

  首先執行“系統配置實用工具”msconfig.exe,在它的“啟動”選項卡里面把所有啟動項取消,然後重啟計算機,你會發現系統工作列右邊的托盤區少了許多東西,這時候,再次執行msconfig,邊把當前的啟動項名稱記錄在筆記上並勾上第一個啟動項,然後確定重啟,通過觀察系統啟動後托盤區裡是否多出了圖示就可以判斷出這個啟動項的大概作用了,如果托盤區出現了圖示或者直接就出現了一些視窗介面如QQ的登入對話方塊,就可以確認這是個正常的啟動項,在筆記上對應的啟動項名稱前打勾。然後再次執行msconfig,取消第一個啟動項的勾,勾上第二個啟動項,再次重啟,直到所有啟動項都分別獨立開啟了一次為止,最後看看你記錄下來的筆記裡有多少個專案是打了勾的,而剩下那些未被勾選的專案,有80%的機率就是一般的木馬。

  這個方法最保險,也最煩瑣,所以使用者需要記住一條規律,如今有許多木馬的檔名和啟動項名稱都是很混亂或者很“系統”的,如看到“48ED0A5E”、“svchost”、“svohost”、“services”、“ssdt”、“ssodl”這樣的啟動項,那就不必懷疑了,它絕對是木馬。

  使用者的疑問又來了,這方法的結尾說,這只是測試“一般的木馬”而已,那我該如何判斷系統是否感染了“驅動木馬”呢?其實,如果使用者的機器已經感染了驅動木馬,那麼在剛才的測試裡它就已經暴露了,細心的使用者應該不難發現,他們的機器裡有一個甚至多個啟動項,即使剛才在msconfig裡已經取消,重啟後卻發現它仍然是選中的狀態,如果使用者是使用具備實時重新整理功能的第三方工具管理啟動項,甚至會發現自己剛取消了這個啟動項就馬上被自動恢復了,而這些始終不肯放棄自啟動權利的專案,就是我們要找的驅動木馬的使用者層本體——不要高興,它並不是驅動木馬的真正危害部分,這個只是驅動木馬千方百計要保護的物件而已。這個方法正是利用驅動木馬的保護特性,讓它自我暴露。

  結束語:以上從木馬的隱藏技術一直到驅動木馬的識別,進行了詳盡的敘述,而光發現和識別驅動木馬是不夠了,如何絞殺這些討厭的傢伙呢,請大家***後續的文章!

如何解決盜號木馬侵入電腦問題
如何防護電腦盜號木馬
相關知識
電腦安全如何識別驅動木馬
筆記本如何安裝指紋識別驅動
電腦系統如何開啟自動更新
電腦安全中心無法啟動
電腦安裝了顯示卡驅動開不了機怎麼辦
電腦安裝了顯示卡驅動開不了機怎麼處理
電腦安裝了顯示卡驅動後顯示不了怎麼處理
我電腦安裝上顯示卡驅動啟動不了了
電腦安裝了顯示卡驅動開不了機怎麼樣解決
電腦安裝了顯示卡驅動後顯示不了怎麼回事