Aller au contenu
Enzo Rossi, accueil
Me contacter

Journal

Décoder un payload PowerShell -EncodedCommand

-EncodedCommand (ou -e) attend une chaîne Base64 qui se décode en UTF-16LE, pas en UTF-8. L’erreur classique : décoder en UTF-8 et obtenir du charabia illisible.

La chaîne décodée est souvent elle-même compressée en Gzip — on le reconnaît à l’en-tête 1f 8b. C’est typiquement le cas des stagers rencontrés en investigation numérique (DFIR). La chaîne de décodage complète :

  1. Extraire la chaîne Base64 passée à -EncodedCommand.
  2. Décoder le Base64, puis interpréter les octets en UTF-16LE : on obtient le script PowerShell en clair.
  3. Si le texte contient un bloc compressé (en-tête Gzip 1f 8b), le décompresser.

Ce que ça révèle en analyse d’incident : un stager qui contacte un serveur de commande et contrôle (C2), des identifiants, des chemins de persistance. C’est souvent la première ligne qui fait comprendre le scénario global.

Outils pratiques : CyberChef (recettes Base64 → UTF-16LE → Gunzip enchaînées), ou un petit script Python/PowerShell pour automatiser le décodage sur un grand nombre d’échantillons.