上一篇關於組策略防病毒,其中一個很重要的地方就在於降低IE的許可權,如何降低IE許可權呢,網上提到過在計算機建立多個使用者,讓IE採用一個不活動的使用者來執行,此方法雖然可以,然而在公司這樣的環境卻難以應用,畢竟此方法需要一臺計算機一臺的去手工設定.
由於上文提到的原因,部分軟體的不規範導致必須要用管理員許可權才能正常執行.因此,大部分管理員為了省事,都給了使用者管理員許可權.這樣導致,計算機上任何程式都是以管理員許可權來執行,如果開啟帶有網頁***的網頁,由於IE是管理員許可權,那麼IE接下來被***利用,向系統資料夾複製檔案,修改登錄檔等等事件都會出現了.於是,中毒了.雖然不斷的在出補丁修復,但是這種亡羊補牢的辦法.總是慢半拍.
組策略在路徑規則裡面設定
%ProgramFiles%Internet Explorer 基本使用者
這樣IE就成了基本使用者,從IE上執行的網頁中即使有漏洞,由於繼承IE的基本使用者許可權,也難以有大的破壞了
同理可以設定其他瀏覽器為基本使用者,比如遨遊,TT瀏覽器等等.
只指定檔名,而不指定可以匹配任意路徑,也就是使用者不管把瀏覽器安裝在硬碟上什麼地方,只要不修改可執行檔名,都能匹配上.
另一大病毒來源,就是U盤,如果你發現你的驅動器根目錄下突然多了一個autorun.inf,哈哈,恭喜你,可能你中毒了.關於組策略防U盤病毒的策略,網上討論也很多,但是大多數的策略是錯誤的.如 ?:autorun.inf 不允許的
另外,組策略裡面關閉自動播放,是不能防止autorun.inf裡面的程式執行的,有興趣的朋友可以自己試驗.
根據上面的討論,發現有效封堵U盤autorun.inf的辦法只有
實際可行的方法:
1. 禁止explorer.exe讀取autorun.inf (HIPS之FD)
1. 禁止explorer.exe讀取autorun.inf (HIPS之FD)
2. 禁止explorer.exe寫入MountPoints2的shell下面的open、explorer、autorun、command等項
,即:
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2*shellopen
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2*shellautorun
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2*shellexplorer
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2*shell*Command
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2*shellautorun
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2*shellexplorer
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2*shell*Command
或者將整個MountPoints2項封住,禁止寫入
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2
(登錄檔許可權、HIPS之RD)
3. 禁止U盤的程式啟動 (軟體限制策略、HIPS之AD)
4. 用沙盤限制 (DW的非信任、SBie的強制執行等等)
5. 自定義有害檔案:autorun.inf (一些殺軟可以做到,例如咖啡8.5i)
可以考慮的方案是2和3.
2的原理是雖然插入的U盤有毒,但不能修改登錄檔,也就是無法把autorun..inf中定義的鍵值插入到指定的位置,這樣auotrun.inf中定義的可執行檔案依然無法執行
3,的辦法比較簡單,禁止U盤上的所有可執行檔案執行.缺點在於要確定U盤的驅動器碟符.
4和5需要第三方軟體來支援了.如果想簡單的話.不妨用方法2
當前這樣做的前提是你的機器沒有中autorun..inf.也就是該鍵值是清潔的.如果有問題,請自行用regedit開啟登錄檔來編輯該鍵值.把病毒加入的鍵值刪除掉
開啟登錄檔編輯器.右鍵單擊MountPoints2項,選擇許可權,然後把裡面的administrator
administrators.everyone,system等使用者的許可權從完全控制改為讀取,然後點選高階.選中
“用在此顯示的可以應用到子物件的專案替代所有子物件的許可權專案”,然後確定
OK,現在MountPoints2項和它的子項都是隻讀了.在你的U盤上自己建一個autorun.inf
[autorun]
OPEN=NOTEPAD.exe
shellopen=開啟(&O)
shellopenCommand=NOTEPAD.exe
shellopenDefault=1
shellexplore=資源管理器(&X)
shellexploreCommand=NOTEPAD.exe
icon=game.ico
儲存在U盤根目錄.然後拔掉U盤再插上,雙擊U盤的碟符,看看能否執行記事本,不能了吧.
以上是單機防禦的辦法.對於AD活動目錄,我們可以自己寫一個登入指令碼.讓所有電腦登入域的時候自動執行指令碼
命令列下修改登錄檔鍵值的工具,微軟自己就有regini.exe
我們看看用法
建立一個txt檔案,檔名任意,如read.txt
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2
[2 8 19]
[2 8 19]
然後在cmd下執行
regini.exe read.txt
然後你再開啟regedit.exe看看,鍵值的許可權是不是變成只讀了?
可惜此方法有個缺陷,就是子鍵值不能繼承父鍵值的許可權
在網上找到一個第三方的修改工具setacl.exe
可以下載到最新的2.0版本
最新版的用法暫時還沒研究明白
這裡給出一箇舊版本(0.904以下都可以)的用法
rem 解釋:
rem setacl:設定 —————————–
rem CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun: 當前使用者登錄檔分支啟動RUN鍵值
rem registry:型別為登錄檔
rem deny:專案為拒絕訪問
rem administrator:訪問物件為administrator
rem full:許可權是:完全訪問
rem 簡單的講這句話的意思就是:
rem 將登錄檔HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun鍵值設定為administrator使用者無法訪問
rem 專案有四種 deny(拒絕) grant(允許) set(設定) revoke(撤消)
rem 許可權有兩種 FULL 完全訪問 READ 只讀訪問
rem 所以我們要恢復上面被拒絕的項只需要用一下下面的命令:
rem setacl CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun /registry /grant administrator /full
rem 下面是各個主分支開頭部分的對照:
rem setacl machineSOFTWAREMicrosoftWindowsCurrentVersionRun /registry /deny administrator /full
rem setacl USERSOFTWAREMicrosoftWindowsCurrentVersionRun
rem setacl MACHINESYSTEMCurrentControlSetServices /registry
rem setacl CLASSES_ROOTexefileshellopencommand
rem setacl CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2 /registry /deny everyone /full
rem setacl:設定 —————————–
rem CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun: 當前使用者登錄檔分支啟動RUN鍵值
rem registry:型別為登錄檔
rem deny:專案為拒絕訪問
rem administrator:訪問物件為administrator
rem full:許可權是:完全訪問
rem 簡單的講這句話的意思就是:
rem 將登錄檔HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun鍵值設定為administrator使用者無法訪問
rem 專案有四種 deny(拒絕) grant(允許) set(設定) revoke(撤消)
rem 許可權有兩種 FULL 完全訪問 READ 只讀訪問
rem 所以我們要恢復上面被拒絕的項只需要用一下下面的命令:
rem setacl CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun /registry /grant administrator /full
rem 下面是各個主分支開頭部分的對照:
rem setacl machineSOFTWAREMicrosoftWindowsCurrentVersionRun /registry /deny administrator /full
rem setacl USERSOFTWAREMicrosoftWindowsCurrentVersionRun
rem setacl MACHINESYSTEMCurrentControlSetServices /registry
rem setacl CLASSES_ROOTexefileshellopencommand
rem setacl CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2 /registry /deny everyone /full
rem 解釋:
rem setacl:程式
rem CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun: 當前使用者登錄檔分支啟動RUN鍵值
rem registry:型別為登錄檔
rem deny:專案為拒絕訪問
rem administrator:訪問物件為administrator
rem full:許可權是:完全訪問
rem 簡單的講這句話的意思就是:
rem 將登錄檔HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun鍵值設定為administrator使用者無法訪問
rem 專案有四種 deny(拒絕) grant(允許) set(設定) revoke(撤消)
rem 許可權有兩種 FULL 完全訪問 READ 只讀訪問
rem 所以我們要恢復上面被拒絕的項只需要用一下下面的命令:
rem setacl CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun /registry /grant administrator /full
rem 下面是各個主分支開頭部分的對照:
rem setacl machineSOFTWAREMicrosoftWindowsCurrentVersionRun /registry /deny administrator /full
rem setacl USERSOFTWAREMicrosoftWindowsCurrentVersionRun
rem setacl MACHINESYSTEMCurrentControlSetServices /registry
rem setacl CLASSES_ROOTexefileshellopencommand
所以,要禁止autorun.inf檔案自動播放只需要執行下面的命令即可
setacl CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2 /registry /deny everyone /full
注意這裡的物件是everyone,也就是說拒絕任何人完全控制此鍵,也就禁止了administrators之類的
rem setacl:程式
rem CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun: 當前使用者登錄檔分支啟動RUN鍵值
rem registry:型別為登錄檔
rem deny:專案為拒絕訪問
rem administrator:訪問物件為administrator
rem full:許可權是:完全訪問
rem 簡單的講這句話的意思就是:
rem 將登錄檔HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun鍵值設定為administrator使用者無法訪問
rem 專案有四種 deny(拒絕) grant(允許) set(設定) revoke(撤消)
rem 許可權有兩種 FULL 完全訪問 READ 只讀訪問
rem 所以我們要恢復上面被拒絕的項只需要用一下下面的命令:
rem setacl CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun /registry /grant administrator /full
rem 下面是各個主分支開頭部分的對照:
rem setacl machineSOFTWAREMicrosoftWindowsCurrentVersionRun /registry /deny administrator /full
rem setacl USERSOFTWAREMicrosoftWindowsCurrentVersionRun
rem setacl MACHINESYSTEMCurrentControlSetServices /registry
rem setacl CLASSES_ROOTexefileshellopencommand
所以,要禁止autorun.inf檔案自動播放只需要執行下面的命令即可
setacl CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2 /registry /deny everyone /full
注意這裡的物件是everyone,也就是說拒絕任何人完全控制此鍵,也就禁止了administrators之類的
我們要封鎖MountPoints2,需要下列命令
setacl CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2 /registry /deny everyone /full
同樣道理,我們還可以鎖住一些其他的鍵值來保護計算機
比如開機自動執行的程式
setacl CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun /registry /deny administrator /full
Image映象劫持(防止病毒幹掉我們的防毒軟體)
setacl.exe “machineSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options” /registry /deny administrators /full
setacl.exe “machineSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options” /registry /deny system /full
setacl.exe “machineSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options” /registry /deny system /full
最後提供一個從[url]http://www.zychina.com.cn/article/163/214/10323.html[/url]找到的指令碼,大家可以參考一下這個思路.
需要說明的是,開放給使用者的許可權越多.帶來的潛在危害越大,但是限制過多,又會造成使用者使用不便,如何權衡,請各位根據自己的實際環境來調整.寫成通用的指令碼難度比較大,畢竟大家情況都不不一樣,本文僅僅提供思路.具體的發揮就看大家自己了.
另外,由於計算機技術不斷髮展本文所提供的辦法也不是就能永遠有效下去
希望大家繼續研究,不斷改進.
關於組策略的3D保護,第一篇提到了AD,本文提到了RD.還有FD的保護,也就是NTFS許可權保護.將會在後面的文章中寫出.
高手說,運用好HIPS,加上合適的規則,理論上可以裸奔.哈哈.不過不推薦普通使用者這樣做.我們要的是綜合防禦,立體防線.在簡單和複雜之間取得平衡.
再次感慨,許可權才是王道…由此也能看到微軟和linux的兩種不同風格
前者是預設開放所有,然後逐步的禁止而後者是禁止所有,然後逐步開放允許的
孰是孰非已經不是我們幾句話可以說的明白的東西了.有點跑題了哈.就此打住.