萬盛學電腦網

 萬盛學電腦網 >> 健康知識 >> 揪出系統中秘密隱藏的木馬(下)

揪出系統中秘密隱藏的木馬(下)

  控制面板中的木馬    控制面版是Windows的基本組件,控制面板中的各個選項實際上是以cpl為後綴名的文件單獨存在的,根據操作系統的不同這些文件所在的位置也有所不同,Windows 9x/Me下這些cpl文件位於Windows安裝目錄下的System子目錄中,而Windows NT/2000/XP下則位於Windows安裝目錄下的System32子目錄中。這些cpl文件再加上Windows安裝目錄中的control.exe和control.ini文件,就是控制面板的全部組成部分。    每一個cpl文件都對應“控制面版”中的一個選項,例如desk.cpl對應“桌面屬性”、inetcpl.cpl對應“Internet屬性”等等。由於.cpl文件的特殊性,需要使用RunDll32.exe來啟動該文件,換句話說,控制面板中的任何一個選項都可以通過RunDll32.exe調用。RunDll32.exe是Windows動態連接庫(DLL)管理工具,可以用來在命令行下執行動態鏈接庫中的某個函數或者功能模塊(DLL是Windows系統的另外一種可執行文件,是Dynamic Link Library的縮寫。DLL是Windows的基礎,所有的API函數都是在DLL中實現的。它本身並沒有程序邏輯,只是由多個功能函數構成,不能獨立運行,必須由其它進程加載並調用)。另外Windows安裝文件夾下還有一個RunDll.exe,也是動態連接庫理工具。雖然不同版本的Windows都提供RunDll.exe和RunDll32.exe文件,但是在Windows NT/2000/XP下卻只支持32位的RunDll32.exe,只有Windows 9x/Me這種16位和32位混合使用的操作系統才同時對二者提供支持。    下面我們看一個利用RunDll32.exe調用shell32.dll中的Control_RunDLL,來打開desk.cpl的第一個屬性頁的例子。點擊“開始”菜單,選擇“運行”,輸入:RunDll32 shell32.dll,Control_RunDLL desk.cpl,,0(注意是兩個逗號),回車後,將打開“顯示 屬性”對話框的“背景”窗口(圖3)!這說明這些.cpl文件是可執行的。換個思路想一想,如果用戶把一個可執行的類似動態連接庫DLL的.cpl文件放入System子目錄中,則在控制面板中可以看到其這個cpl文件的圖標,並且是可以執行的!這裡說的“類似動態連接庫DLL的.cpl文件”是指這類cpl文件可以像DLL文件那樣被其它進程加載並調用,就像我們剛剛看到的那裡例子一樣。    用RunDll32.exe調用控制面板程序的格式如下:在“開始”菜單的“運行”中或命令行下輸入:RunDll32 shell32.dll,Control_RunDLL *.cpl,,X,其中shell32.dll為被調用的DLL文件,意思為調用shell32.dll中的Control_RunDLL來打開desk.cpl文件。而“*.cpl”為你想調用的cpl文件的路徑和文件名。最後的“X”為對應cpl文件的頁數:從0開始,0為第一頁(如desk.cpl,,0代表“顯示 屬性”的“背景”),1為第二頁(如desk.cpl,,1代表“顯示 屬性”的“屏幕保護程序”),依此類推。 要注意的是:shell32.dll和Control_RunDLL兩者之間只能以“,”分隔,逗號之後不能有空格,如果這裡出錯的話,不會得到任何提示。    根據上面的原理,就可以自己寫一個無窗口或隱藏窗口的控制面板程序,將其寫進注冊表的啟動項,使之可以自啟動。如果你編寫的控制面板程序是木馬的話,則不僅中木馬者感到不知所然,就連木馬克星等軟件也會不知所措!    具體步驟就是在注冊表啟動項中加入RunDll32 shell32.dll,Control_RunDll mycpl.cpl。這樣,這個mycpl.cpl就會隨用戶機器啟動的時候被調用—就象DLL文件被執行一樣!注意,mycpl.cpl如果保存在默認目錄中,可以不加路徑直接調用,否則就要加上路徑。控制面板在執行的時候會加載System子目錄中的所有*.cpl文件,所以只要把這個cpl木馬放在System(Win9x)或System32(Win2K/XP)子目錄中就可以達到目的。要提醒大家的是,如果mycpl.cpl真是木馬的話,那麼別人一定會給它改個名字,或替換掉系統中那些不常用的cpl文件,使你疏於察覺。    是不是只有把cpl文件放到System或System32子目錄下才會被加載呢?不是的!如果你的控制面版程序不在Windows目錄,假設在D:\ok下,而你想讓它在控制面版裡顯示。你只要編輯control.ini文件,在[MMCPL]小節裡面加入:mycpl.cpl=D:\ok\mycpl.cpl就可以了。如果不想讓cpl文件顯示在控制面板中該怎麼辦呢?依然從control.ini文件入手!打開該文件,在[don't load]小節中加入:mycpl.cpl=no,那麼這個mycpl.cpl文件就不被加載了。    如果有人利用這種方式進行攻擊,防范方法是經常檢查注冊表的啟動項,發現用RunDll32.exe調用.cpl文件的就殺無赦,斬立決!將這個注冊表鍵值立刻刪除,然後按鍵值提供的路徑找到這個cpl文件把它刪除。    超長目錄中隱藏的木馬    給我們下木馬的人要想在我們的電腦中隱藏木馬文件,會絞盡腦汁,利用Windows系統建立超長目錄然後在其中隱藏木馬就是手段之一。    請大家和我一起做一個實驗。打開“資源管理器”,在任意一個磁盤(假設是E盤)下建立一個目錄,假設為good,然後進入此目錄,在它的下面再建立一個子目錄,假設為123,然後在123子目錄下再建立一個子目錄test,現在test這個目錄的絕對路徑就是:E:\good\123\test。接下來把你要隱藏的目錄和文件都拷貝test子目錄下。然後點擊“向上”按鈕,來到123子目錄,對著它點擊鼠標右鍵,在彈出菜單中選擇“重命名”,把這個123子目錄改名為1111……1111,這個“1111……1111”字串能寫多長就寫多長(一直按著數字鍵1不松手,直到沒有反應為止),5自學網,接下來,再點擊“向上”按鈕,來到最外層的good目錄,用同樣的辦法把它也重命名,假設改名為goodluck123,現在test子目錄的絕對路徑就是E:\goodluck123\1111……1111\test。試試看,看你能否進入test子目錄,呵呵,會出現一個提示:無法訪問此文件夾,路徑太長(圖5)。既然在視窗界面下無法看到裡面的內容,那麼到DOS下試試看能否進入此文件夾,還是不行!這樣隱藏在裡面的目錄和文件就被巧妙的隱藏起來了!誰能想到裡面會有個test子目錄呢?誰能想到test子目錄下還有文件和文件夾呢?木馬文件就這樣堂而皇之的隱藏起來了!     關於絕對路徑的小提示:大家都知道,在我們平時使用計算機時要找到需要的文件就必須知道文件的位置,而表示文件的位置的方式就是路徑,例如只要看到這個路徑:c:/apache/cgi-bin/image/photo.jpg我們就知道photo.jpg文件是在c盤的apache目錄下的image子目錄中。類似於這樣完整的描述文件位置的路徑就是絕對路徑。     為什麼會這樣呢?其實,這只是利用了Windows系統的一個小Bug,這個Bug就是Windows目錄的絕對路徑是不能超過254個字符的,如果你建立的目錄的絕對路徑超過254個字符的話,系統是絕對看不到的。反過來講,系統也不允許你直接建立一個超過絕對路徑長度超過254個字符的目錄,而我們前面所做的就是迂回建立了一個目錄,其絕對路徑超過了254個字符,所以別人就無法訪問其裡面包含的子目錄和文件了,這樣變相地把目錄和文件隱藏了起來!更妙的是整個目錄根本無法直接刪除,不信試試看,會彈出一個窗口,提示我們:無法刪除*.*:找不到文件,請確定指定的文件名是否正確。換到DOS下試試也無法刪除該目錄,5自學網,再試試工具軟件Windows Commander等同樣無法刪除該目錄!哈哈,沒想到還多了一層保護哦。當然,如果你真的想刪除該目錄的話,我們也有辦法,繼續往下看就知道怎麼辦了。    讓我們再用其他軟件來檢驗一下利用這種方法隱藏木馬的效果如何。大家知道,一般的隱藏文件或目錄的方法,如特殊空格法、給文件夾設定空白圖標法、修改注冊表隱藏目錄法等,都會在文件管理軟件Windows Commander、看圖軟件ACDSee或壓縮軟件WinZIP或WinRAR中顯露原形!而用本方法隱藏的目錄不會被顯示在上述軟件中,它們只能看到受保護文件夾的上一層目錄,而無法看到裡面隱藏的內容!以ACDSee為例,打開ACDSee,可以看到它的界面與資源管理器很相似。左上窗口有Windows樹型目錄結構,右邊主窗口能顯示文件夾中的文件,包括具有“隱藏”屬性的文件。找到我們隱藏目錄和文件的那個E盤,看,根本無法看到goodluck123文件夾裡面的test目錄(圖6)!同理,使用殺毒軟件也無法掃描該文件夾的內容,而且在資源管理器中是無法刪除該目錄的,所以說這種方法對木馬來說是一種非常好的保護方法!     為了更好的隱藏木馬文件,對方還會在此方法的基礎上略微變通一下,這樣隱藏效果就會更好!首先,對方會進入C:\recycled(即回收站)目錄下,用文中剛開始提到的方法建立超長目錄,並把要隱藏的木馬文件移動到其中,選定這些文件後按右鍵在彈出菜單中選擇“屬性”,將其屬性設置為“隱藏”,這樣在Windows就看不到這些文件了,並且清空回收站也依然還存在!是不是非得利用回收站才可以呢?當然不是!只要是特殊文件夾就可以起到和回收站同樣的功效,如c:\windows\fonts等,所以你也可以把秘密文件和目錄放到系統字體目錄下。    接下來修改一下注冊表,讓文件更徹底地隱藏起來。在“開始”菜單的“運行”中輸入Regedit,打開注冊表編輯器,展開到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows  CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL分支,修改DWORD值CheckedValue的鍵值為0(默認為1,如果沒有該DWORD值可以新建),如圖所示(圖7),關閉注冊表編輯器,按F5鍵刷新桌面。現在這些文件隱藏得就更深了,不信你可以看看,看能否看到它們:進入“我的電腦”中,點擊“工具”→“文件夾選項”→“查看”→“顯示所有文件和文件夾”(圖8),本來這樣可以查看所有隱藏的文件,但進入隱藏文件的那個回收站後,什麼也沒有發現!      
copyright © 萬盛學電腦網 all rights reserved