在企業環境中部署 Windows 惡意軟體移除工具

適用於: Windows 7 Enterprise NWindows 7 Home BasicWindows 7 Home Premium

Windows 惡意軟體移除工具可供在<適用於>一節所列的作業系統上使用。 未列出的作業系統未經測試,因此並不支援。 未支援的作業系統包括內嵌作業系統的所有版本。

簡介


Microsoft 通常每月發行 Windows 惡意軟體移除工具 (MSRT) (做為 Windows Update 的一部分或做為單獨的工具)。 使用此工具可尋找和移除特定的常見威脅,並恢復其進行的變更 (請參閱所覆蓋的威脅)。 若要全面偵測和移除惡意程式碼,請考慮使用 Microsoft 安全掃描工具

此工具能與現有的反惡意程式碼軟體解決方案搭配使用,並且可以在當前大多數 Windows 版本上使用 (請參閱<內容>一節)。

本文中的資訊只適用於工具的企業部署。 我們建議您檢閱下列知識庫文章,了解更多關於此工具的資訊。

部署概觀


企業環境可以部署此工具,以加強現有的防護,做為深度防禦策略的一部分。 如果要在企業環境中部署此工具,您可以使用下列一個或多個方法:

  • Windows Server Update Services
  • Microsoft Systems Management Software (SMS) 軟體套件
  • 群組原則電腦的啟動指令碼
  • 群組原則電腦的使用者登入指令碼

這個工具的目前版本不支援下列部署技術:

  • Windows Update 類別目錄
  • 為遠端電腦執行此工具
  • Software Update Services (SUS)

此外,Microsoft Baseline Security Analyzer (MBSA) 偵測不到工具是否在執行。 本文包含有關如何檢查工具的執行作業,以做為部署一部分的資訊。

程式碼範例


這裡所提供的指令碼及步驟僅做為範例之用。 客戶必須測試這些範例指令碼及案例,並適當地加以修改,才能運用在自己的環境中。 您必須根據環境的設定,變更 ServerNameShareName

下列程式碼範例可以執行下列操作:

  • 以無訊息模式執行工具
  • 將記錄檔複製至事先設定的網路共用
  • 以執行工具的電腦名稱及目前使用者的使用者名稱做為記錄檔名稱的前置詞

    注意 您必須按照初始安裝和設定一節中的指示設定共用的適當權限。
REM In this example, the script is named RunMRT.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 offcall \\ServerName\ShareName\Sleep.exe 5Start /wait \\ServerName\ShareName\Windows-KB890830-V5.75.exe /qcopy %windir%\debug\mrt.log \\ServerName\ShareName\Logs\%computername%_%username%_mrt.log

注意 在此程式碼範例中,ServerName 代表伺服器的名稱,而 ShareName 代表共用的名稱。

初始安裝和設定


本節主要提供給使用啟動指令碼或登入指令碼來部署此工具的系統管理員參考。 如果您使用 SMS,可以跳至<部署方法>一節。

如果要設定伺服器及共用,請依照下列步驟執行:

  1. 在成員伺服器上設定共用。 然後,將共用命名為
    ShareName
  2. 將工具及範例指令碼 RunMRT.cmd 複製至共用。 如需詳細資訊,請參閱程式碼範例一節。
  3. 設定下列共用使用權限和 NTFS 檔案系統使用權限:
    • 共用 使用權限:
      1. 為管理此共用的使用者新增網域使用者帳戶,然後按一下 [完全控制]

      2. 移除 Everyone 群組。

      3. 如果您使用電腦啟動指令碼方法,請授與 Domain Computers 群組「變更」和「讀取」的使用權限。

      4. 如果您使用登入指令檔方法,請授與 Authenticated Users 群組「變更」和「讀取」的使用權限。

    • NTFS 使用權限:
      1. 為管理此共用的使用者新增網域使用者帳戶,然後按一下 [完全控制]
      2. 移除 Everyone 群組 (如果出現在清單中)。

        注意 當您移除 Everyone 群組時,如果收到錯誤訊息,請按一下 [安全性] 索引標籤上的 [進階],然後按一下以清除 [允許從父項繼承權限套用到這個物件] 核取方塊。
      3. 如果您使用電腦啟動指令碼方法,請授與 Domain Computers 群組「讀取與執行」、「列出資料夾內容」和「讀取」的使用權限。
      4. 如果您使用登入指令碼方法,請授與 Authenticated Users 群組「讀取與執行」、「列出資料夾內容」和「讀取」的使用權限。
  4. ShareName 資料夾下建立一個名為 "Logs" 的資料夾。

    在用戶端電腦上執行工具之後,這個資料夾會是收集最後記錄檔的資料夾。
  5. 如果要在 Logs 資料夾上設定 NTFS 使用權限,請依照下列步驟執行。

    注意 請勿在這個步驟中變更「共用」使用權限。
    1. 為管理此共用的使用者新增網域使用者帳戶,然後按一下 [完全控制]
    2. 如果您使用電腦啟動指令碼方法,請授與 Domain Computers 群組「修改」、「讀取與執行」、「列出資料夾內容」、「讀取」和「寫入」的使用權限。
    3. 如果您使用登入指令碼方法,請授與 Authenticated Users 群組「修改」、「讀取與執行」、「列出資料夾內容」、「讀取」和「寫入」的使用權限。

部署方法


注意 如果要執行這個工具,無論您選擇何種部署選項,都必須擁有 Administrator 或 System 的使用權限。

如何使用 SMS 軟體套件

下列範例提供有關使用 SMS 2003 的逐步指示。 使用 SMS 2.0 的步驟類似下列步驟。

  1. 從名為 Windows-KB890830-V1.34-ENU.exe /x 的套件解壓縮 Mrt.exe 檔案。
  2. 使用 ISMIF32.exe,藉此建立可以啟動 Mrt.exe 並擷取傳回碼的 .bat 檔案。

    下列是範例。
    @echo offStart /wait Mrt.exe /qIf errorlevel 13 goto error13If errorlevel 12 goto error12Goto end:error13Ismif32.exe –f MIFFILE –p MIFNAME –d ”text about error 13”Goto end:error12Ismif32.exe –f MIFFILE –p MIFNAME –d “text about error 12”Goto end:end
    如需 Ismif32.exe 的詳細資訊,請移至下列 Microsoft 知識庫文章:
    186415 已推出狀態 MIF 建立者 Ismif32.exe (機器翻譯)
  3. 如果要在 SMS 2003 主控台中建立套件,請依照下列步驟執行:
    1. 開啟 [SMS 系統管理員主控台]。
    2. 用滑鼠右鍵按一下 [套件] 節點,按一下
      [新增],然後按一下 [套件]

      隨即
      顯示 [套件內容] 對話方塊。
    3. [一般] 索引標籤上,為套件命名。
    4. [資料來源] 索引標籤上,按一下以選取 [此套件包含來源檔案] 核取方塊。
    5. 按一下 [設定],然後選擇含有工具的來源目錄。
    6. [發佈設定] 索引標籤上,將 [傳送優先順序:] 設定為 [高]
    7. [報表] 索引標籤上,按一下 [使用這些欄位進行狀態 MIF 比對],然後為 [MIF 檔案名稱] 欄位和
      [名稱] 欄位指定名稱。

      [版本][發行者] 為選用欄位。
    8. 按一下 [確定] 以建立套件。
  4. 如果要為套件指定發佈點 (DP),請依照下列步驟執行:
    1. 在 SMS 2003 主控台的 [套件] 節點底下,找出新的套件。
    2. 展開套件。 用滑鼠右鍵按一下 [發佈點],指向 [新增],然後按一下 [發佈點]
    3. 啟動 [新增發佈點] 精靈。 選取現有的發佈點。
    4. 按一下 [完成] 來結束精靈。
  5. 如果要將先前建立的批次檔加入至新的套件,請依照下列步驟執行:
    1. 在新套件節點底下,按一下 [程式] 節點。
    2. 以滑鼠右鍵按一下 [程式],指向
      [新增],然後按一下 [程式]
    3. 按一下 [一般] 索引標籤,然後輸入有效的名稱。
    4. [命令列] 按一下
      [瀏覽] 以選取您建立用來啟動 Mrt.exe 的批次檔。
    5. [執行] 變更為
      [隱藏]。 將 [之後] 變更為 [不需要任何動作]
    6. 按一下 [需求] 索引標籤,再按一下 [此程式僅能在指定的用戶端作業系統上執行]
    7. 按一下 [所有 x86 Windows XP]
    8. 按一下 [環境] 索引標籤,再按一下
      [程式可執行] 清單中的 [使用者是否已登入]。 將 [執行] 模式設定為 [以系統管理權限執行]
    9. 按一下 [確定] 關閉對話方塊。
  6. 若要建立公告,以便向用戶端告知有關程式的訊息,請依照下列步驟執行:
    1. 用滑鼠右鍵按一下 [公告] 節點,按一下 [新增],然後按一下
      [公告]
    2. [一般] 索引標籤上,輸入公告的名稱。 在 [套件] 欄位中,選取您先前建立的套件。 在 [程式] 欄位中,選取您先前建立的程式。 按一下 [瀏覽],然後按一下 [所有系統] 集合,或選取只包含 Windows Vista 及更新版本的電腦集合。
    3. [排程] 索引標籤上,如果您希望程式只執行一次,請保留預設的選項。 如果要依照排程執行程式,請指定排程時間間隔。
    4. [優先順序] 設定為 [高]
    5. 按一下 [確定] 建立公告。

如何使用群組原則電腦的啟動指令碼

這個方法會要求您在設定指令碼及套用群組原則設定之後,重新啟動用戶端電腦。

  1. 設定共用。 若要執行這項操作,請依照
    初始安裝和設定一節中的步驟執行。
  2. 設定啟動指令碼。 如果要執行這項操作,請依照下列步驟執行:
     
    1. [Active Directory 使用者及電腦] MMC 嵌入式管理單元中,用滑鼠右鍵按一下網域名稱,然後按一下
      [內容]
    2. 按一下 [群組原則] 索引標籤。
    3. 按一下 [新增] 以建立新的群組原則物件 (GPO),並輸入 MRT Deployment 做為原則的名稱。
    4. 按一下新原則,然後按一下 [編輯]
    5. 展開 [電腦設定] 中的 [Windows 設定],然後按一下 [指令碼]
    6. 按兩下 [登入],然後按一下 [新增]

      隨即顯示 [新增指令碼] 對話方塊。
    7. [指令碼名稱] 方塊中,輸入
      \\ServerName\ShareName\RunMRT.cmd
    8. 按一下 [確定],再按一下 [套用]
  3. 重新啟動屬於此網域成員的用戶端電腦。

如何使用群組原則電腦的使用者登入指令碼

使用這個方法,必須將登入使用者帳戶設為網域帳戶,而且登入使用者帳戶也必須是用戶端電腦上本機系統管理員群組的成員。

  1. 設定共用。 若要執行這項操作,請依照
    初始安裝和設定一節中的步驟執行。
  2. 設定登入指令檔。 如果要執行這項操作,請依照下列步驟執行:
    1. [Active Directory 使用者及電腦] MMC 嵌入式管理單元中,用滑鼠右鍵按一下網域名稱,然後按一下
      [內容]
    2. 按一下 [群組原則] 索引標籤。
    3. 按一下 [新增] 以建立新的 GPO,並輸入 MRT Deployment 做為名稱。
    4. 按一下新原則,然後按一下
      [編輯]
    5. 展開 [使用者設定] 中的 [Windows 設定],然後按一下 [指令碼]
    6. 按兩下 [登入],然後按一下 [新增]。 隨即顯示 [新增指令碼] 對話方塊。
    7. [指令碼名稱] 方塊中,輸入
      \\ServerName\ShareName\RunMRT.cmd
    8. 按一下 [確定],再按一下 [套用]
  3. 先登出,再登入用戶端電腦。

在這個案例中,指令碼及工具將會在登入的使用者內容之下執行。 如果該使用者不屬於本機系統管理員群組,或者沒有足夠的使用權限,工具將不會執行也不會傳回適當的傳回碼。 如需有關如何使用啟動指令碼和登入指令檔的詳細資訊,請移至下列 Microsoft 知識庫文章:

關於企業部署的其他資訊


如何檢查傳回碼

您可以在部署登入指令碼或部署啟動指令碼中檢查工具的傳回碼,以確認執行的結果。 如需有關如何執行這項操作的範例,請參閱程式碼範例一節。

下列清單列出有效的傳回碼。

0 = 找不到感染
1 = 作業系統環境錯誤
2 = 未以系統管理員的身分執行
3 = 不是受支援的作業系統
4 = 初始化掃描器時發生錯誤 (請下載新的工具)。
5 = 未使用
6 = 偵測到至少一個感染。 沒有錯誤。
7 = 偵測到至少一個感染,並且發生錯誤。
8 = 偵測到並移除至少一個感染,但是必須手動移除,才能完整移除。
9 = 偵測到並移除至少一個感染,但是必須手動移除,才能完整移除,並且發生錯誤。
10 = 偵測到並移除至少一個感染,但是必須重新啟動,才能完整移除。
11 = 偵測到並移除至少一個感染,但是必須重新啟動,才能完整移除,並且發生錯誤。
12 = 偵測到並移除至少一個感染,但是必須手動移除,再重新啟動,才能完整移除。
13 = 偵測到並移除至少一個感染,但是必須重新啟動。 沒有發生錯誤。

如何剖析記錄檔

「惡意軟體移除工具」會將執行結果詳細地寫入 %windir%\debug\mrt.log 記錄檔。

注意事項

  • 這個記錄檔僅提供英文版本。
  • 從移除工具 1.2 版 (2005 年 3 月) 開始,本記錄檔使用 Unicode 文字。 1.2 版之前,記錄檔使用 ANSI 文字。
  • 記錄檔格式已於 1.2 版變更,我們建議您下載並使用最新版的工具。

    如果此記錄檔已經存在,工具就會附加至現有的檔案中。
  • 您可以使用類似上述範例的命令指令碼,來擷取傳回碼並將檔案收集至網路共用。
  • 由於移除工具 1.2 版已經從 ANSI 轉換為 Unicode,因此這個版本會將 %windir%\debug 資料夾中任何 ANSI 版本的 Mrt.log 檔複製到相同目錄中的 Mrt.log.old。 此外,1.2 版還會在同一個目錄中新建 Unicode 版本的 Mrt.log 檔。 如同 ANSI 版,此記錄檔將附加至每個月份的發行版本中。

下列範例是已感染 MPnTestFile 蠕蟲的電腦中的 Mrt.log 檔案:

Microsoft Windows Malicious Software Removal Tool v5.3, August 2013 (build 5.3.9300.0)Started On Tue Jul 30 23:34:49 2013Quick Scan Results:-------------------Threat Detected: Virus:Win32/MPnTestFile.2004 and Removed! Action: Remove, Result: 0x00000000 regkey://HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\\v5mpn runkey://HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\\v5mpn file://c:\temp\mpncleantest.exe SigSeq: 0x00002267735A46E2Results Summary:----------------Found Virus:Win32/MPnTestFile.2004 and Removed!Microsoft Windows Malicious Software Removal Tool Finished On Tue Jul 30 23:35:39 2013Return code: 6 (0x6)  


下列範例為找不到惡意軟體的記錄檔。

Microsoft Windows Malicious Software Removal Tool v5.3, August 2013 (build 5.3.9300.0)Started On Thu Aug 01 21:15:43 2013Results Summary:----------------No infection found.Microsoft Windows Malicious Software Removal Tool Finished On Thu Aug 01 21:16:28 2013Return code: 0 (0x0) 


下列是找到錯誤的範例記錄檔。


如需此工具所造成的警告和錯誤詳細資訊,請移至下列 Microsoft Knowledge 文章︰

Microsoft Windows Malicious Software Removal Tool v5.3, August 2013 (build 5.3.9300.0)Started On Fri Aug 02 16:17:49 2013Scan Results:-------------Threat Detected: Virus:Win32/MPTestFile.2004, partially removed. Operation failed. Action: Clean, Result: 0x8007065E. Please use a full antivirus product ! !  file://d:\temp\mpcleantest.7z->mpcleantest.exe SigSeq: 0x00001080D2AE29FC containerfile://d:\temp\mpcleantest.7zResults Summary:----------------Found Virus:Win32/MPTestFile.2004, partially removed.Microsoft Windows Malicious Software Removal Tool Finished On Fri Aug 02 16:18:09 2013Return code: 7 (0x7) 

已知問題


已知問題 1

當您使用啟動指令碼執行此工具時,Mrt.log 檔案中可能會記錄類似下列的錯誤訊息:
 

Error: MemScanGetImagePathFromPid(pid: 552) 失敗。
0x00000005: Access is denied. (拒絕存取)


注意
PID 數字將有所不同。

當處理程序剛啟動或最近曾經停止回應時,會出現這個錯誤訊息。 唯一的影響就是 PID 所指定的處理程序未經過掃描。

已知問題 2

在某些罕見情況下,如果系統管理員選擇使用 /q 無聲參數 (又稱為無訊息模式) 來部署 MSRT,當重新啟動後必須額外執行清除時,清除少數感染子集可能無法完全解決問題。 目前只有在移除特定 Rootkit 變種時看到這種情形。

常見問題集


問 1: 當我測試用來部署工具的啟動指令碼或登入指令檔時,記錄檔並未複製到我先前設定的網路共用。 為什麼?

答 1: 這個問題通常是因為使用權限而造成的。 例如,執行移除工具的帳戶並未擁有共用的「寫入」使用權限。 如果要疑難排解這個問題,請先檢查登錄機碼,確定工具已經執行過, 或者,您可以尋找用戶端電腦上是否存有記錄檔。 如果工具已順利執行,您可以測試簡單的指令碼,確認在與執行移除工具相同的安全性內容下執行此指令碼時,指令碼可以寫入網路共用。

問 2: 如何確認移除工具是否已經在用戶端電腦上執行?

答 2: 您可以檢查下列登錄項目的數值資料,確認工具是否已執行。 您可以執行這類檢查,做為啟動或登入指令檔的一部分。 這個程序可以避免工具執行多次。

子機碼:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RemovalTools\MRT
項目名稱:
版本

每次執行工具時,此工具都會將 GUID 記錄於登錄中,表示已經執行過。 無論執行結果為何,工具都會執行這項操作。 下列表格列出每個發行版本相對應的 GUID。

問 3: 如何停用工具的感染報告元件,使報告不會傳回 Microsoft?

答 3: 系統管理員可以藉由新增下列登錄機碼值至電腦,來選擇是否停用工具的感染報告元件。 如果已經設定這個登錄機碼值,工具將不會向 Microsoft 回報感染資訊。

子機碼: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\MRT
項目名稱: \DontReportInfectionInformation
類型: REG_DWORD
數值資料: 1

問 4: 在 2005 年 3 月份的版本中,Mrt.log 檔案中的資料已不存在。 為什麼要移除這項資料,是否有擷取的方式?

答 4: 從 2005 年 3 月份的版本開始,Mrt.log 檔案即編寫為 Unicode 檔案。 為確保相容性,執行 2005 年 3 月份版本的工具時,如果系統中仍有 ANSI 版的檔案,工具會將該記錄檔的內容複製到 %WINDIR%\debug 中的 Mrt.log.old,並建立 Unicode 版的新 Mrt.log。 就像 ANSI 版一樣,日後執行工具時,都會附加 Unicode 版。