Video-Tipp #60 Skriptsicherheit und Malwareschutz mit der PowerShell Mehr Sicherheit für die PowerShell

Von Thomas Joos Lesedauer: 5 min |

Anbieter zum Thema

Die PowerShell ist ein mächtiges Werkzeug, mit der Microsoft-Netzwerke und auch Clouddienste umfassend gesteuert werden können. Auch andere Anbieter haben APIs für die PowerShell, sodass eine Absicherung der Zugriffe sehr sinnvoll ist.

In diesem Video-Tipp zeigen wir, wie man die Sicherheit der PowerShell durch Skriptüberwachung, Constrained­Language-Modus und andere Methoden weiter verbessern kann.
In diesem Video-Tipp zeigen wir, wie man die Sicherheit der PowerShell durch Skriptüberwachung, Constrained­Language-Modus und andere Methoden weiter verbessern kann.
(Bild: putilov_denis - stock.adobe.com)

Die PowerShell ist ein mächtiges Werkzeug, wenn es um die Verwaltung von Microsoft-Netzwerken geht. Neben lokal betriebenen Servern, lassen sich auch Clouddienste mit der PowerShell verwalten. Immer mehr Drittanbieter stellen APIs bereit sowie PowerShell-Module, mit denen weitere Dienste verwaltet werden können. Microsoft hat in der PowerShell viele Sicherheitsfeatures integriert, die wir bereits in verschiedenen Beiträgen thematisiert haben. Um die Sicherheit für und mit der PowerShell in Microsoft-Netzwerken zu optimieren, sollte sich daher unbedingt auch die Tipps und Anleitungen in diesen Beiträgen näher anschauen:

Im folgenden Text zeigen wir weitere Möglichkeiten, wie die PowerShell möglichst sicher betrieben werden kann.

Effektivere Überwachung der PowerShell: Skriptblöcke und Skriptausführung

Eine wichtige Basis für den sicheren Betrieb der PowerShell ist die Überwachung der Aktionen, die Admins in der PowerShell durchführen. Wir haben bereits im Beitrag „Cyber-Attacken via PowerShell verhindern“ beschrieben, wie sich die Überwachung generell aktivieren lässt. Die PowerShell bietet dazu aber noch mehr.

Die Richtlinien-Einstellung „Protokollierung von PowerShell-Skriptblöcken aktivieren“ im Pfad „Computerkonfiguration\ Richtlinien\ Administrative Vorlagen\Windows-Komponenten\ Windows PowerShell“ stellt sicher, dass auf dem Computer nicht nur interaktive Befehle aus der PowerShell heraus überwacht werden, sondern auch Skriptblöcke, Funktionen und ganze Skripte, die automatisiert starten. Die Daten sind im Anschluss in der Ereignisanzeige zu finden und lassen sich umfassend analysieren. Hier ist es parallel natürlich sinnvoll auf Überwachungslösungen zu setzen, mit denen sich die Ereignisanzeigen von Windows-Servern umfassend analysieren lassen.

Wie man die Sicherheit der PowerShell durch Skriptüberwachung, Constrained­Language-Modus und andere Methoden weiter verbessert, zeigen wir hier im Video-Tipp und in der Bildergalerie.

Bildergalerie
Bildergalerie mit 11 Bildern

Neben diesen Möglichkeiten kann über die Richtlinien-Einstellung „Skriptausführung aktivieren“ direkt über Gruppenrichtlinien die Ausführungsrichtlinie für Skripte in der PowerShell konfiguriert werden. Das geht zwar auch in der PowerShell, ist mit Gruppenrichtlinien aber sicherer. Mehr dazu ist im Beitrag „Cyber-Attacken via PowerShell verhindern“ zu finden. Es ist generell sinnvoll die Ausführung von PowerShell-Skripten direkt über Gruppenrichtlinien zu steuern.

Module überwachen und einschränken

Parallel dazu kann es sinnvoll sein, bestimmte Module in der PowerShell zu überwachen. Die Einstellungen dazu sind bei „Modulprotokollierung aktivieren“ im Pfad „Computerkonfiguration\Richtlinien\ Administrative Vorlagen\Windows-Komponenten\Windows PowerShell“ zu finden. Die Einstellung an dieser Stelle ist automatisch für alle Sitzungen auf den jeweiligen Rechnern aktiviert. Eine Liste aller verfügbaren Module auf einem Rechner kann mit dem folgenden Befehl in der PowerShell angezeigt werden:

Get-Module -ListAvailable

Die Module, die in einer Sitzung bereits importiert wurden, können mit dem folgenden Cmdlet angezeigt werden:

Get-Module

Grundsätzlich kann es sinnvoll sein nicht benötigte Module aus der PowerShell zu entfernen, um die Sicherheit von Servern zu verbessern. Das lässt sich zum Beispiel mit dem folgenden Befehl erledigen:

Remove-Module <module-name>

In diesem Zusammenhang kann es sinnvoll sein zu überprüfen, in welchen Pfaden Module gespeichert sind, die in der PowerShell zum Einsatz kommen können. Auch auf diesem Weg kann Malware in einem System eindringen. Das geht zum Beispiel durch das Abfragen der entsprechenden Umgebungsvariablen als Befehl in der PowerShell:

$env:PSModulePath

Wie man die Sicherheit der PowerShell durch Skriptüberwachung, Constrained­Language-Modus und andere Methoden weiter verbessert, zeigen wir hier im Video-Tipp und in der Bildergalerie.

Bildergalerie
Bildergalerie mit 11 Bildern

PowerShell mit dem Constrained-Language-Modus absichern

In vielen Fällen ist es nicht notwendig, dass auf Servern in allen Sitzungen alle Funktionen der PowerShell zur Verfügung stehen. Dazu hat Microsoft den Constrained-Language-Modus integriert. Wir haben im Beitrag „Cyber-Attacken via PowerShell verhindern“ beschrieben, wie sich der Modus aktivieren lässt. Dieser spielt eine so wichtige Rolle, dass Microsoft die Überwachung dazu im Windows Admin Center direkt im Dashboard des jeweiligen Servers eingebunden hat.

Nach dem Start des Windows Admin Centers ist bei „Übersicht“ im Bereich „PowerShell-Sprachmodus“ zu erkennen, ob auf dem Server eine Absicherung stattgefunden hat. Wenn das nicht der Fall ist, sollte das in jedem Fall nachgeholt werden.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zur IT-Sicherheit

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Dateilose Bedrohungen: Microsoft Defender und die PowerShell

Im Beitrag „Windows 10/11 braucht keinen externen Virenschutz“ zeigen wir, mit welchen Möglichkeiten der Virenschutz auch mit Bordmitteln optimiert werden kann. Das gilt übrigens auch für Windows Server 2019/2022. Die PowerShell arbeitet direkt mit Microsoft Defender zusammen und nutzt dazu Windows Antimalware Scan Interface (AMSI). Befehle und Skripte, die in der PowerShell ablaufen, werden durch diese API von Microsoft Defender nach Malware untersucht. Generell werden alle Skripte vor der Ausführung mit AMSI zunächst überprüft, bevor die PowerShell diese ausführt.

Beim Download von Dateien in der PowerShell überprüft Microsoft Defender ebenfalls, ob der heruntergeladene Inhalt Malware enthält oder eine Gefahr für den Computer darstellt. Das funktioniert auf Arbeitsstationen mit Windows 10/11 genauso wie auf Servern mit Windows Server 2019/2022. Testen lässt sich das durch den versuchten Download des Eicar-Testvirus. Diesen blockiert Microsoft Defender, wenn er in der PowerShell heruntergeladen werden soll:

set-content "X5O!P%@AP[4`\PZX54(P^)7CC)7}`$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!`$H+H*" -path "eicar.com"

Windows Defender Application Control für die PowerShell nutzen

Bestandteil von Windows 10/11 und Windows Server 2019/2022 ist neben der Steuerung von Anwendungen mit Applocker auch die Windows Defender-Anwendungssteuerung (Windows Defender Application Control, WDAC). Application Control stellt eine Alternative zu Applocker dar.

Diese arbeitet ebenfalls mit der PowerShell zusammen. Im Erzwingungsmodus wird dabei sichergestellt, dass ein Server maximal vor gefährlichen Skripten und Anwendungen geschützt ist, auch aus der PowerShell heraus. In Windows Server vNext, dem Nachfolger von Windows Server 2022 ist diese Funktion bereits automatisch aktiv.

Windows Server 2022 verfügt ebenfalls über WDAC, wie Windows 10/11 auch, allerdings ist hier der Erzwingungsmodus nicht aktiviert. Das sollte möglichst schnell nachgeholt werden. Die Einstellungen sind bei „Computerkonfiguration\Administrative Vorlagen\System\Device Guard“ zu finden. Hier gibt es die Option „Windows Defender-Anwendungssteuerung bereitstellen“. Hier ist es besonders interessant auf die aktuelle Version der PowerShell zu setzen. Ab PowerShell 7.3 lassen sich PowerShell-Skriptdateien über die WDAC-API blockieren oder zulassen.

Wie man die Sicherheit der PowerShell durch Skriptüberwachung, Constrained­Language-Modus und andere Methoden weiter verbessert, zeigen wir hier im Video-Tipp und in der Bildergalerie.

Bildergalerie
Bildergalerie mit 11 Bildern

(ID:49250304)