Bei maliziösen PowerShells in freier Wildbahn sollte man auf der Hut. Allerdings muss man auch die besagten Kommandos erkennen, die schadhaft oder zumindest verdächtig sind.
Die “Endgegner” versuchen mit allen Methoden ihre Künste zu verstecken, sowohl vor der Abwehr als auch schon bei der Erkennung sowie Ausführung.
Ein beliebtes Beispiel sind die Obfuscation- Methoden, die man immer wieder findet. Da werden Strings zusammengebaut, Codierungen wie Base64 verwendet oder die Befehle über In-Memory-Runs ausgeführt. Besonders beliebt ist auch die “Living off the land”-Methode, also die Nutzung von validen DLLs bzw. APIs von Windows. Hier heisst das Stichwort “rundll32”, “svchost.exe” oder ganz einfach PowerShell 😉
Hier ein Beispiel für das Verstecken von Befehlssequenzen:
$o = 'Get'; $b = 'Process'; $cmd = $o + '-' + $b;
Invoke-Expression $cmd
Hier wird der PowerShell-Befehl “Get-Process” einfach bei der Ausführung zusammengesetzt. Die Methode nennt ich “Concatenierung” von “concat”.
Es gilt also speziell sein Augenmerk auf Befehle wie “Invoke-Expression” bzw. ganz allgemein auf “Invoke” zu legen.