查看單個文章
舊 2005-06-27, 03:59 AM   #3 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

螢幕保護也可能成為木馬的幫兇

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目錄,假設在Dk下,想讓它在控制台裡顯示,只需編輯control.ini文件,在[MMCPL]小節裡面加入「mycpl.cpl=Dkmycpl.cpl」就可以了。如果不想讓cpl文件顯示在控制台中,依然要從control.ini文件入手,只需在[don't load]小節中加入「mycpl.cpl=no」,這個mycpl.cpl文件就不會被載入了。


如果有人利用這種方式進行攻擊,防範方法是經常檢查註冊表的啟動項,發現用RunDll32.exe使用的.cpl文件就殺無赦。在將這個註冊表鍵值移除後,還要按鍵值提供的路徑找到這個cpl文件,把它也移除掉。
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1630 篇, 收花: 3204 次