在企業環境中部署 Microsoft Windows 惡意軟體移除工具
http://www.microsoft.com/taiwa...A_0503-1.aspx Microsoft Windows 惡意軟體移除工具是設計用來與上面所列的系統搭配使用的。未列於清單中的系統 (包括所有版本的內嵌作業系統) 並未經過測試,因此不受支援。簡介Microsoft 已經發行 Microsoft Windows 惡意軟體移除工具,以協助您移除電腦中特定或普遍的惡意軟體。
本文中的資訊只適用於工具的企業部署。強烈建議您檢閱下列「Microsoft 知識庫」文件,其中包含有關工具及下載位置的一般資訊:
890830 Microsoft Windows 惡意軟體移除工具協助移除 Windows Server 2003、Windows XP 或 Windows 2000 電腦中目前常見的特定惡意軟體
此工具主要是為了系統上沒有安裝現有、最新防毒產品的非企業使用者而提供的。不過,企業環境也可以部署此工具,來加強現有的防護,做為深度防禦策略的一部份。如果要在企業環境中部署此工具,您可以使用下列一或多個方法:
- SMS 軟體套件
- 群組原則電腦的啟動指令碼
- 群組原則電腦的使用者登入指令碼
如需有關如何透過 Windows Update 及「自動更新」部署工具的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
890830 Microsoft Windows 惡意軟體移除工具協助移除 Windows Server 2003、Windows XP 或 Windows 2000 電腦中目前常見的特定惡意軟體
這個工具的目前版本不支援下列部署技術:
- Software Update Services (SUS)
- Windows Update 服務 (WUS)
- Windows Update 類別目錄
- 為遠端電腦執行此工具
此外,Microsoft Baseline Security Analyzer (MBSA) 偵測不到工具是否在執行。本文包含有關如何檢查工具的執行作業,以做為部署一部份的資訊。
程式碼範例
這裡所提供的指令碼及步驟僅做為範例之用。客戶必須測試這些範例指令碼及案例,並適當地加以修改,才能運用在自己的環境中。您將必須根據環境中的設定,變更 ServerName 及 ShareName 。
下列程式碼範例可以執行下列操作:
- 以無訊息模式執行工具
- 擷取傳回碼並附加至工具的記錄檔
- 將記錄檔複製至事先設定的網路共用
- 以執行工具的電腦名稱及目前使用者的使用者名稱做為記錄檔名稱的開頭。您必須依照<初始安裝和設定>一節中的指示執行,在共用上設定適當的使用權限。
REM In this example, the script is namedRunMRT.cmd.
REM The Sleep.exe utility is used to delay the execution of the tool when used as a
REM startup script. (See the "Known issues" section for details.)
@echo off
call \\ServerName\ShareName\Sleep.exe 5
Start /wait \\ServerName\ShareName\Windows-KB890830-ENU.exe /q
echo RETURN_CODE: %ERRORLEVEL% >> %windir%\debug\mrt.log
copy %windir%\debug\mrt.log \\ServerName\ShareName\Logs\%computername%_%username%_mrt.log
注意 在這個程式碼範例中,ServerName 是伺服器名稱的預留位置,而 ShareName 是共用名稱的預留位置。
初始安裝和設定
本節主要提供給使用啟動指令碼或登入指令碼來部署此工具的系統管理員參考。如果您使用 Systems Management Server (SMS),可以跳至<部署方法>一節。
如果要設定伺服器及共用,請執行下列步驟:
- 在成員伺服器上設定共用。然後,將共用命名為 ShareName。
- 將工具及範例指令碼 RunMRT.cmd (如需詳細資訊,請參閱<程式碼範例>一節) 複製至共用。
- 設定下列共用使用權限和 NTFS 檔案系統使用權限:
- 共用使用權限:
- 為管理此共用的使用者新增網域使用者帳戶,然後選擇 [完全控制]。
- 移除 Everyone 群組。
- 如果您使用電腦啟動指令碼方法,請授與 Domain Computers 群組「變更」和「讀取」的使用權限。
- 如果您使用登入指令碼方法,請授與 Authenticated Users 群組「變更」和「讀取」的使用權限。
NTFS 使用權限:
- 為管理此共用的使用者新增網域使用者帳戶,然後選擇 [完全控制]。
- 移除 Everyone 群組 (如果出現在清單中)。
注意 當您移除 Everyone 群組時,如果收到錯誤訊息,請按一下 [安全性] 索引標籤上的 [進階],然後按一下以清除 [允許從父項繼承權限套用到這個物件] 核取方塊。
- 如果您使用電腦啟動指令碼方法,請授與 Domain Computers 群組「讀取&執行」、「列出資料夾內容」和「讀取」的使用權限。
- 如果您使用登入指令碼方法,請授與 Authenticated Users 群組「讀取&執行」、「列出資料夾內容」和「讀取」的使用權限。
在 ShareName 資料夾下建立一個名為 Logs 的資料夾。在用戶端電腦上執行工具之後,這個資料夾會是收集最後記錄檔的資料夾。
如果要在 Logs 資料夾上設定 NTFS 使用權限,請執行下列步驟:
注意 請勿在這個步驟中變更「共用」使用權限。
- 為管理此共用的使用者新增網域使用者帳戶,然後選擇 [完全控制]。
- 如果您使用電腦啟動指令碼方法,請授與 Domain Computers 群組「修改」、「讀取&執行」、「列出資料夾內容」、「讀取」和「寫入」的使用權限。
- 如果您使用登入指令碼方法,請授與 Authenticated Users 群組「修改」、「讀取&執行」、「列出資料夾內容」、「讀取」和「寫入」的使用權限。
部署方法
注意 如果要執行這個工具,無論您選擇何種部署選項,都必須擁有 Administrator 或 SYSTEM 的使用權限。
使用 SMS 軟體套件下列範例提供使用 SMS 2003 的逐步指示,而 SMS 2.0 的步驟,則是類似 SMS 2003 的逐步指示。
- 從套件 Windows-KB890830-ENU.exe /x 解壓縮 Mrt.exe 檔。
- 使用 ISMIF32.exe,來建立可以啟動 Mrt.exe 並擷取傳回碼的 .bat 檔。
範例:
@echo off
Mrt.exe /q
If errorlevel 13 goto error13
If errorlevel 12 goto error12
Goto end
:error13
Ismif32.exe –f MIFFILE –p MIFNAME –d ”text about error 13?Goto end
:error 12
Ismif32.exe –f MIFFILE –p MIFNAME –d “text about error 12?Goto end
:end
如需有關 Ismif32.exe 的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
268791 SMS:How a Status Management Information Format (MIF) File Produced by the ISMIF32.exe File Is Processed in SMS 2.0
186415 SMS:Status MIF Creator, Ismif32.exe Is Available
- 在 SMS 2003 主控台中建立套件:
[list=1]開啟 [SMS Administrator Console]。
用滑鼠右鍵按一下 [Packages] 節點,選取 [New],然後按一下 [Packages]。隨即會顯示 [Package Properties] 對話方塊。
在 [General] 索引標籤上,為套件命名。
在 [Data Source] 索引標籤上,按一下以選取 [This package contains source files] 核取方塊。
按一下 [Set],然後選擇含有工具的來源目錄。
在 [Distribution Settings] 索引標籤上,將 [Sending priority] 設定為 [High]。
選取 [Reporting] 索引標籤上的 [Use these fields for status MIF matching],然後為 [MIF file name] 及 [Name] 欄位指定名稱 ([Version] 和 [Publisher] 為選擇性)。
按一下 [OK] 建立套件。
為套件指定發佈點 (DP):
在 SMS 2003 主控台的 [Packages] 節點底下,找出新的套件。
展開套件。用滑鼠右鍵按一下
[Distribution Points],指向 [New],然後按一下
[Distribution Points]。
執行
[New Distribution Points Wizard],並選取現有的發佈點。
按一下
[Finish] 結束精靈。
將先前建立的批次檔加入至新的套件:
在新套件節點底下,按一下以選取 [Programs] 節點。
用滑鼠右鍵按一下
[Programs],指向
[New],然後按一下
[Program]。
選取
[General] 索引標籤,然後輸入有效的名稱。
在
[Command line] 中,按一下
[Browse] 選取您建立用來啟動 Mrt.exe 的批次檔。
將
[Run] 選項變更為
[Hidden]。將
[After] 選項變更為
[No action required]。
按一下
[Requirements] 索引標籤,再按一下以選取
[This program can run only on specified client platforms] 選項。
按一下以選取
[All x86 Windows 2000]、
[All x86 Windows Server 2003] 及
[All x86 Windows XP]。
按一下
[Environment] 索引標籤,並在
[Program can run:]清單中,按一下以選取
[Whether or not a user is logged]。將執行模式設定為
[Run with administrative rights]。
按一下
[OK] 關閉對話方塊。
建立通知,以告知用戶端有關程式的訊息:
用滑鼠右鍵按一下 [Advertisement] 節點,選取 [New],然後按一下 [Advertisement]。
在
[General] 索引標籤上,輸入通知的名稱。在
[Package] 欄位中,選取您先前建立的套件。然後,在
[Program] 欄位中,選取您先前建立的程式。按一下
[Browse],然後選取
[All System] 集合或選取只包含 Microsoft Windows 2000 及更新版本的電腦集合。
在
[Schedule] 索引標籤上,如果您希望程式只執行一次,就保留預設的選項。如果要依照排程執行程式,請指定排程時間間隔。
將
[Priority] 設定為
[High]。
按一下
[OK] 建立通知。
使用群組原則電腦的啟動指令碼這個方法會要求您在設定指令碼並套用群組原則之後,重新啟動用戶端電腦。
- 依照<初始安裝和設定>一節中的步驟設定共用。
- 設定啟動指令碼。如果要執行這項操作,請依照下列步驟執行:
[list=1]用滑鼠右鍵按一下 [Active Directory 使用者和電腦] MMC 嵌入式管理單元中的網域名稱,然後按一下 [內容]。
按一下 [群組原則] 索引標籤。
按一下 [新增] 建立新的群組原則物件 (GPO),並將原則命名為 MRT Deployment。
按一下新的原則,然後按一下 [編輯]。
展開 [使用者設定] 中的 [Windows 設定],然後按一下 [指令碼]。
按兩下 [登入],然後按一下 [新增]。[新增指令碼] 對話方塊便會出現。
在 [指令碼名稱] 方塊中,輸入 \\ServerName\ShareName\RunMRT.cmd。
按一下 [確定],再按一下 [套用]。
重新啟動屬於此網域的用戶端電腦。
關於企業部署的其他資訊檢查傳回碼您可以在部署 (登入或啟動) 指令碼中檢查工具的傳回碼,以確認執行的結果。如需有關如何執行這項操作的範例,請參閱<程式碼範例>一節。
下列清單列出有效的傳回碼:
0 = 找不到感染
1 = 作業系統環境錯誤
2 = 未以系統管理員的身分執行
3 = 不是受支援的作業系統
4 = 初始化掃描器時發生錯誤(請下載新的工具)。
5 = 未使用
6 = 偵測到並移除至少一個感染。沒有錯誤。
7 = 偵測到至少一個感染,並且發生錯誤。
8 = 偵測到並移除至少一個感染,但是必須手動移除,才能完整移除。
9 = 偵測到並移除至少一個感染,但是必須手動移除,才能完整移除,並且發生錯誤。
10 = 偵測到並移除至少一個感染,但是必須重新啟動,才能完整移除
11 = 偵測到並移除至少一個感染,但是必須重新啟動,才能完整移除,並且發生錯誤
12 = 偵測到並移除至少一個感染,但是必須手動移除,再重新啟動,才能完整移除。
13 = 偵測到並移除至少一個感染,但是必須重新開機。沒有發生錯誤。
剖析記錄檔惡意軟體移除工具會將執行結果詳細地寫入 %windir%\debug\mrt.log 記錄檔。
注意 此記錄檔僅提供英文版本。
如果此記錄檔已經存在,工具就會附加至現有的檔案中。您可以使用類似先前範例的命令指令碼,來擷取傳回碼並將檔案收集至網路共用。
下列範例為已感染 Sasser.A 病蟲的電腦中的 Mrt.log 檔:
Microsoft Malicious Software Removal Tool v1.0, January 2005
Started On Fri Dec 06 06:24:16 2002
Found virus:Win32/Sasser.A.worm in process 15244
Found virus:Win32/Sasser.A.worm in file C:\WINNT\system32\avserve.exe
Found virus:Win32/Sasser.A.worm in file C:\WINNT\avserve.exe
!!! System is infected with:Win32/Sasser.A.worm
Terminating process with pid 15244
Done!
Terminating process with pid 15244
Already done.
Removing registry value:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run -> avserve.exe
Done!
Deleting file:C:\WINNT\system32\avserve.exe
Done!
Deleting file:C:\WINNT\avserve.exe
Done!
Removal Tool Results:
Found Win32/Sasser.A.worm and Removed!
Microsoft Malicious Software Removal Tool Finished On Fri Dec 06 06:24:17 2002
記錄檔包含下列區段:
下列概要說明每個區段:
頁首記錄檔的頁首會顯示目前工具的名稱及版本,以及指示何時執行過工具的時間戳記。類似下列:
Microsoft Malicious Software Removal Tool v1.0, January 2005 Started On Sun Dec 05 15:52:07 2004
詳細資料詳細資料提供諸如工具在電腦上找到何種惡意軟體 (如果有),以及在執行期間曾經出現的任何警告或錯誤等資訊。
如果沒有找到惡意軟體,並且執行過程中也沒有出現警告或錯誤,那麼詳細資料這個部份就會完全空白。
以先前所述受感染電腦中的檔案為例,詳細資料顯示出為了清除感染而從電腦移除的處理序、檔案及登錄機碼:
Found virus:Win32/Sasser.A.worm in process 15244
Found virus:Win32/Sasser.A.worm in file C:\WINNT\system32\avserve.exe
Found virus:Win32/Sasser.A.worm in file C:\WINNT\avserve.exe
!!! System is infected with:Win32/Sasser.A.worm
Terminating process with pid 15244
Done!
Terminating process with pid 15244
Already done.
Removing registry value:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run -> avserve.exe
Done!
Deleting file:C:\WINNT\system32\avserve.exe
Done!
Deleting file:C:\WINNT\avserve.exe
Done!
如果清理電腦期間發生錯誤,該項資訊也會寫入記錄檔的詳細資料區段。
下列文字擷取自含有錯誤的記錄檔中的詳細資料區段:
Terminating process with pid 13152
Failed to terminate the process!
0x00000102:The wait operation timed out.
Terminating process with pid 13152
Already done.
Deleting file:C:\WINNT\system32\ashxcvb.exe
Failed - Scheduled to be removed after reboot!
摘要記錄檔的摘要區段提供執行工具的整體結果,其中包括已經從電腦移除的惡意軟體 (如果有) 清單,以及任何必要的動作,例如重新啟動電腦,或執行其他手動移除步驟。
下列為記錄檔中摘要區段的範例:
Removal Tool Results:
Found Win32/Sasser.A.worm and Removed!
如果電腦上找不到惡意軟體,摘要區段會類似下列:
Removal Tool Results:
No infection found.
下列提供發生錯誤時,記錄檔中摘要區段的範例。系統必須重新啟動,才能完成清理程序。
Removal Tool Results:
Found Win32/HLLW.Gaobot.ZF, partially removed.
For cleaning Win32/HLLW.Gaobot.ZF, the system need to be restarted!
頁尾記錄檔會以頁尾做為結束,而頁尾部份會包含完成執行的日期及時間。
下列為頁尾範例:
Microsoft Malicious Software Removal Tool Finished On Fri Dec 06 06:24:17 2002
就像先前所提到的,如果工具執行一次以上,記錄檔案就會跟著附加。因此,執行數次之後,記錄檔將會包括一系列的項目,並且每個項目都包括前面所述的四個區段。
已知問題當您使用啟動指令碼執行工具時,可能會在 Mrt.log 檔案中看到類似下列的錯誤。PID 數字將有所不同。
Error:MemScanGetImagePathFromPid(pid:552) failed.
(錯誤:MemScanGetImagePathFromPid(PID:552) 失敗)。
0x00000005:拒絕存取。
當處理序剛啟動或最近曾經停止回應時,就會發生這個錯誤。唯一的影響就是 PID 所委派的處理序尚未經過掃描。
如果要解決這個問題,請使用 Sleep.exe Platform SDK 公用程式,使啟動指令碼在執行工具之前延遲五秒 (請參閱上列的範例指令碼)。此延遲讓電腦上的處理序可以在開機之後穩定下來。
常見問題集問 1:
當我測試用來部署工具的啟動或登入指令碼時,並未在之前設定的網路共用中看到所要複製的記錄檔。為什麼?
答 1:
這個問題通常是因為使用權限而造成的。例如,執行移除工具的帳戶並未擁有共用的「寫入」使用權限。如果要疑難排解這個問題,請先檢查登錄機碼,確定工具已經執行過,或者您可以尋找用戶端電腦上是否存有記錄檔。如果工具已順利執行,您可以測試簡單的指令碼,確認在與執行移除工具相同的安全性內容下執行指令碼時,指令碼可以寫入網路共用。
問 2:
如何檢查移除工具是否已經在用戶端電腦上執行?
答 2:
您可以檢查下列登錄機碼,來確認工具的執行。請注意,您可以執行這樣的檢查,做為啟動或登入指令碼的一部份。這可以避免執行工具多次。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RemovalTools\MRT 值為 Version。
每次執行工具時,無論執行的結果為何,工具都會將 GUID 記錄至登錄中,以表示曾經執行過工具。下列表格列出每個發行版本相對應的 GUID。
問 3:
如何防止透過自動更新傳送此更新程式至我的電腦?
答 3:
您可以設定 Q2 中所述的登錄機碼,如此,工具將不會出現在 Windows Update 或「自動更新」。
問 4:
如何停用工具的感染報告元件,使報告不會傳回 Microsoft?
答 4:
系統管理員可以藉由新增下列登錄機碼值至電腦,來選擇是否停用工具的感染報告元件。如果已經設定這個登錄機碼值,工具將不會向 Microsoft 回報感染資訊。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\MRT\DontReportInfectionInformation 值為 1。請注意,這個值的類型應該是 REG_DWORD。
如果下列登錄機碼值已經存在,這個功能就會自動停用:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\WUServer這個登錄機碼值表示電腦是連線至 SUS 伺服器。