歷代木馬程序隱身的技術(shù)分析第1/2頁
更新時間:2007年11月05日 22:34:48 作者:
最基本的隱藏:不可見窗體+隱藏文件
木馬程序無論如何神秘,但歸根究底,仍是Win32平臺下的一種程序。Windows下常見的程序有兩種:
1.Win32應用程序(Win32 Application),比如QQ、Office等都屬于此行列。
2.Win32控制臺程序(Win32 Console),比如硬盤引導修復程序FixMBR。
其中,Win32應用程序通常會有應用程序界面,比如系統(tǒng)中自帶的“計算器”就有提供各種數(shù)字按鈕的應用程序界面。木馬雖然屬于Win32應用程序,但其一般不包含窗體或隱藏了窗體(但也有某些特殊情況,如木馬使用者與被害者聊天的窗口),并且將木馬文件屬性設置為“隱藏”,這就是最基本的隱藏手段,稍有經(jīng)驗的用戶只需打開“任務管理器”,并且將“文件夾選項”中的“顯示所有文件”勾選即可輕松找出木馬,于是便出現(xiàn)了下面要介紹的“進程隱藏”技術(shù)。
第一代進程隱藏技術(shù):Windows 98的后門
在Windows 98中,微軟提供了一種能將進程注冊為服務進程的方法。盡管微軟沒有公開提供這種方法的技術(shù)實現(xiàn)細節(jié)(因為Windows的后續(xù)版本中沒有提供這個機制),但仍有高手發(fā)現(xiàn)了這個秘密,這種技術(shù)稱為RegisterServiceProcess。只要利用此方法,任何程序的進程都能將自己注冊為服務進程,而服務進程在Windows 98中的任務管理器中恰巧又是不顯示的,所以便被木馬程序鉆了空子。
要對付這種隱藏的木馬還算簡單,只需使用其他第三方進程管理工具即可找到其所在,并且采用此技術(shù)進行隱藏的木馬在Windows 2000/XP(因為不支持這種隱藏方法)中就得現(xiàn)形!中止該進程后將木馬文件刪除即可??墒墙酉聛淼牡诙M程隱藏技術(shù),就沒有這么簡單對付了。
第二代進程隱藏技術(shù):進程插入
在Windows中,每個進程都有自己的私有內(nèi)存地址空間,當使用指針(一種訪問內(nèi)存的機制)訪問內(nèi)存時,一個進程無法訪問另一個進程的內(nèi)存地址空間,就好比在未經(jīng)鄰居同意的情況下,你無法進入鄰居家吃飯一樣。比如QQ在內(nèi)存中存放了一張圖片的數(shù)據(jù),而MSN則無法通過直接讀取內(nèi)存的方式來獲得該圖片的數(shù)據(jù)。這樣做同時也保證了程序的穩(wěn)定性,如果你的進程存在一個錯誤,改寫了一個隨機地址上的內(nèi)存,這個錯誤不會影響另一個進程使用的內(nèi)存。
你知道嗎——進程(Process)是什么
對應用程序來說,進程就像一個大容器。在應用程序被運行后,就相當于將應用程序裝進容器里了,你可以往容器里加其他東西(如:應用程序在運行時所需的變量數(shù)據(jù)、需要引用的DLL文件等),當應用程序被運行兩次時,容器里的東西并不會被倒掉,系統(tǒng)會找一個新的進程容器來容納它。
一個進程可以包含若干線程(Thread),線程可以幫助應用程序同時做幾件事(比如一個線程向磁盤寫入文件,另一個則接收用戶的按鍵操作并及時做出反應,互相不干擾),在程序被運行后中,系統(tǒng)首先要做的就是為該程序進程建立一個默認線程,然后程序可以根據(jù)需要自行添加或刪除相關(guān)的線程。
1.進程插入是什么
獨立的地址空間對于編程人員和用戶來說都是非常有利的。對于編程人員來說,系統(tǒng)更容易捕獲隨意的內(nèi)存讀取和寫入操作。對于用戶來說,操作系統(tǒng)將變得更加健壯,因為一個應用程序無法破壞另一個進程或操作系統(tǒng)的運行。當然,操作系統(tǒng)的這個健壯特性是要付出代價的,因為要編寫能夠與其他進程進行通信,或者能夠?qū)ζ渌M程進行操作的應用程序?qū)⒁щy得多。但仍有很多種方法可以打破進程的界限,訪問另一個進程的地址空間,那就是“進程插入”(Process Injection)。一旦木馬的DLL插入了另一個進程的地址空間后,就可以對另一個進程為所欲為,比如下文要介紹的盜QQ密碼。
2.木馬是如何盜走QQ密碼的
普通情況下,一個應用程序所接收的鍵盤、鼠標操作,別的應用程序是無權(quán)“過問”的??杀I號木馬是怎么偷偷記錄下我的密碼的呢?木馬首先將1個DLL 文件插入到QQ的進程中并成為QQ進程中的一個線程,這樣該木馬DLL就赫然成為了QQ的一部分!然后在用戶輸入密碼時,因為此時木馬DLL已經(jīng)進入QQ 進程內(nèi)部,所以也就能夠接收到用戶傳遞給QQ的密碼鍵入了,真是“家賊難防”?。?
木馬程序無論如何神秘,但歸根究底,仍是Win32平臺下的一種程序。Windows下常見的程序有兩種:
1.Win32應用程序(Win32 Application),比如QQ、Office等都屬于此行列。
2.Win32控制臺程序(Win32 Console),比如硬盤引導修復程序FixMBR。
其中,Win32應用程序通常會有應用程序界面,比如系統(tǒng)中自帶的“計算器”就有提供各種數(shù)字按鈕的應用程序界面。木馬雖然屬于Win32應用程序,但其一般不包含窗體或隱藏了窗體(但也有某些特殊情況,如木馬使用者與被害者聊天的窗口),并且將木馬文件屬性設置為“隱藏”,這就是最基本的隱藏手段,稍有經(jīng)驗的用戶只需打開“任務管理器”,并且將“文件夾選項”中的“顯示所有文件”勾選即可輕松找出木馬,于是便出現(xiàn)了下面要介紹的“進程隱藏”技術(shù)。
第一代進程隱藏技術(shù):Windows 98的后門
在Windows 98中,微軟提供了一種能將進程注冊為服務進程的方法。盡管微軟沒有公開提供這種方法的技術(shù)實現(xiàn)細節(jié)(因為Windows的后續(xù)版本中沒有提供這個機制),但仍有高手發(fā)現(xiàn)了這個秘密,這種技術(shù)稱為RegisterServiceProcess。只要利用此方法,任何程序的進程都能將自己注冊為服務進程,而服務進程在Windows 98中的任務管理器中恰巧又是不顯示的,所以便被木馬程序鉆了空子。
要對付這種隱藏的木馬還算簡單,只需使用其他第三方進程管理工具即可找到其所在,并且采用此技術(shù)進行隱藏的木馬在Windows 2000/XP(因為不支持這種隱藏方法)中就得現(xiàn)形!中止該進程后將木馬文件刪除即可??墒墙酉聛淼牡诙M程隱藏技術(shù),就沒有這么簡單對付了。
第二代進程隱藏技術(shù):進程插入
在Windows中,每個進程都有自己的私有內(nèi)存地址空間,當使用指針(一種訪問內(nèi)存的機制)訪問內(nèi)存時,一個進程無法訪問另一個進程的內(nèi)存地址空間,就好比在未經(jīng)鄰居同意的情況下,你無法進入鄰居家吃飯一樣。比如QQ在內(nèi)存中存放了一張圖片的數(shù)據(jù),而MSN則無法通過直接讀取內(nèi)存的方式來獲得該圖片的數(shù)據(jù)。這樣做同時也保證了程序的穩(wěn)定性,如果你的進程存在一個錯誤,改寫了一個隨機地址上的內(nèi)存,這個錯誤不會影響另一個進程使用的內(nèi)存。
你知道嗎——進程(Process)是什么
對應用程序來說,進程就像一個大容器。在應用程序被運行后,就相當于將應用程序裝進容器里了,你可以往容器里加其他東西(如:應用程序在運行時所需的變量數(shù)據(jù)、需要引用的DLL文件等),當應用程序被運行兩次時,容器里的東西并不會被倒掉,系統(tǒng)會找一個新的進程容器來容納它。
一個進程可以包含若干線程(Thread),線程可以幫助應用程序同時做幾件事(比如一個線程向磁盤寫入文件,另一個則接收用戶的按鍵操作并及時做出反應,互相不干擾),在程序被運行后中,系統(tǒng)首先要做的就是為該程序進程建立一個默認線程,然后程序可以根據(jù)需要自行添加或刪除相關(guān)的線程。
1.進程插入是什么
獨立的地址空間對于編程人員和用戶來說都是非常有利的。對于編程人員來說,系統(tǒng)更容易捕獲隨意的內(nèi)存讀取和寫入操作。對于用戶來說,操作系統(tǒng)將變得更加健壯,因為一個應用程序無法破壞另一個進程或操作系統(tǒng)的運行。當然,操作系統(tǒng)的這個健壯特性是要付出代價的,因為要編寫能夠與其他進程進行通信,或者能夠?qū)ζ渌M程進行操作的應用程序?qū)⒁щy得多。但仍有很多種方法可以打破進程的界限,訪問另一個進程的地址空間,那就是“進程插入”(Process Injection)。一旦木馬的DLL插入了另一個進程的地址空間后,就可以對另一個進程為所欲為,比如下文要介紹的盜QQ密碼。
2.木馬是如何盜走QQ密碼的
普通情況下,一個應用程序所接收的鍵盤、鼠標操作,別的應用程序是無權(quán)“過問”的??杀I號木馬是怎么偷偷記錄下我的密碼的呢?木馬首先將1個DLL 文件插入到QQ的進程中并成為QQ進程中的一個線程,這樣該木馬DLL就赫然成為了QQ的一部分!然后在用戶輸入密碼時,因為此時木馬DLL已經(jīng)進入QQ 進程內(nèi)部,所以也就能夠接收到用戶傳遞給QQ的密碼鍵入了,真是“家賊難防”?。?
相關(guān)文章
ART OF WEB-SQL-INJECTION第2卷 ORACLE篇
在國外對ORACLE的攻擊一直很收關(guān)注,只是國內(nèi)研究的人不太多,或者技術(shù)不夠~這里我就打響第一炮吧2007-10-10