Windows-Systeme mit der PowerShell auf Sicherheitslücken scannen Die PowerShell als Schwachstellen-Scanner
Anbieter zum Thema
Microsoft bietet für die PowerShell ein Modul mit dem sich direkt die Daten für aktuelle CVEs aus dem Microsoft Secruity Response auslesen lassen. Das hilft bei der Suche nach fehlenden CVEs und ermöglicht weitreichende Filtermöglichkeiten. Der Beitrag zeigt die Möglichkeiten des Moduls.

Die PowerShell ist ein mächtiges Werkzeug, wenn es darum geht Einstellungen im Netzwerk abzufragen und Anpassungen für Server vorzunehmen. Die Möglichkeiten lassen sich dazu nutzen, nach Schwachstellen zu suchen und auf offiziellen Microsoft-Quellen die aktuellen CVEs für den jeweiligen Monat und die eingesetzten Systeme zu filtern. Wir zeigen in diesem Beitrag, wie das geht. Vor allem für die Suche nach Schwachstellen auf Windows-Servern und von Windows-Arbeitsstationen ist die PowerShell ideal, da sie direkt auf Funktionen von Windows zugreifen kann. Sicherheitslücken lassen sich dadurch zuverlässig erkennen und die PowerShell kann dabei helfen jederzeit die notwendigen Informationen zu fehlenden CVEs zu erhalten.
:quality(80)/p7i.vogel.de/wcms/2f/04/2f04fabacf1f502881617fa4880550d5/0110315149.jpeg)
Video-Tipp #60 Skriptsicherheit und Malwareschutz mit der PowerShell
Mehr Sicherheit für die PowerShell
Die CVEs aus dem Microsoft Secruity Response Center in der PowerShell nutzen
Interessant für die Suche nach Schwachstellen ist für Microsoft-Admins das Microsoft Security Response Center (MSRC). Dabei handelt es sich um die zentrale Anlaufstelle für Schwachstellen in Microsoft-Produkten. Über den Security Update Guide des MSRC sind die Schwachstellen, Patches und Informationen zu den Sicherheitslücken zu finden. Diese Informationen lassen sich in der PowerShell nutzen. Dazu kommt das PowerShell-Modul "MSRCSecurityUpdates" zum Einsatz, das sich nachträglich mit dem folgenden Befehl installieren lässt:
Install-Module -Name MSRCSecurityUpdates -Force
Alle verfügbaren Befehle des Moduls zeigt die PowerShell mit dem folgenden Befehl an:
Get-Command -Module MSRCSecurityUpdates
Aktuelle Liste von Schwachstellen mit der PowerShell aus dem MSRC herunterladen
Mit dem Modul ist es zum Beispiel möglich die aktuellen Schwachstellen eines Monats in eine Datei herunterzuladen und mit der PowerShell auszuwerten. Der Inhalt der Datei umfasst die CVEs des aktuellen Monats und auch deren ID. Der Download erfolgt am Beispiel von Januar 2023 mit:
Get-MsrcCvrfDocument -ID "2023-Jan" -Verbose | Get-MsrcSecurityBulletinHtml -Verbose | Out-File "C:\Temp\cve-januar.html"
Nach dem Download steht die HTML-Datei zur Verfügung und lässt sich zum Beispiel im Webrowser öffnen. Die Datei lässt sich aber nicht nur im Webbrowser auslesen, sondern die PowerShell ist in der Lage einzelne Informationen zu verwerten. Für die weitere Verarbeitung ist es sinnvoll die CVEs des einzelnen Monats mit "Get-MsrcCvrfDocument -ID "2023-Jan"" abzufragen und die Daten danach in einer Variablen zu speichern, zum Beispiel "$cveinfo":
$cveinfo = Get-MsrcCvrfDocument -ID "2023-Jan"
Die Variable enthält jetzt die CVEs, die mit dem Cmdlet "Get-MsrcCvrfDocument" in diesem Beispiel für den Monat Januar 2023 abgerufen wurden. Diese Daten lassen sich weiter verwenden. Eine aufbereitete Liste kann zum Beispiel über folgenden Befehl erstellt werden:
Get-MsrcCvrfAffectedSoftware -Vulnerability $cveinfo.Vulnerability -ProductTree $cveinfo.ProductTree
Der Befehl liest aus der Datei genau die Infos heraus die Admins brauchen, um zu prüfen ob auf Rechnern im Netzwerk Betriebssysteme installiert sind, für die es aktuelle Updates gibt. Um nach einer bestimmten Schwachstelle zu suchen, zum Beispiel nach CVE-2023-21748, kann das Cmdlet "Get-MsrcSecurityUpdate" genutzt werden:
Get-MsrcSecurityUpdate -Vulnerability "CVE-2023-21748"
Der Befehl listet danach genau die Updates und betroffenen Betriebssysteme heraus, die das jeweilige CVE betreffen. Mit den hier beschrieben Möglichkeiten können in der PowerShell daher recht umfassend Informationen zu CVEs abgerufen werden.
:quality(80)/p7i.vogel.de/wcms/66/2f/662f505ad0f28d14f072c193234d918b/0109024212.jpeg)
Video-Tipp #56: NTFS-Berechtigungen in der PowerShell
Berechtigungen in Windows mit der PowerShell steuern
CVEs in der PowerShell auswerten
Im oberen Abschnitt haben wir gezeigt, wie sich die aktuellen CVEs in einem Monat als Variable speichern lassen. Dazu ist auch der Wert von "Type" interessant. Hier integriert die Abfrage einen von acht Typen, nach denen Informationen gefiltert werden können:
- Schwachstelle: Abhilfemaßnahme Typ 0 ist ein Workaround
- Schwachstelle: Abhilfemaßnahme Typ 1 ist eine Abschwächung (Mitigation)
- Schwachstelle: Hinweise: Typ 2 ist eine Beschreibung
- Schwachstelle: Notizen: Typ 4 ist eine FAQ
- Schwachstelle: Behebung: Typ 5 ist ein bekanntes Problem
- Sicherheitsanfälligkeit: Hinweise: Typ 7 ist eine Markierung
- Schwachstelle: Notizen: Typ 8 ist eine ausstellende CNA
Sollen aus der Datei zum Beispiel nur Typ 0 oder Typ 1 ausgelesen werden, können folgende Abfragen genutzt werden:
$cveinfo.Vulnerability.Remediations | Where Type -EQ 0
$cveinfo.Vulnerability.Remediations | Where Type -EQ 1
Dadurch wird sofort ersichtlich, ob es im aktuellen Monat CVEs gibt, für die es einen Workaround oder eine durchzuführende Aktion gibt. Abfragen lassen sich auf diesem Weg auch gezielt für Betriebssysteme durchführen. Dazu kann zum Beispiel mit dem folgenden Befehl nach allen aktuellen CVEs für Windows Server 2022 in der aktuellen Liste gesucht werden:
Get-MsrcCvrfAffectedSoftware -Vulnerability $cveinfo.Vulnerability -ProductTree $cveinfo.ProductTree | Where FullProductName -EQ "Windows Server 2022"
Danach muss noch sichergestellt sein, dass auf allen Computern mit Windows Server 2022 im Netzwerk die jeweiligen Updates installiert sind. In den Abfragen sind dazu auch die URLS für die jeweiligen Patches aus dem Microsoft Update Katalog zu finden.
:quality(80)/p7i.vogel.de/wcms/63/11/6311f5dd526d11863ef7779c5a1b9801/0108199409.jpeg)
Video-Tipp #55: Mehr Sicherheit mit und trotz PowerShell
PowerShell Security Best Practices
(ID:49317467)