ByteRay Blog

Powershell Hunting I: Powershell Downloads

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.

* Syntaxbeispiel:

Start-BitsTransfer -Source "https://raw.githubusercontent.com/ByteRay-Labs/NG-SIEM/refs/heads/main/README.md" -Destination "$PWD\README.md"

CrowdStrike NextGen SIEM Query

#event_simpleName=CommandHistory
| CommandHistory=/Invoke\-WebRequest|Net\.WebClient|Start\-BitsTransfer/i
| regex("(?<URL>https?://[^'\"]+)", field=CommandHistory)
| replace("https://", with="", field=URL, as=ShortURL)
| replace("\/.*", with="", field=ShortURL, as=otx_lookup)
| UrlBase:="https://otx.alienvault.com/indicator/domain/"
| format(format="[Alienvault](%s%s)", field=[UrlBase, otx_lookup], as=DomainLookup)
| table([DomainLookup, URL, ComputerName, UserName, CommandHistory], limit=20000)
✉️ Newsletter
Erhalten Sie aktuelle Einblicke, Sicherheitsupdates und exklusive Fachartikel direkt in Ihr Postfach. Jetzt unseren Newsletter abonnieren!
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.