Zapytania SQL Menedżera konfiguracji dotyczące KB związanych z oprogramowaniem ransomware WannaCrypt.
Najprostszym i najczęściej zalecanym podejściem jest wdrożenie najnowszej wersji CU w systemie Windows 10 lub Serwer 2016 systemy, wdrożyć najnowszy comiesięczny pakiet zbiorczy w wersji wcześniejszej niż Windows 10 maszyny, i korzystaj z wbudowanych raportów zgodności programu ConfigMgr, aby określić ogólną zgodność.
Oficjalne wskazówki dla klientów dotyczące ataków WannaCrypt: https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
Aktualizacja zabezpieczeń MS17-010: https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
Wersja przed systemem Windows 10 maszyny:
Okna 8.1 i Serwer 2012 Maszyny R2, które nie zgłoszą, że KB2919355 jest zainstalowany, zostaną zwrócone przez zapytanie. Dzieje się tak, ponieważ w przypadku późniejszych KB wymagany jest raport KB2919355. Więc, systemy te można uznać za zagrożone i wymagają dalszych badań.
Dla systemu Windows Vista, Okna 7, Okna 8.1, serwer Windowsa 2008 R2 SP1, serwer Windowsa 2008 SP2, serwer Windowsa 2012, i Windows Server 2012 Zapytanie R2 poniżej, zwrócone systemy będą tymi, które nie mają żadnego marca, Zainstalowane comiesięczne pakiety zbiorcze w kwietniu lub maju -ORAZ- zgłaszają następujące konkretne aktualizacje „Tylko bezpieczeństwo” jako „Wymagane”:
Windows Vista i serwer 2008 SP2: KB4012598
Okna 7 i Serwer 2008 R2 SP1: KB4012212
serwer Windowsa 2012: KB4012214
serwer Windowsa 2012 R2 i Windows 8.1: KB4012213
-- Dla Windowsa 7, serwer 2008 R2 SP1, serwer Windowsa 2012, serwer 2012 R2 i Windows 8.1, Windows Vista i serwer 2008 SP2
-- To zapytanie wyświetla listę komputerów, które zgłaszają dowolne aktualizacje „Tylko zabezpieczenia” jako „Wymagane”.
-- Jeśli jakakolwiek maszyna ma albo March, Zainstalowany miesięczny pakiet zbiorczy aktualizacji z kwietnia lub maja, wtedy nie zgłaszaliby marcowej aktualizacji „Tylko bezpieczeństwo” jako „Wymaganej”, ale i tak szukaj miesięcznych aktualizacji.
-- Dołącz także dowolny system Windows 8.1 i Serwer 2012 Maszyny R2, które nie zgłaszają „KB2919355” jako zainstalowanego.
DEKLARUJ TABELĘ @MarchSecurityOnly (ID artykułu NVARCHAR(20))
WSTAW WARTOŚCI @MarchSecurityOnly („4012212”)
WSTAW WARTOŚCI @MarchSecurityOnly („4012213”)
WSTAW WARTOŚCI @MarchSecurityOnly („4012214”)
WSTAW WARTOŚCI @MarchSecurityOnly („4012598”)
Zdeklaruj tabelę @MarchMonthly (ID artykułu NVARCHAR(20))
WSTAW WARTOŚCI @MarchMonthly („4012215”)
WSTAW WARTOŚCI @MarchMonthly („4015549”)
WSTAW WARTOŚCI @MarchMonthly („4019264”)
WSTAW WARTOŚCI @MarchMonthly („4012216”)
WSTAW WARTOŚCI @MarchMonthly („4015550”)
WSTAW WARTOŚCI @MarchMonthly („4019215”)
WSTAW WARTOŚCI @MarchMonthly („4012217”)
WSTAW WARTOŚCI @MarchMonthly („4015551”)
WSTAW WARTOŚCI @MarchMonthly („4019216”)
DEKLARUJ @KB2919355 NVARCHAR(10) = '2919355'-- Wymaganie wstępne
WYBIERAĆ
RS.Nazwa0,
UI.ArticleID jako ID artykułu,
UI.BulletinID jako BulletinID,
UI.Title jako tytuł,
SN.StateDescription AS Stan,
UCS.LastStatusCheckTime AS LastStateReceived,
UCS.LastStatusChangeTime AS LastStateChanged,
UI.CI_UniqueID JAKO UniqueUpdateID
Z v_Update_ComplianceStatusZgłoszono UCS
DOŁĄCZ do interfejsu użytkownika v_UpdateInfo NA UCS.CI_ID = UI.CI_ID
DOŁĄCZ v_R_System RS ON RS.ResourceType=5 ORAZ RS.ResourceID = UCS.ResourceID
DOŁĄCZ v_StateNames SN NA SN.TopicType=500 I SN.StateID=2 ORAZ SN.StateID = UCS.Status
GDZIE UI.ArticleID IN (WYBIERZ ID artykułu Z @MarchSecurityOnly)
ORAZ RS.Name0 NIE JEST W (
-- Miesięczny jest zainstalowany
WYBIERZ odrębny RS.Name0
Z v_Update_ComplianceStatusZgłoszony UCS
DOŁĄCZ do interfejsu użytkownika v_UpdateInfo NA UCS.CI_ID = UI.CI_ID
DOŁĄCZ v_R_System RS ON RS.ResourceType=5 ORAZ RS.ResourceID = UCS.ResourceID
DOŁĄCZ v_StateNames SN NA SN.TopicType=500 I SN.StateID=3 ORAZ SN.StateID = UCS.Status
GDZIE UI.ArticleID IN (WYBIERZ ID artykułu Z @MarchMonthly)
)
UNIA
-- Okna 8.1 i Serwer 2012 Maszyny R2, które nie zgłaszają KB2919355 jako zainstalowanego.
WYBIERAĆ
odrębny RS.Name0,
UI.ArticleID jako ID artykułu,
UI.BulletinID jako BulletinID,
„KB2919355” jako tytuł,
Stan AS „Aktualizacja nie została zainstalowana”.,
NULL JAKO LastStateReceived,
NULL JAKO LastStateChanged,
„KB2919355” JAKO unikalny identyfikator aktualizacji
Z v_Update_ComplianceStatusZgłoszony UCS
DOŁĄCZ do interfejsu użytkownika v_UpdateInfo NA UCS.CI_ID = UI.CI_ID
DOŁĄCZ v_R_System RS ON RS.ResourceType=5 ORAZ RS.ResourceID = UCS.ResourceID
DOŁĄCZ v_StateNames SN NA SN.TopicType=500 ORAZ SN.StateID = UCS.Status ORAZ SN.StateID <> 3
DOŁĄCZ do systemu operacyjnego v_GS_OPERATING_SYSTEM NA RS.ResourceID = OS.ResourceID ORAZ OS.BuildNumber0 = '9600' -- Okna 8.1 i Serwer 2012 R2
GDZIE UI.ArticleID = @KB2919355
Okna 10 i Serwer 2016
Dla Windowsa 10 i Serwer 2016 zapytania, tam są 2 scenariusze, które mogą mieć zastosowanie w zależności od konfiguracji środowiska po wygaśnięciu zastąpionych aktualizacji w programie ConfigMgr. Aby uzyskać więcej informacji na ten temat, zobacz sekcję Reguły zastępowania w witrynie TechNet i to.
Scenariusz 1: Klienci z regułą zastępowania NIE ustawioną na „Natychmiast wygasa”:
Jeśli zastąpione aktualizacje nie wygasły i dlatego są nadal dostępne w programie ConfigMgr, możesz użyć następującego zapytania, aby pomóc zidentyfikować system Windows 10 i Windows Server 2016 systemy, w których nie jest zainstalowana marcowa CU lub kolejna CU. Uwaga, do oceny dane za marzec CU, liczba miesięcy oczekiwania na wygaśnięcie aktualizacji w programie ConfigMgr musi być ustawiona na wystarczająco wysoką wartość, aby marcowa aktualizacja nie wygasła. To samo dotyczy kolejnych aktualizacji. Jeśli nie dotyczy to Twojego środowiska, informacje w Scenariusz 2: Klienci z regułą zastępowania ustawioną na „Natychmiast wygasa” (lub nie wystarczająco długo) można spróbować.
Dla następujących systemów Windows 10 i Serwer 2016, poniższe zapytanie zwraca systemy, które nie mają żadnej z poniższych miesięcznych jednostek CU, wydany w marcu lub później (do daty tego wpisu), zainstalowany:
Win10 RTM: KB4012606, KB4019474, KB4015221, KB4016637
Wygraj 10 1511: KB4013198, KB4015219, KB4016636, KB4019473
Win10 1607/serwer 2016: KB4013429, KB4015217, KB4015438, KB4016635, KB4019472
-- Okna 10 maszyny, które nie mają marca (lub którakolwiek z zastępujących aktualizacji) zainstalowany, i może być „zagrożony”.
-- Te zapytania zależą od systemu operacyjnego, ponieważ odpytujemy poszczególne KB, i muszę porównać te KB z odpowiednimi kompilacjami, aby zapobiec uzyskaniu niedokładnych wyników.
-- Okna 10 RTM
Zdeklaruj @BuildNumberRTM INT = '10240'
Zdeklaruj tabelę @MarchWin10 (ID artykułu NVARCHAR(20))
WSTAW WARTOŚCI @MarchWin10 („4012606”) -- Marzec zbiorczy
WSTAW WARTOŚCI @MarchWin10 („4019474”)
WSTAW WARTOŚCI @MarchWin10 („4015221”)
WSTAW WARTOŚCI @MarchWin10 („4016637”)
WYBIERZ RS.Nazwa0, OS.BuildNumber0 Z v_R_System RS
DOŁĄCZ do systemu operacyjnego v_GS_OPERATING_SYSTEM NA RS.ResourceID = OS.ResourceID ORAZ OS.BuildNumber0 = @BuildNumberRTM
GDZIE NIE JEST RS.Name0 (
WYBIERZ RS.Nazwa0
Z v_Update_ComplianceStatusZgłoszony UCS
DOŁĄCZ do interfejsu użytkownika v_UpdateInfo NA UCS.CI_ID = UI.CI_ID
DOŁĄCZ v_R_System RS ON RS.ResourceType=5 ORAZ RS.ResourceID = UCS.ResourceID
DOŁĄCZ v_StateNames SN NA SN.TopicType=500 I SN.StateID=3 ORAZ SN.StateID = UCS.Status
DOŁĄCZ v_GS_OPERATING_SYSTEM OS NA OS.ResourceID = RS.ResourceID ORAZ OS.BuildNumber0 = @BuildNumberRTM
GDZIE UI.ArticleID IN (WYBIERZ ID artykułu Z @MarchWin10)
)
-- Okna 10 1511
Zdeklaruj @BuildNumber1511 INT = '10586'
DEKLARACJA TABELI @MarchWin101511 (ID artykułu NVARCHAR(20))
WSTAW WARTOŚCI @MarchWin101511 („4013198”) -- Marzec zbiorczy
WSTAW WARTOŚCI @MarchWin101511 („4015219”)
WSTAW WARTOŚCI @MarchWin101511 („4016636”)
WSTAW WARTOŚCI @MarchWin101511 („4019473”)
WYBIERZ RS.Nazwa0, OS.BuildNumber0 Z v_R_System RS
DOŁĄCZ do systemu operacyjnego v_GS_OPERATING_SYSTEM NA RS.ResourceID = OS.ResourceID ORAZ OS.BuildNumber0 = @BuildNumber1511
GDZIE NIE JEST RS.Name0 (
WYBIERZ RS.Nazwa0
Z v_Update_ComplianceStatusZgłoszony UCS
DOŁĄCZ do interfejsu użytkownika v_UpdateInfo NA UCS.CI_ID = UI.CI_ID
DOŁĄCZ v_R_System RS ON RS.ResourceType=5 ORAZ RS.ResourceID = UCS.ResourceID
DOŁĄCZ v_StateNames SN NA SN.TopicType=500 I SN.StateID=3 ORAZ SN.StateID = UCS.Status
DOŁĄCZ do systemu operacyjnego v_GS_OPERATING_SYSTEM NA OS.ResourceID = RS.ResourceID ORAZ OS.BuildNumber0 = @BuildNumber1511
GDZIE UI.ArticleID IN (WYBIERZ ID artykułu Z @MarchWin101511)
)
-- Okna 10 1607
Zdeklaruj @BuildNumber1607 INT = '14393'
Zdeklaruj tabelę @MarchWin101607 (ID artykułu NVARCHAR(20))
WSTAW WARTOŚCI @MarchWin101607 („4013429”) -- Marzec zbiorczy
WSTAW WARTOŚCI @MarchWin101607 („4015217”)
WSTAW WARTOŚCI @MarchWin101607 („4015438”)
WSTAW WARTOŚCI @MarchWin101607 („4016635”)
WSTAW WARTOŚCI @MarchWin101607 („4019472”)
WYBIERZ RS.Nazwa0, OS.BuildNumber0 Z v_R_System RS
DOŁĄCZ do systemu operacyjnego v_GS_OPERATING_SYSTEM NA RS.ResourceID = OS.ResourceID ORAZ OS.BuildNumber0 = @BuildNumber1607
GDZIE NIE JEST RS.Name0 (
WYBIERZ RS.Nazwa0
Z v_Update_ComplianceStatusZgłoszony UCS
DOŁĄCZ do interfejsu użytkownika v_UpdateInfo NA UCS.CI_ID = UI.CI_ID
DOŁĄCZ v_R_System RS ON RS.ResourceType=5 ORAZ RS.ResourceID = UCS.ResourceID
DOŁĄCZ v_StateNames SN NA SN.TopicType=500 I SN.StateID=3 ORAZ SN.StateID = UCS.Status
DOŁĄCZ do systemu operacyjnego v_GS_OPERATING_SYSTEM NA OS.ResourceID = RS.ResourceID ORAZ OS.BuildNumber0 = @BuildNumber1607
GDZIE UI.ArticleID IN (WYBIERZ ID artykułu Z @MarchWin101607)
)
Scenariusz 2: Klienci z regułą zastępowania ustawioną na „Natychmiast wygasa” (lub nie wystarczająco długo):
Ponieważ jednostki CU są zastępowane co miesiąc, i wygasło z powodu ustawienia opcji Reguły zastępowania programu ConfigMgr na „Natychmiast wygasa”, dane dotyczące zgodności nie są dostępne w przypadku aktualizacji, która wygasła – w tym scenariuszu, będziesz, Jednakże, mieć dane dotyczące zgodności dotyczące najnowszej dostępnej jednostki sterującej, dlatego najprostszą ścieżką byłoby wdrożenie najnowszej wersji CU i złożenie raportu na jej temat.
Opcje alternatywne (dla Windowsa 10 i Serwer 2016):
Opcje alternatywne do powyższych, które mogą pomóc w określeniu maszyn „zagrożonych”., poprzez zgłoszenie wygasłego CU, są następujące:
A. Rozszerzanie spisu sprzętu o Win32_QuickFixEngineering, i wykorzystywać te dane do identyfikowania maszyn „zagrożonych”.. Jeśli jakakolwiek maszyna nie ma żadnego pliku March, Zainstalowano CU w kwietniu lub maju, są „zagrożeni”. PAMIĘTAJ, że jeśli nie masz już tej opcji włączonej, włącz ją teraz, musisz poczekać, aż wszyscy klienci zgłoszą spis sprzętu.
-- Klienci z włączoną klasą Win32_QuickFixEngineering dla HINV mogą korzystać z tych zapytań.
-- Okna 10 maszyny, które nie mają marca (lub którakolwiek z zastępujących aktualizacji) zainstalowany i może być „zagrożony”.
-- Te zapytania zależą od systemu operacyjnego, ponieważ odpytujemy poszczególne KB, i muszę porównać te KB z odpowiednimi kompilacjami, aby zapobiec uzyskaniu niedokładnych wyników.
-- Zapytanie ogranicza wyniki dla maszyn, które mają co najmniej jeden wiersz w klasie v_GS_Quick_Fix_Engineering, aby upewnić się, że istnieją pewne dane HINV dla maszyny w tej klasie.
-- Okna 10 RTM
Zdeklaruj @BuildNumberRTM INT = '10240'
DEKLARACJA @MarchWin10 TABELA (ID artykułu NVARCHAR(20))
WSTAW WARTOŚCI @MarchWin10 („4012606”) -- Marzec zbiorczy
WSTAW WARTOŚCI @MarchWin10 („4019474”)
WSTAW WARTOŚCI @MarchWin10 („4015221”)
WSTAW WARTOŚCI @MarchWin10 („4016637”)
WYBIERZ RS.Nazwa0, OS.Numer kompilacji0, QFE.HotFixID0, LICZYĆ(QFEALL.HotFixID0) AS TotalHotfixs Z v_R_System RS
DOŁĄCZ v_GS_OPERATING_SYSTEM OS NA OS.ResourceID = RS.ResourceID ORAZ OS.BuildNumber0 = @BuildNumberRTM
DOŁĄCZ v_GS_QUICK_FIX_ENGINEERING QFEALL NA QFEALL.ResourceID = RS.ResourceID
LEWY DOŁĄCZ v_GS_QUICK_FIX_ENGINEERING QFE NA QFE.ResourceID = RS.ResourceID ORAZ QFE.HotFixID0 IN (WYBIERZ „KB” + ID artykułu z @MarchWin10)
GDZIE QFE.HotFixID0 ma wartość NULL
GRUPUJ WEDŁUG RS.Name0, OS.Numer kompilacji0, QFE.HotFixID0
POSIADAMY LICZBĘ(QFEALL.HotFixID0) > 0
-- Okna 10 1511
Zdeklaruj @BuildNumber1511 INT = '10586'
DEKLARACJA TABELI @MarchWin101511 (ID artykułu NVARCHAR(20))
WSTAW WARTOŚCI @MarchWin101511 („4013198”) -- Marzec zbiorczy
WSTAW WARTOŚCI @MarchWin101511 („4015219”)
WSTAW WARTOŚCI @MarchWin101511 („4016636”)
WSTAW WARTOŚCI @MarchWin101511 („4019473”)
WYBIERZ RS.Nazwa0, OS.Numer kompilacji0, QFE.HotFixID0, LICZYĆ(QFEALL.HotFixID0) AS TotalHotfixs Z v_R_System RS
DOŁĄCZ do systemu operacyjnego v_GS_OPERATING_SYSTEM NA OS.ResourceID = RS.ResourceID ORAZ OS.BuildNumber0 = @BuildNumber1511
DOŁĄCZ v_GS_QUICK_FIX_ENGINEERING QFEALL NA QFEALL.ResourceID = RS.ResourceID
LEWY DOŁĄCZ v_GS_QUICK_FIX_ENGINEERING QFE NA QFE.ResourceID = RS.ResourceID ORAZ QFE.HotFixID0 IN (WYBIERZ „KB” + ID artykułu Z @MarchWin101511)
GDZIE QFE.HotFixID0 ma wartość NULL
GRUPUJ WEDŁUG RS.Name0, OS.Numer kompilacji0, QFE.HotFixID0
POSIADAMY LICZBĘ(QFEALL.HotFixID0) > 0
-- Okna 10 1607
Zdeklaruj @BuildNumber1607 INT = '14393'
Zdeklaruj tabelę @MarchWin101607 (ID artykułu NVARCHAR(20))
WSTAW WARTOŚCI @MarchWin101607 („4013429”) -- Marzec zbiorczy
WSTAW WARTOŚCI @MarchWin101607 („4015217”)
WSTAW WARTOŚCI @MarchWin101607 („4015438”)
WSTAW WARTOŚCI @MarchWin101607 („4016635”)
WSTAW WARTOŚCI @MarchWin101607 („4019472”)
WYBIERZ RS.Nazwa0, OS.Numer kompilacji0, QFE.HotFixID0, LICZYĆ(QFEALL.HotFixID0) AS TotalHotfixs Z v_R_System RS
DOŁĄCZ do systemu operacyjnego v_GS_OPERATING_SYSTEM NA OS.ResourceID = RS.ResourceID ORAZ OS.BuildNumber0 = @BuildNumber1607
DOŁĄCZ v_GS_QUICK_FIX_ENGINEERING QFEALL NA QFEALL.ResourceID = RS.ResourceID
LEWY DOŁĄCZ v_GS_QUICK_FIX_ENGINEERING QFE NA QFE.ResourceID = RS.ResourceID ORAZ QFE.HotFixID0 IN (WYBIERZ „KB” + ID artykułu Z @MarchWin101607)
GDZIE QFE.HotFixID0 ma wartość NULL
GRUPUJ WEDŁUG RS.Name0, OS.Numer kompilacji0, QFE.HotFixID0
POSIADAMY LICZBĘ(QFEALL.HotFixID0) > 0
B. Utwórz element konfiguracji i linię bazową, która wysyła zapytanie do pliku March, Kwietniowe i majowe CU od Win32_QuickFixEngineering i raporty dotyczące zgodności. Oto przykładowy skrypt PowerShell napisany przez Umaira Khana, którego można użyć w planie bazowym DCM:
$ZainstalowanyKBList = Get-Wmiobject -class Win32_QuickFixEngineering -przestrzeń nazw "rootcimv2" | wybierz obiekt - Właściwość HotFixID | Ciąg wyjściowy
[szyk]$Lista WannaCry =
"KB4012598",
"KB4012212",
"KB4012215",
"KB4012213",
"KB4012216",
"KB4012214",
"KB4012217",
"KB4012606",
"KB4013198",
"KB4013429",
"KB4015219",
"KB4015221",
"KB4016636",
"KB4015438",
"KB4015550",
"KB4015551",
"KB4016637",
"KB4019473",
"KB4016635",
"KB4018466",
"KB4015552",
"KB4019215",
"KB4019216",
"KB4019474",
"KB4019472",
"KB4019264"
$Zgodny = 0;
dla każdego ($element w $WannaCryList)
{
Jeśli ($ZainstalowanoKBList -dopasuj $elem)
{
#Zapis-wyjście "$Znaleziono element"
$Zgodny = 1
przerwa
}
}
$Zgodny