Die PowerShell kann als mächtiges Werkzeug zur Verbesserung der Sicherheit im Netzwerk dienen, selbst aber auch als Tool für Angreifer zum Einsatz kommen. Dieser Video-Tipp zeigt wichtige Einstellungen und Cmdlets für mehr Sicherheit mit der PowerShell.
In diesem Video-Tipp zeigen wir, wie man mit der PowerShell für mehr Sicherheit im Netzwerk sorgt und gleichzeitig verhindert, dass Hacker die PowerShell für ihre Zwecke missbrauchen.
(Bild: Melinda Nagy - stock.adobe.com)
Die PowerShell kann auf nahezu alle Funktionen in Windows zugreifen und oft auch auf Serverdienste wie Microsoft Exchange, SQL Server oder andere Produkte. Aus diesem Grund sollte auch die Sicherheit der Umgebung im Auge behalten werden, vor allem bei der Ausführung von Skripten. Dazu kommen zahlreiche PowerShell-Module, welche die Möglichkeiten der Shell um Penetrationstests oder Hackerangriffe erweitert.
Wie man mit der PowerShell für mehr Sicherheit im Netzwerk sorgt und gleichzeitig verhindert, dass Hacker die PowerShell für ihre Zwecke missbrauchen, zeigen wir hier im Video-Tipp und in der Bildergalerie.
Viele Sicherheitstechnologien in Windows lassen sich umfassend mit der PowerShell steuern. Das haben wir im Beitrag „Sicherheit auf Windows-Servern mit Bordmitteln steuern“ gezeigt. Dazu kommen Funktionen zur Laufwerksverschlüsselung. BitLocker lässt sich auch in der PowerShell aktivieren und steuern. Die zur Verfügung stehenden Befehle dazu zeigt Windows mit „get-command -module BitLocker“ an.
Mit „Enable-BitLocker“ kann die Verschlüsselung aktiviert werden. Mit dem Cmdlet „Get-BitlockerVolume“ zeigt die PowerShell Informationen zu verschlüsselten Datenträgern auf einem Computer an. Um den TPM-Chip für die Aktivierung von Bitlocker zu konfigurieren, kann das Cmdlet „Enable-TpmAutoProvisioning“ zum Einsatz kommen. Die Informationen zum Chip lassen sich wiederum mit „Get-Tpm“ anzeigen. Zurücksetzen lässt sich das TPM mit „Clear-Tpm“.
Die PowerShell als Hacker-Tool: Das sollten Admins wissen
Beispiele für Hackertools sind das Modul PowerSploit, das Penetrationstests in der PowerShell ermöglicht, oder auch Nishang, das Mimikatz mit der Powershell integriert. Wir zeigen im Beitrag „Diese Tools nutzen Hacker für AD-Angriffe“, wie Hacker auf Tools wie Mimikatz, LaZange oder Bloodhound setzen.
Auch diese lassen sich mit der PowerShell kombinieren. Es gibt in diesem Bereich auch verschiedene PowerShell-Skripte, die Mimikatz nutzen. Mit der PowerShell ist es auch möglich lokale Virenscanner zu umgehen, um Hackertools wie Mimikatz einzusetzen. In diesem Zusammenhang spielen auch die Absicherungen eine Rolle, die wir im Beitrag „Cyber-Attacken via PowerShell verhindern“ behandeln. In diesem Beitrag ist auch die Aktivierung des „Constrained Modus“ zu finden, der die PowerShell in einen eingeschränkten und sicheren Modus versetzt, bei dem nicht alle Funktionen zur Verfügung stehen. Wichtig ist an dieser Stelle auch, die alte PowerShell aus dem System zu entfernen. Auch das kann mit der Powershell durchgeführt werden:
Um generell den Remotezugriff per PowerShell auf einem Computer zu deaktivieren, kann in der PowerShell der Befehl „Disable-PSRemoting -Force“.
Ports scannen, DNS absichern, Windows-Updates installieren und Zertifikate verwalten: Das geht alles in der PowerShell
Wir haben im Beitrag „Mit der PowerShell nach offenen Ports suchen“ gezeigt, wie mit der PowerShell nach offenen Ports auf Geräten gesucht werden kann. Auch die Konfiguration von Windows-Updates ist mit der PowerShell möglich. Dieses Thema haben wir im Beitrag „Windows-Updates mit PowerShell steuern“ vertieft. Die Verwaltung von Zertifikaten und das Anzeigen von abgelaufenen Zertifikaten mit der PowerShell ist im Beitrag „Zertifikate in Windows mit der PowerShell verwalten“ zu finden. Interessant ist in dieser Hinsicht auch, dass Zertifikate auch ohne Zertifikatsdienste selbstsigniert sein können. Auch das lässt sich mit der PowerShell umsetzen. Um für eine Webseite ein selbstsigniertes Zertifikat zu erstellen, geben Sie zum Beispiel den folgenden Befehl ein:
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Die PowerShell kann aber noch viel mehr: Skriptausführung absichern
Die verlinkten Beiträge zeigen die umfassenden Möglichkeiten, die sich mit der PowerShell ergeben, um die Sicherheit in Netzwerken zu erhöhen, gleichzeitig aber auch zu gefährden. Wichtig ist, dass Admins die Möglichkeiten kennen und mit diesen umgehen können. Besonders wichtig ist es mit „Set-ExecutionPolicy“ zunächst grundlegende Sicherheitseinstellungen für die Ausführung von Richtlinien in der PowerShell zu steuern. Abfragen lassen sich die Einstellungen mit „Get-ExecutionPolicy. Damit das funktioniert, muss die PowerShell mit erhöhten Rechten gestartet werden. Danach lässt sich festlegen, dass Skripte signiert sein müssen, zum Beispiel mit:
Generell sollte überprüft werden, dass die Sicherheitseinstellungen für die Ausführung von Skripten richtig gesetzt sind. Es gibt an dieser Stelle verschiedene Einstellungen:
AllSigned: Alle Skripte müssen von einem vertrauenswürdigen Herausgeber signiert werden
Bypass: Diese Einstellung erlaubt alle Skripte ohne Rückfrage. Diese Option sollte möglichst nicht gesetzt werden.
Default: Legt Fest, dass auf Windows-Clients die Einstellung „Restricted“ gesetzt wird und auf Servern „RemoteSigned“
RemoteSigned: Diese Einstellung stellt sicher, dass nur signierte Skripte starten dürfen
Restricted: Diese Einstellung legt fest, dass keinerlei Skripte ausgeführt werden dürfen. Das bietet maximale Sicherheit.
Unrestricted: Führt alle Skripte aus, warnt aber wenn dieses nicht signiert ist.
Diese Einstellungen lassen sich auch mit Gruppenrichtlinien über die Einstellungen bei Richtlinien => Administrative Vorlagen => Windows-Komponenten => Windows PowerShell anpassen. Eigene Skripte lassen sich auch mit Active Directory-Zertifikatsdiensten signieren. Dazu kommt in der PowerShell noch das Cmdlet „Set-AuthenticodeSignature“ zum Einsatz. Microsoft beschreibt die Signierung in der PowerShell-Dokumentation.
OpenSSH mit der PowerShell nutzen
Für die sichere Kommunikation in hybriden Netzwerken, kann auch auf Windows-Servern SSH zum Einsatzkommen. Dadurch lassen sich auch Remotesitzungen der PowerShell 7.x über SSH abwickeln. Damit Windows per SSH erreichbar ist, muss das entsprechende Feature erst installiert werden. Das geht ebenfalls in der PowerShell:
Get-WindowsCapability -Online | where name -like *OpenSSH.Server* | Add-WindowsCapability -Online
Um den Dienst zu starten und auch automatisch mit Windows zu nutzen, kommen die folgenden Befehl zum Einsatz.
Als SSH-Client kann in Windows entweder das Befehlszeilentool ssh.exe in der PowerShell zum Einsatz kommen, oder Tools wie das Open Source-Tool Putty. SSH kann auch mit PowerShell-Remoting genutzt werden. Das ist zum Beispiel bei der PowerShell-Kommunikation zwischen Linux und Windows sinnvoll. Hier kann eine neue PowerShell-Remotesitzung SSH als Transport nutzen.
Ausführung von Cmdlets in der PowerShell aufzeichnen
Um zu erkennen, welche Befehle in der PowerShell durchgeführt wurden, lassen sich Sitzungen auch aufzeichnen. Dazu kommen die beiden Cmdlets „Start-Transcript“ und „Stop-Transcript“ zum Einsatz. Natürlich kann die Überwachung auch über Gruppenrichtlinien gesteuert werden. Die Einstellung „PowerShell-Aufzeichnung einschalten“ ist bei „Richtlinien => Administrative Vorlagen => Windows-Komponenten => Windows PowerShell“ zu finden.
Hier lässt sich auch gleich ein Pfad einer Freigabe oder ein lokales Verzeichnis mit Protokolldatei angeben, in der die PowerShell das Protokoll ablegen soll. In den Protokollen wird täglich aufgezeichnet, welche Cmdlets in der PowerShell ausgeführt werden. Mit „Protokollierung von PowerShell-Skriptblöcken aktivieren“ ist es an dieser Stelle auch möglich Befehle und Skriptblöcke in der Ereignisanzeige auf Computern zu speichern. Hier muss auch darauf geachtet werden, dass die Größe der Ereignisanzeige ausreicht.