病毒如何?隱蔽性:病毒隱藏技術揭秘

來源:互聯網
上載者:User

隱藏是病毒的天性,在業界對病毒的定義裡,“隱蔽性”就是病毒的一個最基本特徵,任何病毒都希望在被感染的電腦中隱藏起來不被發現,因為病毒都只有在不被發現的情況下,才能實施其破壞行為。為了達到這個目的,許多病毒使用了各種不同的技術來躲避反病毒軟體的檢驗,這樣就產生了各種各樣令普通使用者頭痛的病毒隱藏形式。由於木馬後門的行為特徵已具備病毒條件,因此這裡把木馬後門也統一歸納為病毒來描述。

開山鼻祖:隱藏視窗、隱藏進程、隱藏檔案

在電腦流行的早期,電腦病毒和木馬後門等危害程式在普通使用者範圍的普及並不是很廣泛,這個時期的使用者群對電腦和網路安全的防範意識可以說是幾乎沒有的,普通使用者的系統也多為脆弱的Windows 95/98系列和電話線撥號的慢速網路,而那一段時間正是外國木馬“bo”和國產木馬雛形“冰河”、“netspy”等在如今看來各方面技術都頗為簡單的遠端控制軟體大行其道的黃金時期,很多使用者根本就沒有防火牆和殺毒軟體(即使有,也是以殺cih的為主),即使遠方的駭客把使用者的電腦翻了個底朝天,使用者也不會有所察覺,這一時期接觸此類技術的人相對較少,因此並未造成如今這個病毒到處蔓延的局面。

因為這個階段國內使用者的機器環境仍然以Windows 9x為主流,所以病毒編寫者們並不需要消耗太多的腦筋就可以做到讓病毒悄無聲息啟動並執行效果,並讓它在alt+del+ctrl呼出的工作管理員中不可見。

我們都知道,在Windows下啟動並執行程式介面都被定義為“視窗”,程式通過這個途徑與使用者產生互動,每個完整的程式都必須擁有至少一個視窗,但是如果編寫者將這個視窗在運行期間設定為“不可見”呢?這樣一來,使用者就不會察覺到這個程式在案頭上運行了,但是如果有一定經驗的使用者開啟工作管理員,他就會因為發現系統裡多出來的進程而產生懷疑,因此病毒編寫者在這個時期採取了初級形式的隱藏手段:隱藏進程。

其實所謂隱藏進程,是利用微軟未公開的一個api(application programming interface,應用程式介面)函數“registerserviceprocess”將自身註冊為“服務進程”,而恰巧Windows 9x中的工作管理員是不會顯示此類進程的,結果就被病毒鑽了空子,讓“冰河”等木馬在國內大部分普通使用者的機器上安家落戶。

而早期後門技術裡,還有一個最基本的行為就是隱藏檔案,與今天的各種隱藏手段相比,它可謂是“不入流”層級了——這裡提到的“隱藏”,就是簡單的將檔案屬性設定為“隱藏”而已,除此之外,再無別的保護手段了,然而,由於系統設計時為了避免初學者胡亂刪除檔案而預設“不顯示系統和隱藏檔案”的做法(到了Windows 2000/xp時代,這個做法更升級到“隱藏受保護的系統檔案”了),卻恰好給這些病毒提供了天然的隱藏場所——大部分對電腦操作不熟悉的使用者根本不知道“隱藏檔案”的含義,更別提設定為“顯示所有檔案”了,在那個安全軟體廠商剛開始探索市場的時代,使用者更是不會留意太多安全產品及其實際含義,因而這個時期成了各種初期木馬技術發展的重要階段,利用這種手段製作的木馬被統稱為“第一代木馬”。

以現在的技術和眼光看來,這些早期技術作品的發現和清理是相對較簡單的了,因為它們採用的“進程隱藏”技術在nt體繫上的Windows2000/xp/2003等作業系統上已經無效了,直接使用系統內建的工作管理員便能發現和迅速終止進程運行,而後在“控制台”——“檔案夾選項”裡面設定“顯示所有檔案”和取消“隱藏受保護的系統檔案”,就能發現那個被隱藏起來的木馬程式了。對於Windows 9x使用者,使用任意一款第三方的進程管理工具如“Windows最佳化大師”的進程管理組件即可輕鬆發現。

繼續發展:使用線程注射技術的dll木馬

雖然現在使用“線程注射”的木馬病毒和流氓軟體已經遍地開花了,但是從那個混沌時代經曆過來的人都不會忘記首個採用“線程注射”的dll木馬“廣外幽靈”在當時所帶來的恐懼,“線程注射”到底是種什麼東西呢?下面就讓我們來詳細講解一下。

首先,使用者可能不會瞭解“線程”(thread)的意思,而要講解“線程”,就不能不先提到“進程”(process)的概念。許多剛接觸電腦的使用者無法理解“進程”是什麼東西:常常聽到高手說開啟工作管理員關閉某某進程,但是一看到工作管理員列表裡的一堆東西,頭就大了。許多使用者知道使用工作管理員關閉一些失去響應的任務,但是如果某個任務沒有在“應用程式”列表裡出現,使用者就不知所措了。到底什麼是“進程”呢?“進程”是指一個可執行檔在運行期間請求系統在記憶體裡開闢給它的資料資訊塊,系統通過控制這個資料區塊為運行中的程式提供資料交換和決定程式生存期限,任何程式都必須擁有至少一個進程,否則它不被系統承認。

進程從某一方面而言就是可執行檔把自身從儲存介質複製在記憶體中的映像,它通常和某個在磁碟上的檔案保持著對應關係,一個完整的進程資訊包括很多方面的資料,我們使用進程查看工具看到的“應用程式”選項卡包含的是進程的標題,而“進程”選項卡包含的是進程檔案名稱、進程標識符、佔用記憶體等,其中“進程檔案名稱”和“進程標識符”是必須掌握的關鍵,“進程標識符”是系統分配給進程記憶體空間時指定的唯一數字,進程從載入記憶體到結束啟動並執行期間裡這個數字都是保持不變的,而“進程檔案名稱”則是對應著的介質隱藏檔名稱,根據“進程檔案名稱”我們就可以找到最初的可執行檔位置。

工作管理員的“應用程式”項裡列出來的“任務”,是指進程在案頭上顯示出來的視窗對象,例如使用者開啟word 2003撰寫文檔,它的進程“winword.exe”會建立一個在案頭上顯示的前台視窗,這個視窗就是工作管理員裡看得見的“任務”了,而實際上真正在啟動並執行是進程“winword.exe”。並不是所有的進程都會在工作管理員裡留下“任務”的,像qq、msn和所有背景程式,它們並不會在工作清單裡出現,但是你會在進程列表裡找到它們,如果要它們在工作清單裡出現該怎麼辦呢?只要讓它們產生一個在案頭上出現的表單就可以了,隨便開啟一個好友聊天,就會發現工作清單裡終於出現了qq的任務。因此,真正科學的終止程式執行方案是針對“進程”來結束程式的運行,而不是在工作清單裡關閉程式,因為木馬作者們是不會讓自己的木馬在工作清單裡出現的,但是進程列表裡一般人都是逃不過的。

而“線程”,則是在一個進程裡產生的多個執行進度執行個體,舉個簡單例子,一個網路檔案傳輸程式如果只有一個線程(單線程)運作,那麼它的執行效率會非常低下,因為它既需要從網路上讀取檔案資料,又需要把檔案儲存到磁碟,同時還需要繪製當前傳輸進度條,由於在代碼的角度裡這些操作只能一條條的順序執行,程式就不能很好的做到在儲存資料的同時繪製傳輸進度條,即使程式員將其勉強湊到一塊執行,在使用者方面看來,這個程式的響應會非常緩慢甚至直接崩潰,而“多線程”技術則是為瞭解決這種問題而產生的,採用“多線程”技術編寫的應用程式在運行時可以產生多個同時執行的操作執行個體,例如一個採用“多線程”技術的網路檔案傳輸程式就能同時分出三個進度來同時執行網路資料轉送、檔案儲存操作和繪製傳輸進度條的操作,於是在使用者看來,這個程式運行非常流暢,這就是線程的作用。在程式運行時,只能產生一個進程,但是在這個進程的記憶體空間(系統為程式能正常執行而開闢的獨立記憶體領域)裡,可以產生多個線程,其中至少有一個預設的線程,被稱為“主線程”,它是程式主要代碼的運行部分。

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

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。