
Kodiert ein PowerShell-Skript in den Pixeln einer PNG-Datei und generiert einen Einzeiler zur Ausführung.
Kodiert ein PowerShell-Skript in die Pixel einer PNG-Datei und generiert einen Einzeiler zur Ausführung
Invoke-PSImage nimmt ein PowerShell-Skript und kodiert die Bytes des Skripts in die Pixel eines PNG-Bildes. Es generiert einen Einzeiler zur Ausführung entweder von einer Datei oder aus dem Web.
Es kann entweder ein neues Bild nur mit den Payload-Daten erstellen oder den Payload in die niederwertigsten Bytes eines vorhandenen Bildes einbetten, sodass es wie ein echtes Bild aussieht. Das Bild wird als PNG gespeichert und kann verlustfrei komprimiert werden, ohne die Fähigkeit zur Ausführung des Payloads zu beeinträchtigen, da die Daten in den Farben selbst gespeichert sind. Beim Erstellen neuer Bilder werden normale PowerShell-Skripte tatsächlich erheblich komprimiert, was normalerweise zu einer PNG mit einer Dateigröße von etwa 50 % des ursprünglichen Skripts führt.
Bei der Einbettungsmethode werden die niederwertigsten 4 Bits von 2 Farbwerten in jedem Pixel verwendet, um den Payload zu speichern. Die Bildqualität leidet darunter, sieht aber dennoch ordentlich aus. Es kann die meisten Bildtypen als Eingabe akzeptieren, die Ausgabe ist jedoch immer ein PNG, da es verlustfrei sein muss. Jedes Pixel des Bildes wird verwendet, um ein Byte des Skripts zu speichern. Daher benötigen Sie ein Bild mit mindestens so vielen Pixeln wie Byte in Ihrem Skript. Dies ist recht einfach – zum Beispiel passt Invoke-Mimikatz in ein 1920x1200 Bild.
-Script [Dateipfad] Der Pfad zum Skript, das in das Bild eingebettet werden soll.
-Out [Dateipfad] Die Datei, in der das resultierende Bild gespeichert werden soll (das Bild wird ein PNG).
-Image [Dateipfad] Das Bild, in das das Skript eingebettet werden soll. (optional)
-WebRequest Gibt einen Befehl aus, um das Bild aus dem Web mit Net.WebClient zu lesen. Sie müssen das Bild hosten und die URL in den Befehl einfügen.
-PictureBox Gibt einen Befehl aus, um das Bild aus dem Web mit System.Windows.Forms.PictureBox zu lesen. Sie müssen das Bild hosten und die URL in den Befehl einfügen.
Erstellen Sie ein Bild mit dem eingebetteten Skript "Invoke-Mimikatz.ps1" und geben Sie einen Einzeiler zur Ausführung von der Festplatte aus:
PS>Import-Module .\Invoke-PSImage.ps1
PS>Invoke-PSImage -Script .\Invoke-Mimikatz.ps1 -Out .\evil-kiwi.png -Image .\kiwi.jpg
[Einzeiler zur Ausführung von einer Datei]
Erstellen Sie ein Bild mit dem eingebetteten Skript "Invoke-Mimikatz.ps1" und geben Sie einen Einzeiler zur Ausführung aus dem Web aus (Sie müssen das Bild dennoch hosten und die URL bearbeiten):
PS>Import-Module .\Invoke-PSImage.ps1
PS>Invoke-PSImage -Script .\Invoke-Mimikatz.ps1 -Out .\evil-kiwi.png -Image .\kiwi.jpg -WebRequest
[Einzeiler zur Ausführung aus dem Web]
Ausführen eines im Web gehosteten Bildes:
