Powershell Hunting I: Powershell Downloads

Dieser Blogbeitrag aus der Reihe "PowerShell Threat Hunting" demonstriert, wie man mit CrowdStrike NG-SIEM verdächtige PowerShell-Downloads erkennt.
SIEM
04.02.2026

Powershell Downloads erkennen mit NextGen SIEM

Warum Powershell für Angreifer interessant ist

Powershell ist ein fester Bestandteil moderner Windows-Systeme und bietet durch .NET-Anbindung mächtige Möglichkeiten zur Automatisierung. Diese Eigenschaften machen es auch für Angreifer attraktiv:

  • Auf jedem Windows-System vorhanden (kein zusätzlicher Code nötig)
  • Direkter Zugriff auf Windows-APIs und Netzwerkressourcen
  • Kann Code aus dem Speicher ausführen (fileless execution)
  • Oft unzureichend überwacht oder eingeschränkt

Living off the Land-Taktiken nutzen Powershell, um Angriffe unauffällig und ohne zusätzliche Tools durchzuführen.

Warum nach Powershell-Downloads suchen?

Powershell wird häufig verwendet, um Dateien oder Skripte aus dem Internet zu laden z. B. zur:

  • Nachladung von Schadsoftware
  • Kommunikation mit Command-and-Control-Servern
  • Umgehung traditioneller Sicherheitsmaßnahmen

Einige Gründe für die proaktive Suche nach Powershell-Downloads:

  • Früherkennung von Angriffen im Initial Access oder Execution-Phase
  • Erkennung von Fileless Malware

Download via Powershell

Angreifer nutzen verschiedene Techniken, um Inhalte via Powershell herunterzuladen.

Invoke-WebRequest (IWR)

Funktionalität

Dieses Cmdlet, verfügbar ab Powershell Version 3, fungiert ähnlich wie wget oder curl unter Linux. Es sendet HTTP-, HTTPS- oder FTP-Anfragen an eine angegebene URL und kann die Antwort verarbeiten oder, mithilfe des Parameters -OutFile, direkt in eine Datei speichern. Es unterstützt komplexere Webinteraktionen wie Authentifizierung und benutzerdefinierte Header.

Anwendungsfälle & Risiken

Legitim für Web-Scraping, Herunterladen von Ressourcen oder Interaktion mit APIs. Wird von Angreifern häufig zum Herunterladen von Payloads verwendet, oft in Kombination mit -OutFile, um die Datei auf der Festplatte zu speichern, oder die Ausgabe wird an Invoke-Expression (IEX) weitergeleitet, um eine dateilose Ausführung zu erreichen. Invoke-WebRequest kann relativ langsam sein und hat eine potenzielle Abhängigkeit von Internet Explorer-Komponenten.

Sytaxbeispiel:
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/ByteRay-Labs/NG-SIEM/refs/heads/main/README.md" -OutFile "README.md"

System.Net.WebClient (.DownloadFile /.DownloadString)

Funktionalität

Nutzt die .NET Framework-Klasse System.Net.WebClient. Bietet Methoden wie DownloadFile, die eine Datei von einer URL herunterlädt und auf der Festplatte speichert, und DownloadString, die den Inhalt einer Ressource direkt als Zeichenkette zurückgibt. DownloadString wird häufig in Kombination mit Invoke- Expression für die dateilose Ausführung von Skripten verwendet.

Anwendungsfälle & Risiken

Legitim für programmgesteuerte Dateidownloads in Skripten. Wird von Angreifern intensiv missbraucht, sowohl zum Herunterladen ausführbarer Payloads (DownloadFile) als auch zur dateilosen Ausführung (DownloadString + IEX). Ist mit Server Core kompatibel.

Sytaxbeispiel:
(New-Object System.Net.WebClient).DownloadFile("https://raw.githubusercontent.com/ByteRay-Labs/NG-SIEM/refs/heads/main/README.md", "$PWD\README.md")

Start-BitsTransfer

Funktionalität

Verwendet den Background Intelligent Transfer Service (BITS), einen Windows-Dienst, der für asynchrone, gedrosselte und wiederaufnehmbare Dateiübertragungen konzipiert ist. Erfordert, dass der BITS-Dienst ausgeführt wird und das BitsTransfer-Modul importiert ist. Gut geeignet für große Dateien oder Hintergrundübertragungen.

Anwendungsfälle & Risiken

Legitim für große Dateiübertragungen und Updates. Wird seltener für den initialen Zugriff durch Malware verwendet als IWR/WebClient, kann aber von Angreifern genutzt werden, um größere Werkzeuge, Payloads oder gestohlene Daten zu übertragen. Seine asynchrone Natur könnte zur Tarnung genutzt werden. Erfordert den BITS-Dienst; kann fehlschlagen, wenn der Dienst deaktiviert ist oder der Benutzer (abhängig von der Konfiguration) nicht angemeldet ist.

CrowdStrike NextGen SIEM Query

1#event_simpleName=CommandHistory
2| CommandHistory=/Invoke\-WebRequest|Net\.WebClient|Start\-BitsTransfer/i
3| regex("(?<URL>https?://[^'\"]+)", field=CommandHistory)
4| replace("https://", with="", field=URL, as=ShortURL)
5| replace("\/.*", with="", field=ShortURL, as=otx_lookup)
6| UrlBase:="https://otx.alienvault.com/indicator/domain/"
7| format(format="[Alienvault](%s%s)", field=[UrlBase, otx_lookup], as=DomainLookup)
8| table([DomainLookup, URL, ComputerName, UserName, CommandHistory], limit=20000)

Weitere Artikel

Vom Exploit bis zur Defense: Echte Security-Insights aus unserem SOC und Research-Lab

Zum Blog