PowerShell ist ein von Microsoft entwickeltes Shell-Framework zur Skripterstellung, das ursprünglich für die Verwaltung von Windows-Systemen konzipiert wurde. Es ist ein standardmäßiges aber leistungsstarkes Werkzeug für Systemadministratoren, das die schnelle (und ferngesteuerte) Konfiguration von Remote-Computern und anderen Geräten sowie die Automatisierung zahlreicher sich wiederholender Aufgaben ermöglicht.
Für die überwältigende Mehrheit der Administratoren ist PowerShell auch eine grundlegende Komponente ihres Cybersecurity-Frameworks. In Verbindung mit einer fortschrittlichen Datensicherheitsplattform wie Varonisermöglicht PowerShell Administratoren eine detaillierte Überwachung ihrer Netzwerke sowie einen sicheren Schutz vor Angriffen.
Wir haben viele Anleitungen für PowerShell erstellt und verfügbar gemacht, die zeigen, wie man erste Schritte damit macht, es optimal einsetzt und wie man die fortgeschritteneren Funktionen des Tools nutzen kann. Wir bieten auch einen eigenen Kurs für PowerShell an.
In diesem Artikel fassen wir all diese Ressourcen an einer Stelle zusammen, damit Sie schnell mit PowerShell anfangen oder sich weiterbilden können.
Zum schnellen Nachschlagen finden Sie hier die Anleitungen zu PowerShell, die wir bereits veröffentlicht haben, sortiert nach Thema und dem Niveau der Fachkenntnisse, für die sie relevant sind. Weitere Einzelheiten zu den Dokumenten finden Sie in unserem Tutorial-Abschnitt weiter unten.
PowerShell Grundlagen
Befehle + Skripterstellung
IT PROFIS
PowerShell ist eine Shell-Skriptsprache, die von Microsoft für das Konfigurationsmanagement und die Automatisierung von Aufgaben entwickelt wurde. Eine Shell ist eine Befehlsschnittstelle, die Ihnen Zugriff auf Funktionen Ihres Betriebssystems bietet. Sie wird über die Befehlszeile oder über eine grafische Benutzeroberfläche (GUI) gesteuert.
PowerShell ist ein allgegenwärtiges Tool für Systemadministratoren, da man damit die mit den Netzwerken verbundenen Geräte und Benutzer viel schneller und einfacher verwalten kann als mit anderen Tools. Mithilfe von
PowerShell können Sie schnell neue Benutzer zu Ihren Netzwerken hinzufügen, ihre Zugriffsrechte verwalten und vieles, vieles mehr.
PowerShell ist auch ein grundlegender Bestandteil der Cybersicherheit für Netzwerkadministratoren, da sich damit die auf ihren Systemen stattfindenden Aktivitäten genau überwachen lassen.
PowerShell wurde entwickelt, um Ihnen bei der Automatisierung fast aller Verwaltungsaufgaben für Windows-Geräte und -Netzwerke zu helfen. Daher kann fast jede Aufgabe, die Sie als Netzwerkadministrator erhalten, über PowerShell erledigt werden, oftmals effizienter und schneller.
Die gängigsten Aufgaben, für die PowerShell verwendet wird, sind unter anderem:
Jede von Microsoft veröffentlichte PowerShell-Version baut auf den vorherigen Versionen des Tools auf. Dementsprechend verfügt jede neue Version über neue Funktionen. Es gibt jedoch auch eine Entwicklungsphilosophie hinter PowerShell, und daher eine Reihe grundlegender Funktionen, die jede Version bietet:
Die Verwendung von PowerShell hat viele Vorteile gegenüber der standardmäßigen CMD-Shell. Die meisten Benutzer kommen zu PowerShell, nachdem sie eine Zeit lang die Grundlagen der manuellen Systemadministration erlernt haben.
Es gibt jedoch eine Reihe von wesentlichen Unterschieden zwischen den beiden Sprachen:
PowerShell | Cmd. exe |
Objektbasierte Skriptsprache | Textbasierte Skriptsprache |
Cmd-Befehle funktionieren in PowerShell | PowerShell-Cmdlets funktionieren nicht in Cmd. exe |
Systemverwaltungsaufgaben zur Verwaltung der Registry für WMI (Windows Management Instrumentation) sind über PowerShell verfügbar | Systemverwaltungsaufgaben zur Verwaltung der Registry für WMI (Windows Management Instrumentation) sind nicht über cmd verfügbar |
Eine leistungsstarke Skripterstellungs-Umgebung, die zur Erstellung komplexer Skripte zur Verwaltung von Windows-Systemen verwendet werden kann | Sehr schwierig, komplexe Skripte zu verfassen |
Die Skripterstellung ist in PowerShell im Vergleich zu CMD aus mehreren Gründen viel einfacher.
Die Windows PowerShell Integrated Scripting Environment (ISE) ist eine Host-Anwendung für Windows PowerShell.
Mithilfe von ISE können Sie in einer Windows-basierten Benutzeroberfläche Befehle ausführen und Skripte schreiben, testen und debuggen. Die Anwendung bietet viele zusätzliche Funktionen, die Ihnen beim Erlernen von PowerShell helfen können: mehrzeilige Bearbeitung, Tabulatorvervollständigung, Syntaxeinfärbung, selektive Ausführung, kontextsensitive Hilfe und Unterstützung für linksläufige Sprachen.
ISE ist ein hervorragendes Hilfsmittel für Benutzer, die sich in PowerShell einarbeiten möchten, da es einen intuitiven Zugang zum Schreiben von Skripten und zur Arbeit mit Befehlen bietet. Wenn Sie jedoch etwas selbstsicherer in der Verwendung von PowerShell werden, lohnt es sich auch, sich mit der „standardmäßigen“, konsolenbasierten Implementierung von PowerShell vertraut zu machen. ISE wird nämlich nicht von allen Netzwerken (und Arbeitgebern) angeboten. Wenn Sie also wissen, wie Sie PowerShell in verschiedenen Kontexten benutzen können, verbessern Sie Ihre Agilität bei Administrationsaufgaben.
In diesem Abschnitt führen wir Sie durch alle grundlegenden Elemente, Definitionen und Fähigkeiten, die Sie für die Arbeit mit PowerShell benötigen. Wir fangen an mit dem Start eines PowerShell-Fensters. Anschließend führen wir Sie durch die grundlegenden Konzepte von PowerShell, bevor wir zu fortgeschritteneren Anleitungen übergehen.
Sie finden in jedem Abschnitt Links zu detaillierteren Anleitungen zu den jeweiligen Themen. So können Sie bei Bedarf vertiefend weiterlesen.
PowerShell ist auf jeder Instanz von Windows vorinstalliert, und der Start ist einfach. In Windows 10 ist das Suchfeld eine der schnellsten Methoden zum Starten von PowerShell. Geben Sie in der Taskleiste in das Suchfeld „PowerShell“ ein. Klicken oder tippen Sie dann auf das Ergebnis „Windows PowerShell“.
Um PowerShell als Administrator auszuführen, klicken Sie mit der rechten Maustaste (Touchscreen-Benutzer: tippen und halten) auf das Windows PowerShell-Suchergebnis und klicken oder tippen Sie dann auf “Als Administrator ausführen”.
Es gibt noch viele andere Möglichkeiten, eine PowerShell-Konsole zu starten, aber dies ist eine gute Methode für den Anfang.
Wenn Sie bereits mit anderen Skriptsprachen gearbeitet haben, wird Ihnen die Funktionsweise von PowerShell sofort vertraut vorkommen. Die Namen, die PowerShell verwendet, um auf die Elemente zu verweisen, mit denen es arbeitet, sind jedoch ein wenig kontraintuitiv. Hier ist eine Tabelle, die Sie ausdrucken und als Gedächtnishilfe an Ihren Schreibtisch kleben können:
Element | Definition |
Cmdlets | Das Cmdlet ist ein in .net-Sprachen wie VB oder C# geschriebener Build-Befehl. Damit können Entwickler den Cmdlet-Satz durch Laden und Schreiben von PowerShell-Snap-Ins erweitern. |
Funktionen | Funktionen sind Befehle, die in der PowerShell-Sprache geschrieben sind. Sie können ohne Verwendung anderer IDEs wie Visual Studio und Devs entwickelt werden. |
Skripte | Skripte sind Textdateien auf der Festplatte mit einer .ps1-Erweiterung |
Anwendungen | Anwendungen sind bestehende Windows-Programme. |
What if | Weist das Cmdlet an, nicht ausgeführt zu werden, sondern Ihnen mitzuteilen, was passieren würde, wenn das Cmdlet ausgeführt würde. |
Bestätigen | Weist das Cmdlet an, vor der Ausführung des Befehls die Bestätigung durch den Benutzer einzuholen. |
Ausführlich | Gibt einen höheren Detaillierungsgrad. |
Debuggen | Weist das Cmdlet an, Debugging-Informationen bereitzustellen. |
ErrorAction | Weist das Cmdlet an, eine bestimmte Aktion auszuführen, wenn ein Fehler auftritt. Erlaubte Aktionen sind „continue“, „stop“, „silently-continue“ und „inquire“ |
ErrorVariable | Gibt die Variable an, die Fehlerinformationen enthält. |
OutVariable | Weist das Cmdlet an, eine bestimmte Variable zum Speichern der Ausgabeinformationen zu verwenden. |
OutBuffer | Weist das Cmdlet an, die bestimmte Anzahl von Objekten zu halten, bevor das nächste Cmdlet in der Pipeline aufgerufen wird. |
Wir haben viele Anleitungen zum Einstieg sowie einen Kurs zu PowerShell erstellt und zur Verfügung gestellt.
Sehen Sie sich diese Anleitungen an, um in PowerShell einzusteigen:
Wenn Sie noch nicht mit PowerShell vertraut sind, werfen Sie einen Blick auf unser PowerShell-Tutorial, bevor Sie in die PowerShell-Skripterstellung einsteigen. In dieser Anleitung finden Sie Beschreibungen aller grundlegenden Werkzeuge, die Sie für die Arbeit mit PowerShell benötigen. Dazu gehören Cmdlets, Aliase, Hilfebefehle und Pipes.
Sobald Sie die Grundbefehle beherrschen, können Sie mit dem Schreiben von Skripten beginnen. Die Grundlagen dazu behandeln wir in unserer Anleitung zur Skripterstellung in PowerShell. Einige grundlegende Ideen in diesem Artikel sollte man jedoch im Gedächtnis behalten.
PowerShell-Skripte werden als .ps1-Dateien gespeichert. Standardmäßig können Sie diese Skripte in Windows nicht durch einfaches Doppelklicken auf die Datei ausführen. Das liegt daran, dass böswillige (oder schlecht geschriebene) Skripte eine Menge versehentlichen Schaden in Ihrem System anrichten können.
Um ein PowerShell-Skript auszuführen, müssen Sie stattdessen mit der rechten Maustaste auf die .ps1-Datei und anschließend auf „Mit PowerShell ausführen“ klicken.
Wenn Sie zum ersten Mal mit PowerShell-Skripten arbeiten, funktioniert das möglicherweise nicht. Das liegt daran, dass es eine systemweite Richtlinie gibt, die eine Ausführung verhindert. Führen Sie diesen Befehl in PowerShell aus:
Sie werden eine der folgenden Ausgaben sehen:
Es werden keine Skripte ausgeführt. Dies ist die Standardeinstellung in Windows, Sie müssen sie also ändern.
Sie können nur Skripte ausführen, die von einem vertrauenswürdigen Entwickler signiert wurden. Vor der Ausführung eines Skripts werden Sie dazu aufgefordert.
Sie können Ihre eigenen Skripte oder von einem vertrauenswürdigen Entwickler signierte Skripte ausführen.
Sie können jedes beliebige Skript ausführen. Diese Option sollte aus offensichtlichen Gründen nicht verwendet werden.
Um mit PowerShell-Skripten arbeiten zu können, müssen Sie diese Richtlinieneinstellung ändern. Sie sollten sie zu „RemoteSigned“ ändern. Das können Sie direkt von PowerShell aus tun, indem Sie den folgenden Befehl ausführen:
Nun können Sie anfangen, Skripte zu erstellen. Werfen Sie zu Beginn einen Blick auf die folgenden Anleitungen.
Arrays sind ein grundlegendes Merkmal von PowerShell. Arrays ermöglichen es, echte Datenstrukturen (und nicht nur rohe Strings) aufzunehmen, zu verarbeiten und auszugeben. Diese Funktion macht PowerShell anders und nützlicher als andere Skriptsprachen.
Arrays in PowerShell können ein oder mehrere Elemente enthalten. Ein Element kann eine Zeichenfolge, eine ganze Zahl, ein Objekt oder sogar ein anderes Array sein, und ein Array kann eine beliebige Kombination dieser Elemente enthalten. Jedes dieser Elemente hat einen Index, der immer bei 0 beginnt (was manchmal zu Verwirrung führt). Das erste Element in einem Array erhält also den Index 0, das zweite wird mit 1 indexiert, und so weiter.
PowerShell-Arrays sind ein so grundlegender Bestandteil von PowerShell, dass sie in jedem PowerShell-Tutorial vorkommen. Solide Kenntnisse über die Arbeit mit Arrays sind für viele Aspekte der Arbeit mit PowerShell von entscheidender Bedeutung, von der Konfiguration von Office 365 bis hin zur Verwendung von PowerShell für Pentesting.
Es gibt verschiedene Möglichkeiten, Arrays in Powershell zu erstellen, aber am einfachsten ist es, diesen Befehl auszuführen:
Dadurch wird ein leeres Array erstellt. Ein leeres Array ist jedoch nicht besonders nützlich. Fügen wir also einige Früchte zu unserem neuen Array hinzu. Diese werden als Textstrings dargestellt. Führen Sie dazu diesen Befehl aus:
Dadurch wird ein Array „fruit“ genannt und es werden drei Elemente hinzugefügt. Um zu sehen, ob das funktioniert hat, können Sie das Array mit diesem Befehl lesen:
Es wird Folgendes zurückgegeben:
Wie Sie sehen können, handelt es sich bei diesem Array um eine Gruppe von einzelnen Daten. PowerShell indexiert sie automatisch auf die oben beschriebene Weise: „Apple“ wird als 0, „Oranges“ als 1 und „Bananas“ als 2 indexiert.
Dieses Beispiel könnte den Anschein erwecken, als ob es sich bei Arrays um recht einfache Objekte handelt, und das sind sie in gewisser Weise auch. Ihre Einfachheit ist es aber auch, die sie zu solch flexiblen, leistungsstarken Objekten macht.
Fortgeschrittene PowerShell-Tutorials
Sobald Sie die Grundlagen der Arbeit mit PowerShell-Skripten beherrschen, lohnt es sich, einen Blick auf die fortgeschritteneren Aufgaben zu werfen, bei denen PowerShell Ihnen helfen kann. Viele dieser Aufgaben beziehen sich auf die Cyber-Security. Wir haben uns die Statistiken über Vorfälle im Bereich der Cyber-Security und zu Datenlecks angeschaut und eine Reihe von Anleitungen erstellt, die Ihnen zeigen, wie Sie die häufigsten Angriffsformen erkennen und abwehren können.
Dazu gehört Folgendes:
Eine Berechtigungseskalation liegt vor, wenn ein Angreifer in der Lage ist, die aktuellen Berechtigungen eines Kontos auszunutzen, um zusätzlichen, unerwarteten Zugriff zu erlangen. Das kann durch Zero-Day-Schwachstellen, staatliche Akteure, die Angriffe durchführen, oder sehr gut getarnte Malware verursacht werden, aber meistens ist eine Berechtigungseskalation das Ergebnis einer einfachen Fehlkonfiguration des Kontos. Davon ausgehend können die Angreifer durch eine Reihe kleiner Schwachstellen eskalieren, die, wenn sie miteinander verkettet werden, zu einem potenziell katastrophalen Datenleck führen.
In diesem Leitfaden zeigen wir Ihnen, wie Sie sich vor Angriffen durch Berechtigungseskalation schützen können und wie Sie diese auf Ihren eigenen Systemen simulieren können, damit Sie besser verstehen, wie Sie sie abwehren können.
Was ist die Antwort auf Verwirrungen im Ereignisprotokoll? Letztendlich kann eine SIEM-Lösung dazu beitragen, die Ereignisinformationen zu normalisieren und sie für die Analyse leichter zugänglich zu machen.
Aber so weit muss man nicht gehen, zumindest nicht am Anfang. Um zu verstehen, was SIEM leisten kann, könnte man zuerst einmal das Windows-Freebie-Tool Sysmon ausprobieren. Es ist überraschend einfach zu bedienen und bietet nützliche Prozessinformationen, die lesbar sind. Sie erhalten einige interessante Details, die nicht im rohen Windows-Protokoll zu finden sind, aber vor allem erhalten Sie die folgenden Felder:
In dieser Anleitung führen wir Sie durch die Installation, Konfiguration und Verwendung von SysMon.
Ein wichtiger Grund, um PowerShell zu lernen und es zum Aufspüren von Sicherheitslücken in den eigenen IT-Systemen zu verwenden, ist, dass Hacker genau das selbst tun. Viele Angriffe nutzen PowerShell aus, um „dateilose“ Malware auszuführen. Das sind nicht-binäre Dateien, die von Antivirus-Lösungen nicht leicht erkannt werden können. Mit anderen Worten: dieselben Komponenten, die ein herovrragendes Automatisierungstool für Administratoren bieten, sind auch für Hacker und schließlich für Pentester überaus nützlich.
In diesem Leitfaden zeigen wir Ihnen, wie Sie PowerShell für Pentests verwenden können, damit Sie besser verstehen, wie Hacker Ihre eigene PowerShell-Implementierung gegen Sie verwenden.
PowerView ist ein relativ neues Tool, mit dem Pentester und „Red Teams“ offensive Active-Directory-Techniken erkunden können. Ziel des Tools ist es, Mitarbeitern in der Cyber-Security eine vollständig in sich geschlossene PowerShell-Umgebung zu bieten. Dadurch können sie AD-Umgebungen „durch die Augen der Angreifer“ sehen.
Diese Anleitung baut auf unserer Anleitung zu Pentesting mit PowerShell auf. Hier zeigen wir Ihnen, wie PowerView Ihnen fortschrittlichere Pentesting-Techniken bietet, mit denen Sie Ihr System im Detail verstehen können.
Eine der wenigen bewährten Möglichkeiten, CryptoLocker daran zu hindern, in einem Netzwerk (oder sogar auf einem einzelnen Computer) Fuß zu fassen, ist die Verwendung des Dienstprogramms AppLocker (oder seines Vorgängers, der Richtlinien für die Softwareeinschränkung). Dadurch kann die Ausführung einer Anwendung zugelassen oder blockiert werden.
CryptoLocker ist dafür bekannt, dass es sich der Erkennung durch gängige Malware-Scanner entzieht. Das Programm verbreitet sich normalerweise über einen ausführbaren E-Mail-Anhang, der dann in %AppData%\*.exe installiert wird. Wenn Sie also verhindern, dass ausführbare Dateien von diesem Pfad aus gestartet werden, hilft das, CryptoLocker und andere ähnlich aufgebaute Malware abzuwehren.
Microsoft hat die Implementierung vereinfacht, mit dem Windows-PowerShell-Cmdlet AppLocker. Dadurch wird der Großteil dieses Prozesses automatisiert. In dieser Anleitung zeigen wir Ihnen, wie Sie PowerShell zur Vermeidung von Cryptlocker-Infektionen einsetzen können.
Wir haben auch eine Reihe von Anleitungen erstellt, die es Ihnen ermöglichen, das Beste aus Ihrer PowerShell-Implementierung herauszuholen und Ihre Kenntnisse weiterzuentwickeln. Dazu gehören:
Um Ihnen zu helfen, genau das zu finden, was Sie benötigen, ist hier ein komprimierter Leitfaden zu all unseren PowerShell-Ressourcen:
Ressource | Beschreibung |
Windows-PowerShell-Tutorial | Befasst sich mit den Grundlagen der Einrichtung von PowerShell in Ihrem Netzwerk und zeigt, wie Sie PowerShell einsetzen können. |
Office 365 mit PowerShell verbinden | Fehlerbehebung beim Start der Verwendung von PowerShell über Ihr Netzwerk. |
PowerShell-Eingaben und -Optionen | Die grundlegenden Eingabeformen für PowerShell und wie man mit ihnen arbeitet. |
Anleitung zur PowerShell-Skripterstellung | Führt Sie durch die Grundlagen der Skripterstellung in PowerShell und zeigt Ihnen, wie Sie mit der Automatisierung einiger Aufgaben beginnen können. |
Ressource | Beschreibung |
Die gängigsten PowerShell-Befehle für Office 365 | Eine benutzerfreundliche Anleitung zu den nützlichsten Befehlen für die Arbeit mit Office 365 über PowerShell. |
Unterschied zwischen PowerShell und CMD | Zielt darauf ab, die Verwirrung zwischen diesen beiden Sprachen zu klären, und erklärt, warum Sie PowerShell verwenden sollten. |
PowerShell-Objekte und Datenpiping | Dies sind zwei der grundlegenden Techniken bei der Arbeit mit PowerShell, und Sie sollten sie unbedingt verstehen, bevor Sie zu den fortgeschritteneren Anwendungen von PowerShell übergehen. |
Einführung in Arrays in PowerShell | Arrays sind ein fortgeschrittenes Objekt in PowerShell, mit dem Sie mit mehrdimensionalen Datenpunkten arbeiten können. Unsere Anleitung erklärt, was sie sind und wie man sie verwendet. |
Ressource | Beschreibung |
Berechtigungseskalation | Wie Sie sich vor Angriffen durch Berechtigungseskalation schützen können und wie Sie diese auf Ihren eigenen Systemen simulieren können, damit Sie besser verstehen, wie Sie diese abwehren können. |
Erkennung und Analyse von Sysmon-Bedrohungen | Sysmon ist ein kostenloses Tool, das Ihnen grundlegende SIEM-Funktionalität bietet. In dieser Anleitung führen wir Sie durch die Installation, Konfiguration und Verwendung von SysMon. |
PowerShell für Pentester: Skripte, Beispiele und Tipps | Wie Sie PowerShell für Pentests verwenden können, damit Sie besser verstehen, wie Hacker Ihre eigene PowerShell-Implementierung gegen Sie verwenden. |
PowerView-Pentest: PowerShell-Testen von Active Directory | Diese Anleitung baut auf unserer Anleitung zu Pentesting mit PowerShell auf. Hier zeigen wir Ihnen, wie PowerView Ihnen fortschrittlichere Pentesting-Techniken bietet, mit denen Sie Ihr System im Detail verstehen können. |
Verwendung von PowerShell zur Abwehr von Cryptolocker | Microsoft hat mit den AppLocker Windows-PowerShell-Cmdlets den Schutz vor Cryptolocker vereinfacht. Dadurch wird der Großteil dieses Prozesses automatisiert. In dieser Anleitung zeigen wir Ihnen, wie Sie PowerShell zur Vermeidung von Cryptlocker-Infektionen einsetzen können. |
Die besten PowerShell-Tools | Eine Auflistung der besten derzeit verfügbaren Tools. |
Anleitung zur Windows Management Instrumentation | Ein tieferer Einblick in die Technologien und Systeme, die PowerShell zugrunde liegen, insbesondere in die Windows Management Instrumentation. |
PowerShell ist ein extrem leistungsstarkes Tool für Systemadministratoren. Es ist leicht, die Grundlagen zu erlernen, aber weniger einfach, die Anwendung zu meistern. Mit den oben genannten Ressourcen können Sie Ihre Reise in die Welt von PowerShell beginnen, Ihre Kenntnisse verbessern oder die erweiterten Funktionen nutzen, die PowerShell bietet.
Unabhängig von Ihrem Kenntnisstand von PowerShell sollten Sie sich schützen, indem Sie eine fortschrittliche Datensicherheitsplattform wie Varonis verwenden. So können Sie vermeiden, dass Sie zur leichten Beute für Hacker werden, und dafür sorgen, dass Ihre Daten vor Diebstahl geschützt sind.
Und wenn Sie PowerShell leicht erlernen möchten, können Sie sich auch unseren Kurs über Erste Schritte mit PowerShell anschauen, um wirklich schnell Fortschritte zu machen.