注意事項
這篇知識庫文章是依現狀提供,並且不會取代透過正常更新管道提供的取代資料。 您可以在安全性更新導覽和其他附屬工具找到在下列資料之後提供的取代資訊。
摘要
查看本文適用的產品。
安全性更新 MS17-010 可解決 Windows Server Message Block (SMB) v1 中數個弱點。 WannaCrypt 勒索軟體利用了其中一個屬於 MS17-010 更新的弱點。 未安裝 MS17-010 的電腦因數種惡意程式碼而提高風險。 本文提供數個可快速偵測電腦是否已進行過更新的方法。
方法 1: 根據已安裝的知識庫編號進行檢查
請使用下表查看是否安裝任何列出的更新 (標示為「未包含 MS17-010 修補程式」的更新除外)。 如果已安裝任一更新,表示已安裝 MS17-010。
表 1/2: Windows 7 SP1 和更新版本。 下列彙總套件 KB 包含修正程式 (「4 月僅限安全性 4B」欄中的更新除外)。 下面每個 KB 編號都是已更新的 Srv.sys 版本號碼。
Windows 版本 |
僅限 3 月安全性更新 (3/14/17) |
3 月每月彙總套件 (2017/3/14) |
3 月每月彙總套件預覽 (2017/3/21) |
4 月僅限 安全性更新 (2017/4/11) |
4 月每月彙總套件 (2017/4/11) |
4 月每月彙總套件預覽 (2017/4/18) |
5 月僅限安全性更新 (2017/5/9) |
5 月每月彙總套件 (2017/5/9) |
下載連結 |
Windows 7 SP1 和 Windows Server 2008 R2 SP1 |
4012212 6.1.7601.23689 |
4012215 6.1.7601.23689 |
4012218 6.1.7601.23689 |
4015546 未包含 MS17-010 修補程式 |
4015549 6.1.7601.23689 |
4015552 6.1.7601.23689 |
4019263 6.1.7601.23762 |
4019264 6.1.7601.23762 |
|
Windows 2012 |
4012214 6.2.9200.22099 |
4012217 6.2.9200.22099 |
4012220 6.2.9200.22099 |
4015548 未包含 MS17-010 修補程式 |
4015551 6.2.9200.22099 |
4015554 6.2.9200.22099 |
4019214 6.2.9200.22137 |
4019216 6.2.9200.22137 |
|
Windows 8.1 和 Windows Server 2012 R2 |
4012213 6.3.9600.18604 |
4012216 6.3.9600.18604 |
4012219 6.3.9600.18604 |
4015547 未包含 MS17-010 修補程式 |
4015550 6.3.9600.18604 |
4015553 6.3.9600.18619 |
4019213 6.3.9600.18655 |
4019215 6.3.9600.18655 |
|
Windows 10 1507 版 |
4012606 10.0.10240.17319 |
4016637 10.0.10240.17319 |
- |
- |
4015221 10.0.10240.17319 |
- |
- |
4019474 10.0.10240.17394 |
|
Windows 10 1511 版 |
4013198 10.0.10586.839 |
4016636 10.0.10586.839 |
- |
- |
4015219 10.0.10586.839 |
- |
- |
4019473 10.0.10586.916 |
|
Windows 10 和 Windows Server 2016 |
4013429 10.0.14393.953 |
4016635 10.0.14393.953 |
- |
- |
4015217 10.0.14393.953 |
- |
- |
4019472 10.0.14393.1198 |
表 2/2: 延續 2017 年 5 月和 6 月更新。
Windows 版本 |
5 月每月彙總套件預覽 (2017/5/16) |
6 月僅限安全性更新 (2017/6/13) |
6 月每月彙總套件 (2017/6/13) |
下載連結 |
Windows 7 和 Server 2008 R2 |
4019265 6.1.7601.23762
|
4022722 |
4022168 6.1.7601.23762 |
|
Windows Server 2012 |
4019218 6.2.9200.22137 |
4022718 |
4022724 6.2.9200.22137 |
|
Windows 8.1 和 Windows Server 2012 R2 |
4019217 6.3.9600.18655 |
4022717 |
4022720 6.3.9600.18688 |
|
Windows 10 1507 版 |
- |
- |
4032695 |
|
Windows 10 1511 版 |
- |
- |
4032693 |
|
Windows 10 版本 1607 和 Windows Server 2016 |
- |
- |
4022723 10.0.14393.1198 |
表 2: 其他 Windows 版本。 將 KB 4012598 當做安全性更新使用。
Windows 版本 |
KB 編號和 更新的 Srv.sys 版本 |
下載連結 |
Windows Server 2003 SP2 |
4012598 5.2.3790.6021 |
|
Windows XP |
4012598 5.1.2600.7208 |
Windows XP SP2 x64 Windows XP SP3 x86 Windows XP Embedded SP3 x86 |
Windows Vista SP2 |
4012598 GDR:6.0.6002.19743 LDR:6.0.6002.24067 |
Windows Vista Service Pack 2 Windows Vista x64 Edition Service Pack 2 |
Windows Server 2008 SP2 |
4012598 GDR:6.0.6002.19743 LDR:6.0.6002.24067 |
32 位元系統的 Windows Server 2008 Service Pack 2 x64 型系統的 Windows Server 2008 Service Pack 2 Itanium 系統的 Windows Server 2008 Service Pack 2 |
Windows 8 |
4012598 6.2.9200.22099 |
表 3: 其他包含此修正程式的更新。
Windows 8.1 和 Windows Server 2012 R2
發行日期 |
KB 編號 |
支援頁面 |
2017 年 3 月 21 日 |
4012219 |
|
2017 年 4 月 18 日 |
4015553 |
|
2017 年 5 月 16 日 |
4019217 |
|
2017 年 6 月 27 日 |
4022720 |
Windows Server 2012
發行日期 |
KB 編號 |
支援頁面 |
2017 年 3 月 21 日 |
4012220 |
|
2017 年 4 月 18 日 |
4015554 |
|
2017 年 5 月 16 日 |
4019218 |
|
2017 年 6 月 27 日 |
4022721 |
Windows 7 SP1 和 Windows Server 2008 R2 SP1
發行日期 |
KB 編號 |
支援頁面 |
2017 年 3 月 21 日 |
4012218 |
|
2017 年 4 月 18 日 |
4015552 |
|
2017 年 5 月 16 日 |
4019265 |
|
2017 年 6 月 27 日 |
4022168 |
方法 2: 根據 %systemroot%\system32\drivers\srv.sys 檔案版本進行檢查
請使用下表查看 %systemroot%\system32\drivers\srv.sys 的檔案版本。 如果檔案版本等於或大於所列的版本,表示 MS17-010 已安裝。
Windows 版本 |
已更新的最小 Srv.sys 版本 |
Windows XP |
5.1.2600.7208 |
Windows Server 2003 SP2 |
5.2.3790.6021 |
Windows Vista Windows Server 2008 SP2 |
GDR:6.0.6002.19743、LDR:6.0.6002.24067 |
Windows 7 Windows Server 2008 R2 |
6.1.7601.23689 |
Windows 8 Windows Server 2012 |
6.2.9200.22099 |
Windows 8.1 Windows Server 2012 R2 |
6.3.9600.18604 |
Windows 10 TH1 v1507 |
10.0.10240.17319 |
Windows 10 TH2 v1511 |
10.0.10586.839 |
Windows 10 RS1 v1607 Windows Server 2016 |
10.0.14393.953 |
方法 3: 根據 WMI 和 Windows PowerShell 進行檢查
WMI 和 Windows PowerShell 可用來判斷是否已安裝 MS17-010 修正程式。
WMI 命令 若要尋找指定的 KB 編號,請開啟提升權限的命令提示字元視窗,然後執行下列命令:
wmic qfe get hotfixid | find "KB1234567"
注意事項
-
在這個命令中,將 <KB1234567> 取代為實際的 KB 編號。
-
使用 & 符號字元可以搜尋多個更新。 例如,執行下列命令:
wmic qfe get hotfixid | find "KB4012212" & wmic qfe get hotfixid | find "KB4012215" & wmic qfe get hotfixid | find "KB4015549"
PowerShell 命令
若要在本機系統中檢查,請執行下列系統管理 PowerShell Cmdlet:
get-hotfix -id KB1234567
注意事項
-
在這個命令中,將 <KB1234567> 取代為實際的 KB 編號。
-
使用逗號 ( , ) 可以搜尋多個更新。 例如,執行下列命令:
get-hotfix -id KB4012212,KB4012215,KB4015549
若要檢查 Active Directory 網域或 OU 中的所有電腦,請在網域控制站執行下列系統管理 PowerShell Cmdlet:
foreach ( $n in (get-adcomputer -searchbase ‘OU=workstations,dc=contoso,dc=com’ -filter * -property * | select name )) {get-hotfix -computername $n.name -id KB1234567}
注意 您可以變更 "OU=workstations,dc=contoso,dc=com" 部分,以指向 Active Directory 網域目錄分割的根目錄,例如 "dc=contoso,dc=com" 可搜尋整個網域中的電腦。 在這個命令中,將 <KB1234567> 取代為實際的 KB 編號。
如何解決「不適用」安裝錯誤
在 Windows 8.1 或 Windows Server 2012 R2 上安裝 MS17-010 時,如果電腦未安裝先決條件的修正程式,您可能會收到下列錯誤訊息:
此更新不適用於您的電腦
若要解決這個錯誤,請依照下列步驟執行:
-
確認您在嘗試要安裝正確的更新。 若要執行這項操作,請在<方法 1>的「表 1」查看 KB 編號, 然後與您的系統版本、系統 Service Pack 層級和系統位元層級 (x64、IA64 或 x86) 相比較。
-
檢查是否有遺漏的相依性。 若是 Windows 8.1 和 Windows Server 2012 R2,請安裝下列文章列為必要的相依修正程式:
-
如果您無法安裝彙總套件更新,請嘗試不同的彙總套件版本。 請參閱「表 1」取得可用的更新。
PowerShell 指令碼
下列 Windows PowerShell 指令碼會將本機電腦上的 Srv.sys 版本,與<方法 2>表格中所列的版本做比較。
請將這個指令碼儲存至 .ps1 檔案,然後從 PowerShell 執行指令碼。 這個指令碼適用於 Windows XP 及 Windows Server 2003 和更新版本。 它需要 Windows PowerShell 2.0 或更新版本。
[reflection.assembly]::LoadWithPartialName("System.Version")
$os = Get-WmiObject -class Win32_OperatingSystem
$osName = $os.Caption
$s = "%systemroot%\system32\drivers\srv.sys"
$v = [System.Environment]::ExpandEnvironmentVariables($s)
If (Test-Path "$v")
{
Try
{
$versionInfo = (Get-Item $v).VersionInfo
$versionString = "$($versionInfo.FileMajorPart).$($versionInfo.FileMinorPart).$($versionInfo.FileBuildPart).$($versionInfo.FilePrivatePart)"
$fileVersion = New-Object System.Version($versionString)
}
Catch
{
Write-Host "Unable to retrieve file version info, please verify vulnerability state manually." -ForegroundColor Yellow
Return
}
}
Else
{
Write-Host "Srv.sys does not exist, please verify vulnerability state manually." -ForegroundColor Yellow
Return
}
if ($osName.Contains("Vista") -or ($osName.Contains("2008") -and -not $osName.Contains("R2")))
{
if ($versionString.Split('.')[3][0] -eq "1")
{
$currentOS = "$osName GDR"
$expectedVersion = New-Object System.Version("6.0.6002.19743")
}
elseif ($versionString.Split('.')[3][0] -eq "2")
{
$currentOS = "$osName LDR"
$expectedVersion = New-Object System.Version("6.0.6002.24067")
}
else
{
$currentOS = "$osName"
$expectedVersion = New-Object System.Version("9.9.9999.99999")
}
}
elseif ($osName.Contains("Windows 7") -or ($osName.Contains("2008 R2")))
{
$currentOS = "$osName LDR"
$expectedVersion = New-Object System.Version("6.1.7601.23689")
}
elseif ($osName.Contains("Windows 8.1") -or $osName.Contains("2012 R2"))
{
$currentOS = "$osName LDR"
$expectedVersion = New-Object System.Version("6.3.9600.18604")
}
elseif ($osName.Contains("Windows 8") -or $osName.Contains("2012"))
{
$currentOS = "$osName LDR"
$expectedVersion = New-Object System.Version("6.2.9200.22099")
}
elseif ($osName.Contains("Windows 10"))
{
if ($os.BuildNumber -eq "10240")
{
$currentOS = "$osName TH1"
$expectedVersion = New-Object System.Version("10.0.10240.17319")
}
elseif ($os.BuildNumber -eq "10586")
{
$currentOS = "$osName TH2"
$expectedVersion = New-Object System.Version("10.0.10586.839")
}
elseif ($os.BuildNumber -eq "14393")
{
$currentOS = "$($osName) RS1"
$expectedVersion = New-Object System.Version("10.0.14393.953")
}
elseif ($os.BuildNumber -eq "15063")
{
$currentOS = "$osName RS2"
"No need to Patch. RS2 is released as patched. "
return
}
}
elseif ($osName.Contains("2016"))
{
$currentOS = "$osName"
$expectedVersion = New-Object System.Version("10.0.14393.953")
}
elseif ($osName.Contains("Windows XP"))
{
$currentOS = "$osName"
$expectedVersion = New-Object System.Version("5.1.2600.7208")
}
elseif ($osName.Contains("Server 2003"))
{
$currentOS = "$osName"
$expectedVersion = New-Object System.Version("5.2.3790.6021")
}
else
{
Write-Host "Unable to determine OS applicability, please verify vulnerability state manually." -ForegroundColor Yellow
$currentOS = "$osName"
$expectedVersion = New-Object System.Version("9.9.9999.99999")
}
Write-Host "`n`nCurrent OS: $currentOS (Build Number $($os.BuildNumber))" -ForegroundColor Cyan
Write-Host "`nExpected Version of srv.sys: $($expectedVersion.ToString())" -ForegroundColor Cyan
Write-Host "`nActual Version of srv.sys: $($fileVersion.ToString())" -ForegroundColor Cyan
If ($($fileVersion.CompareTo($expectedVersion)) -lt 0)
{
Write-Host "`n`n"
Write-Host "System is NOT Patched" -ForegroundColor Red
}
Else
{
Write-Host "`n`n"
Write-Host "System is Patched" -ForegroundColor Green
}
#
參考
本文適用於:
-
Windows Server 2016
-
Windows 10 1607 版
-
Windows 10 1511 版
-
Windows 10 1507 版
-
Windows Server 2012 R2
-
Windows 8.1
-
Windows Server 2012
-
Windows 8
-
Windows Server 2008 R2
-
Windows 7
-
Windows Server 2008 Service Pack 2
-
Windows Vista
-
Windows Server 2003 Service Pack 2
-
Windows XP