Requêtes SQL Configuration Manager pour les bases de connaissances liées au ransomware WannaCrypt.
L'approche la plus simple et la plus généralement recommandée consiste à déployer la dernière CU sur Windows. 10 ou serveur 2016 systèmes, déployer le dernier cumul mensuel sur les versions pré-Windows 10 Machines, et utilisez les rapports de conformité ConfigMgr intégrés pour déterminer la conformité globale.
Guide client officiel pour les attaques WannaCrypt: https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
Mise à jour de sécurité MS17-010: https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
Pré-Windows 10 Machines:
les fenêtres 8.1 et serveur 2012 Les machines R2 qui ne signalent pas KB2919355 comme installé seront renvoyées par la requête. En effet, KB2919355 est requis pour que les Ko ultérieurs soient signalés le cas échéant.. Donc, ces systèmes peuvent être considérés comme à risque et nécessitent une enquête plus approfondie.
Pour Windows Vista, les fenêtres 7, les fenêtres 8.1, Serveur Windows 2008 R2 SP1, Serveur Windows 2008 SP2, Serveur Windows 2012, et serveur Windows 2012 Requête R2 ci-dessous, les systèmes retournés seront ceux qui n'ont pas non plus le March, Cumuls mensuels d'avril ou de mai installés -ET- signalent les mises à jour spécifiques suivantes « Sécurité uniquement » comme « obligatoires »:
Windows Vista et serveur 2008 SP2: KB4012598
les fenêtres 7 et serveur 2008 R2 SP1: KB4012212
Serveur Windows 2012: KB4012214
Serveur Windows 2012 R2 et Windows 8.1: KB4012213
-- Pour les fenêtres 7, Serveur 2008 R2 SP1, Serveur Windows 2012, Serveur 2012 R2 et Windows 8.1, Windows Vista et serveur 2008 SP2
-- This query lists machines that are reporting any of the 'Security Only' updates as 'Required'.
-- Si une machine a soit Mars, Rollup mensuel d'avril ou de mai installé, then they wouldn't report March 'Security Only' update as 'Required', mais cherchez quand même les mises à jour mensuelles.
-- Incluez également tous les Windows 8.1 et serveur 2012 Machines R2 qui ne signalent pas « KB2919355 » comme installé.
DÉCLARER @MarchSecurityOnly TABLE (ArticleID NVARCHAR(20))
INSÉRER DANS LES VALEURS @MarchSecurityOnly ('4012212')
INSÉRER DANS LES VALEURS @MarchSecurityOnly ('4012213')
INSÉRER DANS LES VALEURS @MarchSecurityOnly ('4012214')
INSÉRER DANS LES VALEURS @MarchSecurityOnly ('4012598')
DÉCLARER @MarchMonthly TABLE (ArticleID NVARCHAR(20))
INSÉRER DANS LES VALEURS @MarchMonthly ('4012215')
INSÉRER DANS LES VALEURS @MarchMonthly ('4015549')
INSÉRER DANS LES VALEURS @MarchMonthly ('4019264')
INSÉRER DANS LES VALEURS @MarchMonthly ('4012216')
INSÉRER DANS LES VALEURS @MarchMonthly ('4015550')
INSÉRER DANS LES VALEURS @MarchMonthly ('4019215')
INSÉRER DANS LES VALEURS @MarchMonthly ('4012217')
INSÉRER DANS LES VALEURS @MarchMonthly ('4015551')
INSÉRER DANS LES VALEURS @MarchMonthly ('4019216')
DÉCLARER @KB2919355 NVARCHAR(10) = '2919355'-- Pré-requis
SÉLECTIONNER
RS.Nom0,
UI.ArticleID comme ArticleID,
UI.BulletinID comme BulletinID,
UI.Titre comme titre,
SN.StateDescription État AS,
UCS.LastStatusCheckTime AS LastStateReceived,
UCS.LastStatusChangeTime AS LastStateChanged,
UI.CI_UniqueID AS UniqueUpdateID
DE v_Update_ComplianceStatusReported UCS
REJOINDRE l'interface utilisateur v_UpdateInfo sur UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS SUR RS.ResourceType=5 ET RS.ResourceID = UCS.ResourceID
JOIN v_StateNames SN SUR SN.TopicType=500 ET SN.StateID=2 ET SN.StateID = UCS.Status
OÙ UI.ArticleID DANS (SELECT ArticleID FROM @MarchSecurityOnly)
ET RS.Name0 PAS DANS (
-- Le mois est installé
SELECT distinct RS.Name0
DE v_Update_ComplianceStatusReported UCS
REJOINDRE l'interface utilisateur v_UpdateInfo sur UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS SUR RS.ResourceType=5 ET RS.ResourceID = UCS.ResourceID
JOIN v_StateNames SN ON SN.TopicType=500 ET SN.StateID=3 ET SN.StateID = UCS.Status
OÙ UI.ArticleID DANS (SELECT ArticleID FROM @MarchMonthly)
)
SYNDICAT
-- les fenêtres 8.1 et serveur 2012 Machines R2 qui ne signalent pas KB2919355 comme installé.
SÉLECTIONNER
RS.Name0 distinct,
UI.ArticleID comme ArticleID,
UI.BulletinID comme 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' -- les fenêtres 8.1 et serveur 2012 R2
OÙ UI.ArticleID = @KB2919355
les fenêtres 10 et serveur 2016
Pour les fenêtres 10 et serveur 2016 requêtes, il y a 2 scénarios qui peuvent s'appliquer en fonction de la configuration d'un environnement à l'expiration des mises à jour remplacées dans ConfigMgr. Pour plus d'informations à ce sujet, voir la section Règles de supersédence sur TechNet et ceci.
Scénario 1: Clients dont la règle de remplacement n'est PAS définie sur « Expiration immédiate »:
Si les mises à jour remplacées ne sont pas expirées et sont donc toujours disponibles dans ConfigMgr, vous pouvez utiliser la requête suivante pour vous aider à identifier Windows 10 et serveur Windows 2016 systèmes sur lesquels la CU de mars ou une CU ultérieure n'est pas installée. Veuillez noter que pour que les données CU de mars soient évaluées, la valeur des mois à attendre avant l'expiration d'une mise à jour dans ConfigMgr doit être définie sur une valeur suffisamment élevée pour que la mise à jour de mars n'ait pas expiré. La même considération s'applique aux mises à jour ultérieures. Si cela ne s'applique pas à votre environnement, les informations dans Scénario 2: Clients dont la règle Supersedence est définie sur « Expire immédiatement » (ou pas assez longtemps) peut être essayé.
Pour les fenêtres suivantes 10 et serveur 2016, la requête ci-dessous renvoie les systèmes qui ne disposent d'aucune des CU mensuelles suivantes, sorti en mars ou plus tard (jusqu'à la date de ce message), installée:
Win10 RTM: KB4012606, KB4019474, KB4015221, KB4016637
Win10 1511: KB4013198, KB4015219, KB4016636, KB4019473
Win10 1607/serveur 2016: KB4013429, KB4015217, KB4015438, KB4016635, KB4019472
-- les fenêtres 10 machines qui n'ont pas la marche (ou l'une des mises à jour de remplacement) installée, and could be 'at risk'.
-- Ces requêtes dépendent du système d'exploitation, since we are querying individual KB's, and need to compare those KB's against proper builds to prevent getting inaccurate results.
-- les fenêtres 10 RTM
DECLARE @BuildNumberRTM INT = '10240'
DECLARE @MarchWin10 TABLE (ArticleID NVARCHAR(20))
INSÉRER DANS LES VALEURS @MarchWin10 ('4012606') -- Cumul de mars
INSÉRER DANS LES VALEURS @MarchWin10 ('4019474')
INSÉRER DANS LES VALEURS @MarchWin10 ('4015221')
INSÉRER DANS LES VALEURS @MarchWin10 ('4016637')
SELECT RS.Nom0, OS.BuildNumber0 DE v_R_System RS
REJOINDRE le système d'exploitation v_GS_OPERATING_SYSTEM SUR RS.ResourceID = OS.ResourceID ET OS.BuildNumber0 = @BuildNumberRTM
OÙ RS.Name0 PAS DANS (
SELECT RS.Nom0
DE v_Update_ComplianceStatusReported UCS
REJOINDRE l'interface utilisateur v_UpdateInfo sur UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS SUR RS.ResourceType=5 ET RS.ResourceID = UCS.ResourceID
JOIN v_StateNames SN ON SN.TopicType=500 ET SN.StateID=3 ET SN.StateID = UCS.Status
REJOIGNEZ v_GS_OPERATING_SYSTEM OS SUR OS.ResourceID = RS.ResourceID ET OS.BuildNumber0 = @BuildNumberRTM
OÙ UI.ArticleID DANS (SELECT ArticleID FROM @MarchWin10)
)
-- les fenêtres 10 1511
DECLARE @BuildNumber1511 INT = '10586'
DECLARE @MarchWin101511 TABLE (ArticleID NVARCHAR(20))
INSÉRER DANS LES VALEURS @MarchWin101511 ('4013198') -- Cumul de mars
INSÉRER DANS LES VALEURS @MarchWin101511 ('4015219')
INSÉRER DANS LES VALEURS @MarchWin101511 ('4016636')
INSÉRER DANS LES VALEURS @MarchWin101511 ('4019473')
SELECT RS.Nom0, OS.BuildNumber0 DE v_R_System RS
REJOINDRE le système d'exploitation v_GS_OPERATING_SYSTEM SUR RS.ResourceID = OS.ResourceID ET OS.BuildNumber0 = @BuildNumber1511
OÙ RS.Name0 PAS DANS (
SELECT RS.Nom0
DE v_Update_ComplianceStatusReported UCS
REJOINDRE l'interface utilisateur v_UpdateInfo sur UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS SUR RS.ResourceType=5 ET RS.ResourceID = UCS.ResourceID
JOIN v_StateNames SN ON SN.TopicType=500 ET SN.StateID=3 ET SN.StateID = UCS.Status
REJOIGNEZ v_GS_OPERATING_SYSTEM OS SUR OS.ResourceID = RS.ResourceID ET OS.BuildNumber0 = @BuildNumber1511
OÙ UI.ArticleID DANS (SELECT ArticleID FROM @MarchWin101511)
)
-- les fenêtres 10 1607
DECLARE @BuildNumber1607 INT = '14393'
DECLARE @MarchWin101607 TABLE (ArticleID NVARCHAR(20))
INSÉRER DANS LES VALEURS @MarchWin101607 ('4013429') -- Cumul de mars
INSÉRER DANS LES VALEURS @MarchWin101607 ('4015217')
INSÉRER DANS LES VALEURS @MarchWin101607 ('4015438')
INSÉRER DANS LES VALEURS @MarchWin101607 ('4016635')
INSÉRER DANS LES VALEURS @MarchWin101607 ('4019472')
SELECT RS.Nom0, OS.BuildNumber0 DE v_R_System RS
REJOIGNEZ v_GS_OPERATING_SYSTEM OS SUR RS.ResourceID = OS.ResourceID ET OS.BuildNumber0 = @BuildNumber1607
OÙ RS.Name0 PAS DANS (
SELECT RS.Nom0
DE v_Update_ComplianceStatusReported UCS
REJOINDRE l'interface utilisateur v_UpdateInfo sur UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS SUR RS.ResourceType=5 ET RS.ResourceID = UCS.ResourceID
JOIN v_StateNames SN ON SN.TopicType=500 ET SN.StateID=3 ET SN.StateID = UCS.Status
REJOIGNEZ v_GS_OPERATING_SYSTEM OS SUR OS.ResourceID = RS.ResourceID ET OS.BuildNumber0 = @BuildNumber1607
OÙ UI.ArticleID DANS (SELECT ArticleID FROM @MarchWin101607)
)
Scénario 2: Clients dont la règle Supersedence est définie sur « Expire immédiatement » (ou pas assez longtemps):
Puisque les UC sont remplacées chaque mois, et a expiré en raison de la définition de l'option des règles de supersédence de ConfigMgr sur « Expire immédiatement », les données de conformité ne sont pas disponibles sur la mise à jour expirée – dans ce scénario, vous serez, cependant, disposer de données de conformité sur la dernière CU disponible, la voie la plus simple serait donc de déployer la dernière CU et d'en rendre compte.
Options alternatives (Pour les fenêtres 10 et serveur 2016):
Options alternatives à ce qui précède, cela peut aider à déterminer les machines « à risque », en signalant l'UC expirée, sont les suivants:
UN. Étendre l'inventaire matériel pour inclure Win32_QuickFixEngineering, et utiliser ces données pour identifier les machines « à risque ». Si une machine n'a ni mars, Avril ou mai CU installé, ils sont « à risque ». NOTEZ que si cette option n'est pas déjà activée, activez-la maintenant, vous devrez attendre que tous les clients signalent l'inventaire du matériel.
-- Les clients avec la classe Win32_QuickFixEngineering activée pour HINV peuvent utiliser ces requêtes.
-- les fenêtres 10 machines qui n'ont pas la marche (ou l'une des mises à jour de remplacement) installed and could be 'at risk'.
-- Ces requêtes dépendent du système d'exploitation, since we are querying individual KB's, and need to compare those KB's against proper builds to prevent getting inaccurate results.
-- La requête limite les résultats pour les machines qui ont au moins une ligne dans la classe v_GS_Quick_Fix_Engineering pour garantir qu'il existe des données HINV pour la machine pour cette classe.
-- les fenêtres 10 RTM
DECLARE @BuildNumberRTM INT = '10240'
DÉCLARATION @MarchWin10 TABLE (ArticleID NVARCHAR(20))
INSÉRER DANS LES VALEURS @MarchWin10 ('4012606') -- Cumul de mars
INSÉRER DANS LES VALEURS @MarchWin10 ('4019474')
INSÉRER DANS LES VALEURS @MarchWin10 ('4015221')
INSÉRER DANS LES VALEURS @MarchWin10 ('4016637')
SELECT RS.Nom0, OS.BuildNumber0, QFE.HotFixID0, COMPTER(QFEALL.HotFixID0) AS TotalHotfixes DE v_R_System RS
REJOIGNEZ v_GS_OPERATING_SYSTEM OS SUR OS.ResourceID = RS.ResourceID ET OS.BuildNumber0 = @BuildNumberRTM
REJOIGNEZ v_GS_QUICK_FIX_ENGINEERING QFEALL SUR QFEALL.ResourceID = RS.ResourceID
LEFT JOIN v_GS_QUICK_FIX_ENGINEERING QFE SUR QFE.ResourceID = RS.ResourceID ET QFE.HotFixID0 IN (SELECT 'KB' + ID de l'article DE @MarchWin10)
OÙ QFE.HotFixID0 EST NULL
GROUPER PAR RS.Nom0, OS.BuildNumber0, QFE.HotFixID0
AVOIR COMPTE(QFEALL.HotFixID0) > 0
-- les fenêtres 10 1511
DECLARE @BuildNumber1511 INT = '10586'
DECLARE @MarchWin101511 TABLE (ArticleID NVARCHAR(20))
INSÉRER DANS LES VALEURS @MarchWin101511 ('4013198') -- Cumul de mars
INSÉRER DANS LES VALEURS @MarchWin101511 ('4015219')
INSÉRER DANS LES VALEURS @MarchWin101511 ('4016636')
INSÉRER DANS LES VALEURS @MarchWin101511 ('4019473')
SELECT RS.Nom0, OS.BuildNumber0, QFE.HotFixID0, COMPTER(QFEALL.HotFixID0) AS TotalHotfixes DE v_R_System RS
REJOIGNEZ v_GS_OPERATING_SYSTEM OS SUR OS.ResourceID = RS.ResourceID ET OS.BuildNumber0 = @BuildNumber1511
REJOIGNEZ v_GS_QUICK_FIX_ENGINEERING QFEALL SUR QFEALL.ResourceID = RS.ResourceID
LEFT JOIN v_GS_QUICK_FIX_ENGINEERING QFE SUR QFE.ResourceID = RS.ResourceID ET QFE.HotFixID0 IN (SELECT 'KB' + ID de l'article DE @MarchWin101511)
OÙ QFE.HotFixID0 EST NULL
GROUPER PAR RS.Nom0, OS.BuildNumber0, QFE.HotFixID0
AVOIR COMPTE(QFEALL.HotFixID0) > 0
-- les fenêtres 10 1607
DECLARE @BuildNumber1607 INT = '14393'
DECLARE @MarchWin101607 TABLE (ArticleID NVARCHAR(20))
INSÉRER DANS LES VALEURS @MarchWin101607 ('4013429') -- Cumul de mars
INSÉRER DANS LES VALEURS @MarchWin101607 ('4015217')
INSÉRER DANS LES VALEURS @MarchWin101607 ('4015438')
INSÉRER DANS LES VALEURS @MarchWin101607 ('4016635')
INSÉRER DANS LES VALEURS @MarchWin101607 ('4019472')
SELECT RS.Nom0, OS.BuildNumber0, QFE.HotFixID0, COMPTER(QFEALL.HotFixID0) AS TotalHotfixes DE v_R_System RS
REJOIGNEZ v_GS_OPERATING_SYSTEM OS SUR OS.ResourceID = RS.ResourceID ET OS.BuildNumber0 = @BuildNumber1607
REJOIGNEZ v_GS_QUICK_FIX_ENGINEERING QFEALL SUR QFEALL.ResourceID = RS.ResourceID
LEFT JOIN v_GS_QUICK_FIX_ENGINEERING QFE SUR QFE.ResourceID = RS.ResourceID ET QFE.HotFixID0 IN (SELECT 'KB' + ID de l'article DE @MarchWin101607)
OÙ QFE.HotFixID0 EST NULL
GROUPER PAR RS.Nom0, OS.BuildNumber0, QFE.HotFixID0
AVOIR COMPTE(QFEALL.HotFixID0) > 0
B. Créez un élément de configuration et une ligne de base qui interrogent le mois de mars, CU d'avril et mai de Win32_QuickFixEngineering et rapports de conformité. Voici un exemple de script PowerShell écrit par Umair Khan qui peut être utilisé dans une référence DCM.:
$InstalledKBList = Get-Wmiobject -class Win32_QuickFixEngineering -namespace "racinecimv2" | select-object -Propriété HotFixID | Chaîne extérieure
[tableau]$WannaCryList =
"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"
$Conforme = 0;
pour chaque ($élément dans $WannaCryList)
{
si ($InstalledKBList -match $elem)
{
#Écriture-Sortie "$élément Trouvé"
$Conforme = 1
casser
}
}
$Conforme