Query SQL di Configuration Manager per KB relativi al ransomware WannaCrypt.
L'approccio più semplice e generalmente consigliato consiste nel distribuire la CU più recente in Windows 10 o Server 2016 sistemi, distribuire l'ultimo rollup mensile nelle versioni precedenti a Windows 10 macchine, e utilizzare i report di conformità ConfigMgr integrati per determinare la conformità generale.
Guida ufficiale ai clienti per gli attacchi WannaCrypt: https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
MS17-010 Aggiornamento della sicurezza: https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
Pre-Windows 10 macchine:
finestre 8.1 e Server 2012 La query restituirà le macchine R2 che non segnalano KB2919355 come installato. Questo perché è necessario KB2919355 affinché i KB successivi vengano segnalati come applicabili. COSÌ, questi sistemi possono essere considerati a rischio e richiedono ulteriori indagini.
Per Windows Vista, finestre 7, finestre 8.1, Server Windows 2008 R2SP1, Server Windows 2008 SP2, Server Windows 2012, e Server Windows 2012 Domanda R2 di seguito, i sistemi restituiti saranno quelli che non dispongono nemmeno della versione March, Rollup mensili di aprile o maggio installati -AND- segnalano i seguenti aggiornamenti specifici "Solo sicurezza" come "Obbligatori":
Windows Vista e server 2008 SP2: KB4012598
finestre 7 e Server 2008 R2SP1: KB4012212
Server Windows 2012: KB4012214
Server Windows 2012 R2 e Windows 8.1: KB4012213
-- Per Windows 7, server 2008 R2SP1, Server Windows 2012, server 2012 R2 e Windows 8.1, Windows Vista e server 2008 SP2
-- This query lists machines that are reporting any of the 'Security Only' updates as 'Required'.
-- Se qualsiasi macchina ha March, Rollup mensile di aprile o maggio installato, then they wouldn't report March 'Security Only' update as 'Required', ma cerca comunque gli aggiornamenti mensili.
-- Includere anche qualsiasi Windows 8.1 e Server 2012 Macchine R2 che non riportano "KB2919355" come installato.
DICHIARARE LA TABELLA @MarchSecurityOnly (ArticoloID NVARCHAR(20))
INSERIRE NEI VALORI @MarchSecurityOnly ('4012212')
INSERIRE NEI VALORI @MarchSecurityOnly ('4012213')
INSERIRE NEI VALORI @MarchSecurityOnly ('4012214')
INSERIRE NEI VALORI @MarchSecurityOnly ('4012598')
DICHIARA LA TABELLA @MarchMonthly (ArticoloID NVARCHAR(20))
INSERISCI IN VALORI @MarchMonthly ('4012215')
INSERISCI IN VALORI @MarchMonthly ('4015549')
INSERISCI IN VALORI @MarchMonthly ('4019264')
INSERISCI IN VALORI @MarchMonthly ('4012216')
INSERISCI IN VALORI @MarchMonthly ('4015550')
INSERISCI IN VALORI @MarchMonthly ('4019215')
INSERISCI IN VALORI @MarchMonthly ('4012217')
INSERISCI IN VALORI @MarchMonthly ('4015551')
INSERISCI IN VALORI @MarchMonthly ('4019216')
DICHIARARE @KB2919355 NVARCHAR(10) = '2919355'-- Pre-richiesta
SELEZIONARE
RS.Nome0,
UI.ArticleID come ArticleID,
UI.BulletinID come BulletinID,
UI.Title come titolo,
SN.StateDescription Stato AS,
UCS.LastStatusCheckTime AS LastStateReceived,
UCS.LastStatusChangeTime AS LastStateChanged,
UI.CI_UniqueID AS UniqueUpdateID
DA v_Update_ComplianceStatusReported UCS
UNISCITI a v_UpdateInfo UI SU UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS ON RS.ResourceType=5 AND RS.ResourceID = UCS.ResourceID
UNISCITI a v_StateNames SN ON SN.TopicType=500 AND SN.StateID=2 AND SN.StateID = UCS.Status
DOVE UI.ArticleID IN (SELEZIONA ArticleID DA @MarchSecurityOnly)
E RS.Nome0 NON IN (
-- Mensile è installato
SELEZIONA RS.Name0 distinto
DA v_Update_ComplianceStatusReported UCS
UNISCITI a v_UpdateInfo UI SU UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS ON RS.ResourceType=5 AND RS.ResourceID = UCS.ResourceID
UNISCITI a v_StateNames SN ON SN.TopicType=500 AND SN.StateID=3 AND SN.StateID = UCS.Status
DOVE UI.ArticleID IN (SELEZIONA ArticleID DA @MarchMonthly)
)
UNIONE
-- finestre 8.1 e Server 2012 Macchine R2 che non segnalano KB2919355 come installato.
SELEZIONARE
RS.Name0 distinto,
UI.ArticleID come ArticleID,
UI.BulletinID come 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' -- finestre 8.1 e Server 2012 R2
DOVE UI.ArticleID = @KB2919355
finestre 10 e Server 2016
Per Windows 10 e Server 2016 interrogazioni, ci sono 2 scenari che potrebbero applicarsi a seconda della configurazione di un ambiente alla scadenza degli aggiornamenti sostituiti in ConfigMgr. Per ulteriori informazioni su questo, vedere la sezione Regole di sostituzione su TechNet e questo.
Scenario 1: Clienti con regola di sostituzione NON impostata su "Scadenza immediata":
Se gli aggiornamenti sostituiti non sono scaduti e quindi ancora disponibili in ConfigMgr, è possibile utilizzare la query seguente per identificare Windows 10 e Server Windows 2016 sistemi su cui non è installata la CU March o una CU successiva. Si prega di notare che per il CU di marzo i dati sono da valutare, il valore dei mesi di attesa prima della scadenza di un aggiornamento in ConfigMgr deve essere impostato su un valore sufficientemente alto in modo che l'aggiornamento di marzo non sia scaduto. La stessa considerazione vale per i successivi aggiornamenti. Se questo non si applica al tuo ambiente, le informazioni in Scenario 2: Clienti con regola di sostituzione impostata su "Scadenza immediata" (o non abbastanza a lungo) può essere provato.
Per le seguenti finestre 10 e Server 2016, la query seguente restituisce sistemi che non dispongono di nessuna delle seguenti CU mensili, rilasciato a marzo o più tardi (fino alla data di questo post), installato:
Win10 RTM: KB4012606, KB4019474, KB4015221, KB4016637
Win10 1511: KB4013198, KB4015219, KB4016636, KB4019473
Win10 1607/Server 2016: KB4013429, KB4015217, KB4015438, KB4016635, KB4019472
-- finestre 10 macchine che non hanno la marcia (o uno qualsiasi degli aggiornamenti sostitutivi) installato, and could be 'at risk'.
-- Queste query dipendono dal sistema operativo, since we are querying individual KB's, and need to compare those KB's against proper builds to prevent getting inaccurate results.
-- finestre 10 RTM
DECLARE @BuildNumberRTM INT = '10240'
DECLARE @MarchWin10 TABLE (ArticoloID NVARCHAR(20))
INSERIRE NEI VALORI @MarchWin10 ('4012606') -- Marzo cumulativo
INSERIRE NEI VALORI @MarchWin10 ('4019474')
INSERIRE NEI VALORI @MarchWin10 ('4015221')
INSERIRE NEI VALORI @MarchWin10 ('4016637')
SELEZIONA RS.Nome0, OS.BuildNumber0 DA v_R_System RS
UNISCITI al sistema operativo v_GS_OPERATING_SYSTEM SU RS.ResourceID = OS.ResourceID AND OS.BuildNumber0 = @BuildNumberRTM
DOVE RS.Nome0 NON IN (
SELEZIONA RS.Nome0
DA v_Update_ComplianceStatusReported UCS
UNISCITI a v_UpdateInfo UI SU UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS ON RS.ResourceType=5 AND RS.ResourceID = UCS.ResourceID
UNISCITI a v_StateNames SN ON SN.TopicType=500 AND SN.StateID=3 AND SN.StateID = UCS.Status
UNISCITI al sistema operativo v_GS_OPERATING_SYSTEM SU OS.ResourceID = RS.ResourceID E OS.BuildNumber0 = @BuildNumberRTM
DOVE UI.ArticleID IN (SELEZIONA ArticoloID DA @MarchWin10)
)
-- finestre 10 1511
DECLARE @BuildNumber1511 INT = '10586'
DECLARE @MarchWin101511 TABLE (ArticoloID NVARCHAR(20))
INSERIRE NEI VALORI @MarchWin101511 ('4013198') -- Marzo cumulativo
INSERIRE NEI VALORI @MarchWin101511 ('4015219')
INSERIRE NEI VALORI @MarchWin101511 ('4016636')
INSERIRE NEI VALORI @MarchWin101511 ('4019473')
SELEZIONA RS.Nome0, OS.BuildNumber0 DA v_R_System RS
UNISCITI al sistema operativo v_GS_OPERATING_SYSTEM SU RS.ResourceID = OS.ResourceID AND OS.BuildNumber0 = @BuildNumber1511
DOVE RS.Nome0 NON IN (
SELEZIONA RS.Nome0
DA v_Update_ComplianceStatusReported UCS
UNISCITI a v_UpdateInfo UI SU UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS ON RS.ResourceType=5 AND RS.ResourceID = UCS.ResourceID
UNISCITI a v_StateNames SN ON SN.TopicType=500 AND SN.StateID=3 AND SN.StateID = UCS.Status
UNISCITI al sistema operativo v_GS_OPERATING_SYSTEM SU OS.ResourceID = RS.ResourceID E OS.BuildNumber0 = @BuildNumber1511
DOVE UI.ArticleID IN (SELEZIONA ID articolo DA @MarchWin101511)
)
-- finestre 10 1607
DECLARE @BuildNumber1607 INT = '14393'
DECLARE @MarchWin101607 TABLE (ArticoloID NVARCHAR(20))
INSERIRE NEI VALORI @MarchWin101607 ('4013429') -- Marzo cumulativo
INSERIRE NEI VALORI @MarchWin101607 ('4015217')
INSERIRE NEI VALORI @MarchWin101607 ('4015438')
INSERIRE NEI VALORI @MarchWin101607 ('4016635')
INSERIRE NEI VALORI @MarchWin101607 ('4019472')
SELEZIONA RS.Nome0, OS.BuildNumber0 DA v_R_System RS
UNISCITI al sistema operativo v_GS_OPERATING_SYSTEM SU RS.ResourceID = OS.ResourceID AND OS.BuildNumber0 = @BuildNumber1607
DOVE RS.Nome0 NON IN (
SELEZIONA RS.Nome0
DA v_Update_ComplianceStatusReported UCS
UNISCITI a v_UpdateInfo UI SU UCS.CI_ID = UI.CI_ID
JOIN v_R_System RS ON RS.ResourceType=5 AND RS.ResourceID = UCS.ResourceID
UNISCITI a v_StateNames SN ON SN.TopicType=500 AND SN.StateID=3 AND SN.StateID = UCS.Status
UNISCITI al sistema operativo v_GS_OPERATING_SYSTEM SU OS.ResourceID = RS.ResourceID E OS.BuildNumber0 = @BuildNumber1607
DOVE UI.ArticleID IN (SELEZIONA ID articolo DA @MarchWin101607)
)
Scenario 2: Clienti con regola di sostituzione impostata su "Scadenza immediata" (o non abbastanza a lungo):
Poiché le CU vengono sostituite ogni mese, e scaduto a causa dell'opzione Regole di sostituzione di ConfigMgr impostata su "Scadenza immediata", i dati di conformità non sono disponibili sull'aggiornamento scaduto – in questo scenario, desideri, Tuttavia, disporre dei dati di conformità sulla CU più recente disponibile, quindi il percorso più semplice da seguire sarebbe distribuire l'ultima CU e riferire su di essa.
Opzioni alternative (per Windows 10 e Server 2016):
Opzioni alternative a quanto sopra, che possono aiutare a determinare le macchine “a rischio”., segnalando la CU scaduta, sono come segue:
UN. Estendi l'inventario hardware per includere Win32_QuickFixEngineering, e utilizzare questi dati per identificare le macchine “a rischio”.. Se qualsiasi macchina non ha né marzo, CU di aprile o maggio installato, sono "a rischio". NOTA che se non lo hai già abilitato, abilitalo ora, dovresti attendere che tutti i client segnalino l'inventario hardware.
-- I clienti con la classe Win32_QuickFixEngineering abilitata per HINV possono utilizzare queste query.
-- finestre 10 macchine che non hanno la marcia (o uno qualsiasi degli aggiornamenti sostitutivi) installed and could be 'at risk'.
-- Queste query dipendono dal sistema operativo, since we are querying individual KB's, and need to compare those KB's against proper builds to prevent getting inaccurate results.
-- La query limita i risultati per le macchine che hanno almeno una riga nella classe v_GS_Quick_Fix_Engineering per garantire che siano presenti alcuni dati HINV per la macchina per questa classe.
-- finestre 10 RTM
DECLARE @BuildNumberRTM INT = '10240'
DICHIARAZIONE @MarchWin10 TABELLA (ArticoloID NVARCHAR(20))
INSERIRE NEI VALORI @MarchWin10 ('4012606') -- Marzo cumulativo
INSERIRE NEI VALORI @MarchWin10 ('4019474')
INSERIRE NEI VALORI @MarchWin10 ('4015221')
INSERIRE NEI VALORI @MarchWin10 ('4016637')
SELEZIONA RS.Nome0, OS.BuildNumber0, QFE.HotFixID0, CONTARE(QFEALL.HotFixID0) AS TotalHotfix DA v_R_System RS
UNISCITI al sistema operativo v_GS_OPERATING_SYSTEM SU OS.ResourceID = RS.ResourceID E OS.BuildNumber0 = @BuildNumberRTM
UNISCITI a v_GS_QUICK_FIX_ENGINEERING QFEALL SU QFEALL.ResourceID = RS.ResourceID
SINISTRA JOIN v_GS_QUICK_FIX_ENGINEERING QFE ON QFE.ResourceID = RS.ResourceID AND QFE.HotFixID0 IN (SELECT 'KB' + ID articolo DA @MarchWin10)
DOVE QFE.HotFixID0 È NULL
GRUPPO PER RS.Nome0, OS.BuildNumber0, QFE.HotFixID0
AVERE CONTE(QFEALL.HotFixID0) > 0
-- finestre 10 1511
DECLARE @BuildNumber1511 INT = '10586'
DECLARE @MarchWin101511 TABLE (ArticoloID NVARCHAR(20))
INSERIRE NEI VALORI @MarchWin101511 ('4013198') -- Marzo cumulativo
INSERIRE NEI VALORI @MarchWin101511 ('4015219')
INSERIRE NEI VALORI @MarchWin101511 ('4016636')
INSERIRE NEI VALORI @MarchWin101511 ('4019473')
SELEZIONA RS.Nome0, OS.BuildNumber0, QFE.HotFixID0, CONTARE(QFEALL.HotFixID0) AS TotalHotfix DA v_R_System RS
UNISCITI al sistema operativo v_GS_OPERATING_SYSTEM SU OS.ResourceID = RS.ResourceID E OS.BuildNumber0 = @BuildNumber1511
UNISCITI a v_GS_QUICK_FIX_ENGINEERING QFEALL SU QFEALL.ResourceID = RS.ResourceID
SINISTRA JOIN v_GS_QUICK_FIX_ENGINEERING QFE ON QFE.ResourceID = RS.ResourceID AND QFE.HotFixID0 IN (SELECT 'KB' + ID articolo DA @MarchWin101511)
DOVE QFE.HotFixID0 È NULL
GRUPPO PER RS.Nome0, OS.BuildNumber0, QFE.HotFixID0
AVERE CONTE(QFEALL.HotFixID0) > 0
-- finestre 10 1607
DECLARE @BuildNumber1607 INT = '14393'
DECLARE @MarchWin101607 TABLE (ArticoloID NVARCHAR(20))
INSERIRE NEI VALORI @MarchWin101607 ('4013429') -- Marzo cumulativo
INSERIRE NEI VALORI @MarchWin101607 ('4015217')
INSERIRE NEI VALORI @MarchWin101607 ('4015438')
INSERIRE NEI VALORI @MarchWin101607 ('4016635')
INSERIRE NEI VALORI @MarchWin101607 ('4019472')
SELEZIONA RS.Nome0, OS.BuildNumber0, QFE.HotFixID0, CONTARE(QFEALL.HotFixID0) AS TotalHotfix DA v_R_System RS
UNISCITI al sistema operativo v_GS_OPERATING_SYSTEM SU OS.ResourceID = RS.ResourceID E OS.BuildNumber0 = @BuildNumber1607
UNISCITI a v_GS_QUICK_FIX_ENGINEERING QFEALL SU QFEALL.ResourceID = RS.ResourceID
SINISTRA JOIN v_GS_QUICK_FIX_ENGINEERING QFE ON QFE.ResourceID = RS.ResourceID AND QFE.HotFixID0 IN (SELECT 'KB' + ID articolo DA @MarchWin101607)
DOVE QFE.HotFixID0 È NULL
GRUPPO PER RS.Nome0, OS.BuildNumber0, QFE.HotFixID0
AVERE CONTE(QFEALL.HotFixID0) > 0
B. Creare un elemento di configurazione e una baseline che interroghi March, CU di aprile e maggio da Win32_QuickFixEngineering e rapporti di conformità. Ecco uno script PowerShell di esempio scritto da Umair Khan che può essere utilizzato in una baseline DCM:
$InstalledKBList = Get-Wmiobject -class Win32_QuickFixEngineering -namespace "rootcimv2" | select-object -Property HotFixID | Out-String
[vettore]$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;
per ciascuno ($elemento in $WannaCryList)
{
Se ($InstalledKBList -match $elem)
{
#Scrittura-Output "$elem Trovato"
$Conforme = 1
rottura
}
}
$Conforme