( http://www.netadmin.com.cn/experience/20050112/4091.asp )
本文出自《網管員世界》2005年第1期 殺毒防毒 欄目
為了保護自己,木馬會想盡辦法來隱藏自己。以往,木馬通常會通過“開始”菜單的“啟動”項或注冊表的HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun項和HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun項來啟動自己,也有的木馬會注冊為系統的“服務”程序,而那些老舊的方法,比如在Autoexec.bat、Config.sys、Winstart.bat、Win.ini、System.ini、Wininit.ini等文件中加載木馬程序,大家更是耳熟能詳。
不過,隨著木馬技術的發展,木馬的隱藏方法已經變得越來越高明了。所謂“知己知彼,百戰不殆”,要想防“馬”,當然要先“知”馬。下面,筆者就為您介紹一些鮮為人知的木馬隱藏方法。
“組策略”中的木馬
通過“組策略”來加載木馬這種方式非常隱蔽,不易為人發現。具體方法是:
點擊“開始”菜單中的“運行”,輸入Gpedit.msc,打開“組策略”。在“本地計算機策略”中順次點擊“用戶配置”→“管理模板”→“系統”→“登錄”,然后雙擊“在用戶登錄時運行這些程序”子項,出現對話框,如圖1所示。
圖 1
在這里進行屬性設置,選定“設置”中的“已啟用”,單擊“顯示”按鈕,會彈出“顯示內容”窗口。單擊“添加”按鈕,出現“添加項目”窗口,在其中的文本框中輸入要自動運行的文件所在的路徑,單擊“確定”按鈕后重新啟動計算機,系統便會在登錄時自動運行所添加的程序。
提示:如果自啟動的文件不是位于%Systemroot%目錄中,則必須指定文件的完整、有效路徑。
如果我們剛才在“組策略”中添加的是木馬,就會出現一個“隱形”的木馬。在“系統配置實用程序”Msconfig中,我們是無法發現該木馬的,因為在注冊表項中,如HKEY_ CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion Run項和HKEY_LOCAL_MACHINESoftwareMicrosoft WindowsCurrentVersionRun項,根本找不到相應的鍵值。所以說,這種加載木馬的方式是非常隱蔽的,對普通用戶的危脅也非常大。
實際上,通過這種方式添加的自啟動程序依然會被記錄在注冊表中,只不過不是在我們所熟悉的那些注冊表項下,而是在注冊表的HKEY_CURRENT_USERSoftware Microsoft WindowsCurrentVersionPoliciesExplorerRun項中加載。所以,如果您懷疑自己的電腦中有木馬,卻找不到它躲在哪兒,可以到上述的注冊表項中去看一看,或者到“組策略”的“用戶配置→管理模板→系統→登錄”下的“在用戶登錄時運行這些程序”中查看一下,也許會有所發現。
暗藏殺機的注冊表項
利用注冊表項加載木馬一直是木馬的最愛,也是我們所熟知的一種手段,不過,有一種新的利用注冊表來隱藏木馬的方法您可能還不知道。具體方法是:
點擊“開始”菜單中的“運行”,輸入Regedit,打開注冊表編輯器。展開注冊表到HKEY_CURRENT_USERSoftware MicrosoftWindows NTCurrentVersionWindows項,新建一個字符串值,命名為“load”,把它的鍵值改為要自啟動程序的路徑即可。
提示:要使用文件的短文件名,即“C:Program Files”應該寫為“C:Progra~1”,且自啟動程序的后面不能帶有任何參數。如果改在注冊表HKEY_USERS用戶ID號Software MicrosoftWindows NTCurrentVersionWindows項加載,則本方法對其他用戶也有效,否則換個用戶名登錄就不管用了。
用這種方法加載木馬,在Windows優化大師的“開機速度優化”選項中將無法看到有木馬程序被加載,如果被有心人利用在這里加載惡意程序或木馬,對大家的威脅將很大。
建議大家以后檢查木馬及病毒程序時特別注意這部分,不給別人可乘之機。另外,這個方法只對Windows 2000/XP/2003有效,使用Windows 9x的用戶不用擔心。
利用AutoRun.inf加載木馬
經常使用光盤的朋友都知道,某些光盤放入光驅后會自動運行,這種功能的實現主要靠兩個文件,一個是系統文件之一的Cdvsd.vxd,一是光盤上的AutoRun.inf文件。Cdvsd.vxd會隨時偵測光驅中是否有放入光盤的動作,如果有,便尋找光盤根目錄下的AutoRun.inf文件。如果存在,就執行里面的預設程序。
不過,AutoRun不僅能應用于光盤中,同樣也可以應用于硬盤中(要注意的是,AutoRun.inf必須存放在磁盤根目錄下才能起作用)。讓我們一起看看AutoRun.inf文件的內容吧。
打開記事本,新建一個文件,將其命名為AutoRun.inf,在AutoRun.inf中鍵入以下內容:
[AutoRun]
Icon=C:WindowsSystemShell32.DLL,21
Open=C:Program FilesACDSeeACDSee.exe
其中,“[AutoRun]”是必須的固定格式,一個標準的AutoRun文件必須以它開頭,目的是告訴系統執行它下面幾行的命令;第二行“Icon=C:WindowsSystemShell32.DLL,21”是給硬盤或光盤設定一個個性化的圖標,“Shell32.DLL”是包含很多Windows圖標的系統文件,“21”表示顯示編號為21的圖標,無數字則默認采用文件中的第一個圖標;第三行“Open=C:Program FilesACDSeeACDSee.exe”指出要運行程序的路徑及其文件名。
如果把Open行換為木馬文件,并將這個AutoRun.inf文件設置為隱藏屬性,我們點擊硬盤時就會啟動木馬。
為防止遭到這樣的“埋伏”,可以禁止硬盤AutoRun功能。在“開始”菜單的“運行”中輸入Regedit,打開注冊表編輯器,展開到HKEY_CURRENT_USERSoftware MicrosoftWindowsCurrentVersionPoliciesExploer主鍵下,在右側窗口中找到“NoDriveTypeAutoRun”,就是它決定了是否執行CDROM或硬盤的AutoRun功能。將其鍵值改為9D,00,00,00就可以關閉硬盤的AutoRun功能,如果改為B5,00,00,00則禁止光盤的AutoRun功能。修改后重新啟動計算機,設置就會生效。
屏幕保護也可能成為木馬的幫兇
Windows的屏幕保護程序對應的是.scr文件,它是PE格式的可執行文件,在默認情況下保存在Windows的安裝目錄下。如果把.scr更名為.exe文件,該程序仍然可以正常啟動,.exe文件更名為.scr文件也照樣可以運行。順便提一下,把.exe文件改名為.com、.pif、.bat后,exe文件仍舊可以自由運行。這在exe文件關聯丟失后非常有用。
在屏幕保護程序中,我們可以設定它的等待時間,這個啟動時間其實是可以在注冊表中設定的。在注冊表項 HKEY_USERS.DEFAULTControl Paneldesktop下面的字符串值ScreenSaveTimeOut記錄的就是屏保程序的等待時間,時間單位為秒,從60秒開始記錄,如果記錄時間小于60秒,則自動定為1分鐘。
提示:是否選擇了屏幕保護程序可以在system.ini文件中看出來。在“開始”菜單的“運行”中輸入msconfig,找到System標簽,找到里面的[boot]小節,可以看到有“SCRNSAVE.EXE=”這一行。在它后面是屏保文件的路徑。如果您設定了屏保程序,這一行前面就會有一個“√”,反之則沒有“√”。
由上面的介紹可以產生一種聯想:如果把.exe文件重命名為.scr文件(假設改為trojan.scr),并在System.ini中添加“SCANSAVE.EXE=C:Program files rojan.scr”,然后修改注冊表中的HKEY_USERS.DEFAULTControl Paneldesktop下的字符串值ScreenSaveTimeOut,把其鍵值改為60,則系統只要閑置一分鐘該文件就會被啟動。
防范這種攻擊的方法就是禁止使用屏幕保護功能。要想一次性取消屏幕保護功能,可以通過修改注冊表來實現。打開注冊表編輯器,找到HKEY_CURRENT_USER ControlPaneldesktopScreenSaveActive子鍵,將“ScreenSaveActive”改為“0”,就可以禁止使用屏幕保護功能。
控制面板中的木馬
控制面板的各個選項實際上是以后綴名為cpl的文件單獨存在的,再加上Windows安裝目錄中的control.exe和control.ini文件,就構成控制面板的全部組成部分。
每一個cpl文件都對應“控制面板”中的一個選項,例如desk.cpl對應“桌面屬性”、inetcpl.cpl對應“Internet屬性”等。由于.cpl文件的特殊性,需要使用RunDll32.exe來啟動該文件,換句話說,控制面板中的任何一個選項都可以通過RunDll32.exe來調用。
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就會在用戶機器啟動的時候被調用。(注:如果mycpl.cpl保存在默認目錄中,可以不加路徑直接調用,否則必須加上路徑。)控制面板在執行的時候會加載System子目錄中的所有*.cpl文件,所以只要把這個cpl木馬放在System(Windows 9x)或System32(Windows 2000/XP)子目錄中就可以達到目的。要提醒大家的是,如果mycpl.cpl真是木馬的話,那么別人一定會給它改個名字,或替換掉系統中那些不常用的cpl文件,使您疏于察覺。
是不是只有把cpl文件放到System(Windows 9x)或System32(Windows 2000/XP)子目錄下才會被加載呢?答案是否定的。如果您的控制面板程序不在Windows目錄,假設在D:ok下,想讓它在控制面板里顯示,只需編輯control.ini文件,在[MMCPL]小節里面加入“mycpl.cpl=D:okmycpl.cpl”就可以了。如果不想讓cpl文件顯示在控制面板中,依然要從control.ini文件入手,只需在[don't load]小節中加入“mycpl.cpl=no”,這個mycpl.cpl文件就不會被加載了。
如果有人利用這種方式進行攻擊,防范方法是經常檢查注冊表的啟動項,發現用RunDll32.exe調用的.cpl文件就殺無赦。在將這個注冊表鍵值刪除后,還要按鍵值提供的路徑找到這個cpl文件,把它也刪除掉。
可怕的超長目錄中隱藏的木馬
給我們下木馬的人要想在我們的電腦中隱藏木馬文件,會絞盡腦汁,利用Windows系統建立超長目錄然后在其中隱藏木馬就是手段之一。
我們可以做這樣一個試驗:打開“資源管理器”,在任意一個磁盤(假設是E盤)下建立一個目錄,假設為good,然后進入此目錄,在下面再建立一個子目錄,假設為123,然后在123子目錄下建立一個子目錄test,現在test這個目錄的絕對路徑就是:E:goodS est。接下來把您要隱藏的目錄和文件都拷貝test子目錄下。然后點擊“向上”按鈕,來到123子目錄,對著它點擊鼠標右鍵,在彈出菜單中選擇“重命名”,把這個123子目錄改名為“1111……1111”,能寫多長就寫多長。接下來點擊“向上”按鈕,來到good目錄,用同樣的辦法把它也重命名,假設改名為goodluck123,現在test子目錄的絕對路徑就是E:goodluck123I1……1111 est。這時,當您想訪問該目錄時,會出現一個提示:無法訪問此文件夾,路徑太長,如圖2所示。
圖2
而且,這個目錄在視窗界面下無法看到里面的內容,在DOS下同樣如此,所以,該目錄和里面的文件就被巧妙地隱藏起來了。誰能想到里面會有個test子目錄呢,誰能想到test子目錄下還有文件和文件夾呢?木馬文件就這樣巧妙地隱藏起來了。
為什么會這樣呢?其實,這只是利用了Windows系統的一個小Bug,即Windows目錄的絕對路徑不能超過254個字符,如果您建立的目錄的絕對路徑超過254個字符的話,系統是看不到的。反過來講,系統也不允許您直接建立一個絕對路徑長度超過254個字符的目錄,而我們前面所做的就是迂回地建立了一個目錄,其絕對路徑超過了254個字符,所以別人就無法訪問里面包含的子目錄和文件了,變相地把目錄和文件隱藏了起來。更妙的是,整個目錄根本無法直接刪除,進行刪除操作時會彈出一個窗口,提示我們“無法刪除*.*:找不到文件。請確定指定的路徑及文件名是否正確”,在DOS下或是使用工具軟件Windows Commander等也同樣無法刪除該目錄。
讓我們再用其他軟件來檢視一下利用這種方法來隱藏木馬的效果如何。大家知道,一般的隱藏文件或目錄的方法,如特殊空格法、給文件夾設定一個空白圖標法、修改注冊表隱藏目錄法等,都會在文件管理軟件Windows Commander、看圖軟件ACDSee或壓縮軟件WinZIP或WinRAR中顯露原形。而用本方法隱藏的目錄不會被顯示在上述軟件中,它們只能看到受保護文件夾的上一層目錄,而無法看到里面隱藏的內容。
以ACDSee為例,左上窗口有Windows樹型目錄結構,右邊主窗口能顯示文件夾中的文件,包括具有“隱藏”屬性的文件。找到我們隱藏目錄和文件的那個E盤,看,根本無法看到goodluck123文件夾里面的test目錄,如圖3所示。同理,使用殺毒軟件也無法掃描該文件夾的內容,在資源管理器中也無法刪除該目錄。
為了更好地隱藏木馬文件,入侵者還可能在此方法的基礎上略微變通一下。比如,進入C: ecycled(回收站)目錄下,用文中剛開始提到的方法建立超長目錄,并把要隱藏的木馬文件移動到其中,選定這些文件后按右鍵,在彈出菜單中選擇“屬性”,將其屬性設置為“隱藏”,這樣,在Windows中就看不到這些文件了,清空回收站也依然存在。而且,入侵者利用特殊文件夾同樣可以取得這樣的功效,比如C:windows onts等。
圖3
接下來修改一下注冊表,讓文件更徹底地隱藏起來。在“開始”菜單的“運行”中輸入Regedit,打開注冊表編輯器,展開到HKEY_LOCAL_MACHINESoftwareMicrosoftWindows CurrentVersionexplorerAdvancedFolderHiddenSHOWALL分支,修改DWORD值CheckedValue的鍵值為0(默認為1,如果沒有該DWORD值,可以新建),如圖4所示,關閉注冊表編輯器,按F5鍵刷新桌面,這些文件就隱藏得更深了。我們進入隱藏文件的那個回收站后,將什么都看不到。
圖4
利用這種方法隱藏目錄和文件非常巧妙,原因有三:一是別人想不到回收站中藏有秘密;二是修改注冊表后這些隱藏起來的文件和目錄更隱蔽了,在Windows下根本發現不了;三是即便發現了這些隱藏的目錄和文件,也會由于絕對路徑太長而無法進入該目錄查看文件。這就讓木馬可以在我們的電腦中“安居樂業”了。
對方要在我們的電腦中建立如此特殊的目錄,必定要進行遠程操作,所以我們平時必須要及時給系統打補丁,把系統漏洞都堵上,再安裝上網絡防火墻,不隨意瀏覽不了解的網頁,不隨意查看陌生的電子郵件,做到這些,對普通用戶來說就會安全多了。
如果發現系統中有這樣特殊的文件夾存在,只要給最外層的目錄改名,比方說將goodluck123改名為g,然后就可以進入下一級目錄,進而可以進入test子目錄,進行相關的操作。當然,您也可以自己編寫一個程序來讀這個目錄。
木馬對文件關聯的利用
我們知道,在注冊表HKEY_LOCAL_MACHINE SoftwareMicrosoftWindowsCurrentVersionRun下可以加載程序,使之開機時自動運行,類似“Run”這樣的子鍵在注冊表中還有幾處,均以“Run”開頭,如RunOnce、RunServices等。除了這種方法,還有一種修改注冊表的方法也可以使程序自啟動。
具體說來,就是更改文件的打開方式,這樣就可以使程序跟隨您打開的那種文件類型一起啟動。舉例來說,打開注冊表,展開注冊表到HKEY_CLASSES_ROOTexefileshell
opencommand,這里是exe文件的打開方式,默認鍵值為:“%1”%*。如果把默認鍵值改為Trojan.exe“%1”%*,您每次運行exe文件,這個Trojan.exe文件就會被執行。木馬灰鴿子就采用關聯exe文件的打開方式,而大名鼎鼎的木馬冰河采用的是也與此相似的一招——關聯txt文件。
對付這種隱藏方法,主要是經常檢查注冊表,看文件的打開方式是否發生了變化。如果發生了變化,就將打開方式改回來。最好能經常備份注冊表,發現問題后立即用備份文件恢復注冊表,既方便、快捷,又安全、省事。
木馬對設備名的利用
大家知道,在Windows下無法以設備名來命名文件或文件夾,這些設備名主要有aux、com1、com2、prn、con、nul等,但Windows 2000/XP有個漏洞可以以設備名來命名文件或文件夾,讓木馬可以躲在那里而不被發現。
具體方法是:點擊“開始”菜單的“運行”,輸入cmd.exe,回車進入命令提示符窗口,然后輸入md c:con\命令,可以建立一個名為con的目錄。默認請況下,Windows是無法建立這類目錄的,正是利用了Windows的漏洞我們才可以建立此目錄。再試試輸入md c:aux\命令,可以建立aux目錄,輸入md c:prn\可以建立prn目錄,輸入md c:com1\目錄可以建立Com1目錄,而輸入md c: ul\則可以建立一個名為nul的目錄。在資源管理器中依次點擊試試,您會發現當我們試圖打開以aux或com1命名的文件夾時,explorer.exe失去了響應,而許多“牧馬人”就是利用這個方法將木馬隱藏在這類特殊的文件夾中,從而達到隱藏、保護木馬程序的目的。
現在,我們可以把文件復制到這個特殊的目錄下,當然,不能直接在Windows中復制,需要采用特殊的方法,在CMD窗口中輸入copy muma.exe
\.c:aux\
命令,就可以把木馬文件muma.exe復制到C盤下的aux文件夾中,然后點擊“開始”菜單中的“運行”,在“運行”中輸入c:aux muam.exe,就會成功啟動該木馬。我們可以通過點擊文件夾名進入此類特殊目錄,不過,如果您要試圖在資源管理器中刪除它,會發現這根本就是徒勞的,Windows會提示找不到該文件。
由于使用del c:aux\命令可以刪除其中的muma.exe文件,所以,為了達到更好的隱藏和保護效果,下木馬者會把muma.exe文件也改名,讓我們很難刪除。具體方法就是在復制木馬文件到aux文件夾時使用命令copy muma.exe
\.c:con.exe
,就可以把木馬文件muma.exe復制到aux目錄中,并且改名為con.exe,而con.exe文件是無法用普通方法刪除的。
可能有的朋友會想,這個con.exe文件在“開始”菜單的“運行”中無法運行啊。其實不然,只要在命令行方式下輸入cmd /c
\.c:con
就可以運行這個程序了。在運行時會有一個cmd窗口一閃而過,下木馬者一般來說會對其進行改進,方法有很多,可以利用開機腳本,也可以利用cmd.exe的autorun:在注冊表HKEY_LOCAL_ MACHINESoftwareMicrosoftCommand Processor下建一個字串AutoRun,值為要運行的.bat文件或.cmd文件的路徑,如c:winntsystem32auto.cmd,如果建立相應的文件,它的內容為@\.c:con,就可以達到隱蔽的效果。
對于這類特殊的文件夾,發現后我們可以采用如下方法來刪除它:先用del
\.c:con.exe
命令刪除con.exe文件(該文件假設就是其中的木馬文件名),然后再用rd
\.c:aux
命令刪除aux文件夾即可。
好了,文章到這里就結束了。由于水平有限,文中如有不正確或值得商榷的地方歡迎大家批評指點,另外,寫作時曾參閱過網上高手們的帖子,受益匪淺,在此一并謝過!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
