WannaCrypt Ransomware İle İlgili Güncellemelerin SCCM üzerinde SQL Query Aracılığıyla Kontrol Edilmesi

Merhabalar,

Bu yazımda WannaCrypt Ransomware saldırılarına yönelik güncellemelerin istemciler üzerinde başarılı bir şekilde kurulup kurulmadığını kontrol etmek amacı ile SCCM üzerinde SQL Query’ aracılığıyla bu işlemi gereçekleştirebilirsiniz. WannaCrypt Ransomware saldırılarından kaynaklanan bir çok işletmenin zarar gördüğü bu saldırı sonrasında işletmelerdeki veri kayıpları ve maddi zarar paha biçilemez bir duruma geldi.

Bunun için Microsoft tarafından yayınlanan Güvenlik bültenleri ve güncellemelerin altyapınızda bulunan bütün İstemci ve Sunucu platformlarına dağıtılması gerekmektedir.

İşte burda altyapınızda bulunan bütün istemci ve sunucu platformlarınıza bu güvenlik bülteni kapsamındaki güncellemelerinin kurulup kurulmadığını kontrol etmeniz amacıyla ilgili SQL Query’ leri paylaşıyorum.

Öncelikle Microsoft tarafında yayınlanan MS17-010 Güvenlik Güncelleştirmesi matrix’ inin inceleyebilirsiniz.

Server 2016 ve Window 10 Öncesi İşletim Sistemleri

Windows 10 ve Server 2016 öncesindeki işletim sistemleri üzerine yüklenmesi gereken güncellemelerin listesi aşağıdaki gibidir.

Windows Vista and Server 2008 SP2: KB4012598

Windows 7 and Server 2008 R2 SP1: KB4012212

Windows Server 2012: KB4012214

Windows Server 2012 R2 and Windows 8.1: KB4012213

Bu güncellemelerin ortamınızda bulunan istemciler ve sunucular üzerinde bulunup bulunmadığını kontrol etmek amacıyla aşağıdaki SQL Query’ sini kullanabilirsiniz.

eski-isletimsistemleri

-- Windows 7, Server 2008 R2 SP1, Windows Server 2012, Server 2012 R2 and Windows 8.1, Windows Vista and Server 2008 SP2
-- Bu sorgu, 'Yalnızca Güvenlik' güncellemelerinden herhangi birini 'Gerekli' olarak raporlayan makineleri listeler.
 
DECLARE @MarchSecurityOnly TABLE (ArticleID NVARCHAR(20))
INSERT INTO @MarchSecurityOnly VALUES ('4012212')
INSERT INTO @MarchSecurityOnly VALUES ('4012213')
INSERT INTO @MarchSecurityOnly VALUES ('4012214')
INSERT INTO @MarchSecurityOnly VALUES ('4012598')
 
DECLARE @MarchMonthly TABLE (ArticleID NVARCHAR(20))
INSERT INTO @MarchMonthly VALUES ('4012215')
INSERT INTO @MarchMonthly VALUES ('4015549')
INSERT INTO @MarchMonthly VALUES ('4019264')
INSERT INTO @MarchMonthly VALUES ('4012216')
INSERT INTO @MarchMonthly VALUES ('4015550')
INSERT INTO @MarchMonthly VALUES ('4019215')
INSERT INTO @MarchMonthly VALUES ('4012217')
INSERT INTO @MarchMonthly VALUES ('4015551')
INSERT INTO @MarchMonthly VALUES ('4019216')
 
DECLARE @KB2919355 NVARCHAR(10) = '2919355'-- Pre-req
 
SELECT 
       RS.Name0, 
       UI.ArticleID as ArticleID, 
       UI.BulletinID as BulletinID, 
       UI.Title as Title, 
       SN.StateDescription AS State,
       UCS.LastStatusCheckTime AS LastStateReceived,
       UCS.LastStatusChangeTime AS LastStateChanged,
       UI.CI_UniqueID AS UniqueUpdateID
FROM v_Update_ComplianceStatusReported UCS
JOIN v_UpdateInfo UI ON UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS ON RS.ResourceType=5 AND RS.ResourceID = UCS.ResourceID
JOIN v_StateNames SN ON SN.TopicType=500 AND SN.StateID=2 AND SN.StateID = UCS.Status
WHERE UI.ArticleID IN (SELECT ArticleID FROM @MarchSecurityOnly) 
AND RS.Name0 NOT IN (
       -- Monthly is installed
       SELECT distinct RS.Name0 
       FROM v_Update_ComplianceStatusReported UCS
       JOIN v_UpdateInfo UI ON UCS.CI_ID = UI.CI_ID
       JOIN v_R_System RS ON RS.ResourceType=5 AND RS.ResourceID = UCS.ResourceID
       JOIN v_StateNames SN ON SN.TopicType=500 AND SN.StateID=3 AND SN.StateID = UCS.Status
       WHERE UI.ArticleID IN (SELECT ArticleID FROM @MarchMonthly) 
)
UNION 
-- Yüklü olarak KB2919355 raporu olmayan 8.1 ve Windows Server 2012 R2 makineleri.
SELECT 
       distinct RS.Name0, 
       UI.ArticleID as ArticleID, 
       UI.BulletinID as BulletinID, 
       'KB2919355' as Title,      
       'Update is not Installed' AS State,
       NULL AS LastStateReceived,
       NULL AS LastStateChanged,
       'KB2919355' AS UniqueUpdateID
FROM v_Update_ComplianceStatusReported UCS
JOIN v_UpdateInfo UI ON UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS ON RS.ResourceType=5 AND RS.ResourceID = UCS.ResourceID
JOIN v_StateNames SN ON SN.TopicType=500 AND SN.StateID = UCS.Status AND SN.StateID <> 3
JOIN v_GS_OPERATING_SYSTEM OS ON RS.ResourceID = OS.ResourceID AND OS.BuildNumber0 = '9600' -- Windows 8.1 and Server 2012 R2

Windows 10 ve Server 2016 İşletim Sistemleri

Aşağıda belirtmiş olduğum güvenlik güncellemelerin ilgili işletim sistemleri üzerinde yüklenmiş olması gerekmektedir.

Win10 RTM: KB4012606, KB4019474, KB4015221, KB4016637

Win10 1511: KB4013198, KB4015219, KB4016636, KB4019473

Win10 1607/Server 2016: KB4013429, KB4015217, KB4015438, KB4016635, KB4019472

yeni-isletimsistemleri

-- Mart (veya yerini alan güncellemelerin herhangi birinin) yüklü olmadığı ve 'risk altında' olabileceği Windows 10 makineleri.

-- Windows 10 RTM

DECLARE @BuildNumberRTM INT = '10240'

DECLARE @MarchWin10 TABLE (ArticleID NVARCHAR(20))
INSERT INTO @MarchWin10 VALUES ('4012606') -- March Cumulative
INSERT INTO @MarchWin10 VALUES ('4019474')
INSERT INTO @MarchWin10 VALUES ('4015221')
INSERT INTO @MarchWin10 VALUES ('4016637')

SELECT RS.Name0, OS.BuildNumber0 FROM v_R_System RS
JOIN v_GS_OPERATING_SYSTEM OS ON RS.ResourceID = OS.ResourceID AND OS.BuildNumber0 = @BuildNumberRTM
WHERE RS.Name0 NOT IN (
    SELECT RS.Name0
    FROM v_Update_ComplianceStatusReported UCS
    JOIN v_UpdateInfo UI ON UCS.CI_ID = UI.CI_ID
    JOIN v_R_System RS ON RS.ResourceType=5 AND RS.ResourceID = UCS.ResourceID
    JOIN v_StateNames SN ON SN.TopicType=500 AND SN.StateID=3 AND SN.StateID = UCS.Status
    JOIN v_GS_OPERATING_SYSTEM OS ON OS.ResourceID = RS.ResourceID AND OS.BuildNumber0 = @BuildNumberRTM
    WHERE UI.ArticleID IN (SELECT ArticleID FROM @MarchWin10)
)

-- Windows 10 1511

DECLARE @BuildNumber1511 INT = '10586'

DECLARE @MarchWin101511 TABLE (ArticleID NVARCHAR(20))
INSERT INTO @MarchWin101511 VALUES ('4013198') -- March Cumulative
INSERT INTO @MarchWin101511 VALUES ('4015219')
INSERT INTO @MarchWin101511 VALUES ('4016636')
INSERT INTO @MarchWin101511 VALUES ('4019473')

SELECT RS.Name0, OS.BuildNumber0 FROM v_R_System RS
JOIN v_GS_OPERATING_SYSTEM OS ON RS.ResourceID = OS.ResourceID AND OS.BuildNumber0 = @BuildNumber1511
WHERE RS.Name0 NOT IN (
    SELECT RS.Name0
    FROM v_Update_ComplianceStatusReported UCS
    JOIN v_UpdateInfo UI ON UCS.CI_ID = UI.CI_ID
    JOIN v_R_System RS ON RS.ResourceType=5 AND RS.ResourceID = UCS.ResourceID
    JOIN v_StateNames SN ON SN.TopicType=500 AND SN.StateID=3 AND SN.StateID = UCS.Status
    JOIN v_GS_OPERATING_SYSTEM OS ON OS.ResourceID = RS.ResourceID AND OS.BuildNumber0 = @BuildNumber1511
    WHERE UI.ArticleID IN (SELECT ArticleID FROM @MarchWin101511)
)

-- Windows 10 1607

DECLARE @BuildNumber1607 INT = '14393'

DECLARE @MarchWin101607 TABLE (ArticleID NVARCHAR(20))
INSERT INTO @MarchWin101607 VALUES ('4013429') -- March Cumulative
INSERT INTO @MarchWin101607 VALUES ('4015217')
INSERT INTO @MarchWin101607 VALUES ('4015438')
INSERT INTO @MarchWin101607 VALUES ('4016635')
INSERT INTO @MarchWin101607 VALUES ('4019472')

SELECT RS.Name0, OS.BuildNumber0 FROM v_R_System RS
JOIN v_GS_OPERATING_SYSTEM OS ON RS.ResourceID = OS.ResourceID AND OS.BuildNumber0 = @BuildNumber1607
WHERE RS.Name0 NOT IN (
    SELECT RS.Name0
    FROM v_Update_ComplianceStatusReported UCS
    JOIN v_UpdateInfo UI ON UCS.CI_ID = UI.CI_ID
    JOIN v_R_System RS ON RS.ResourceType=5 AND RS.ResourceID = UCS.ResourceID
    JOIN v_StateNames SN ON SN.TopicType=500 AND SN.StateID=3 AND SN.StateID = UCS.Status
    JOIN v_GS_OPERATING_SYSTEM OS ON OS.ResourceID = RS.ResourceID AND OS.BuildNumber0 = @BuildNumber1607
    WHERE UI.ArticleID IN (SELECT ArticleID FROM @MarchWin101607)
)

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Twitter Auto Publish Powered By : XYZScripts.com