Invoke-PSImage, bir PowerShell komut dosyasını alır ve komut dosyasının baytlarını bir PNG görüntüsünün piksellerine kodlar. Yani seçtiğiniz bir görsele PowerShell komutu yerleştirme işlemini yapmak istiyorsanız doğru yerdesiniz.
Aracımız, payload verilerini kullanarak yeni bir görüntü oluşturabilir veya payload’ı gerçek bir resim gibi görünmesi için mevcut bir görüntünün en az önemli baytlarına yerleştirerek kodlayabilir. Görüntü bir PNG olarak kaydedilir ve veriler renklerin kendisinde saklanırken payload’ı yürütme yeteneğini etkilemeden kayıpsız bir şekilde sıkıştırılabilir. Yeni görüntüler oluştururken, normal PowerShell betikleri önemli ölçüde sıkıştırılır, genellikle orijinal betiğin %50 boyutunda bir PNG oluşturur. Gömme yöntemiyle, payload’ı tutmak için her pikseldeki 2 renk değerinin en az anlamlı 4 biti kullanılır. Sonuç olarak görüntü kalitesi düşecek, ancak yine de iyi bir görüntü elde edilebilir.
Invoke-PSImage çoğu görüntü türünü girdi olarak kabul edebilir, ancak kayıpsız olması gerektiğinden çıktı her zaman bir PNG dosyası olacaktır. Görüntünün her pikseli bir bayt komut dosyası tutmak için kullanılır, bu nedenle komut dosyanızdaki en az bayt kadar piksel içeren bir görüntüye ihtiyacınız olacaktır. Örneğin, Invoke-Mimikatz 1920×1200 bir görüntüye rahatlıkla sığacaktır.
Argümanlar
-Script [dosya yolu] Görüntüye yerleştirilecek komut dosyasının yolu.
-Out [dosya yolu] Ortaya çıkan görüntünün kaydedileceği dosya (görüntü PNG olacaktır).
-Image [dosya yolu] Komut dosyasının içine yerleştirileceği görüntü. (İsteğe bağlı)
-WebRequest Net.WebClient kullanarak web’den görüntüyü okumak için bir komut çıktılar. Görüntüyü barındırmanız ve URL’yi komuta eklemeniz gerekecektir.
-PictureBox System.Windows.Forms.PictureBox kullanarak görüntüyü web’den okumak için bir komut çıktılar. Görüntüyü barındırmanız ve URL’yi komuta eklemeniz gerekecektir.
Kullanım Örnekleri
Invoke-Mimikatz.ps1 betiğine gömülü bir görüntü oluşturmak ve çalıştırmak için:
>> Import-Module .\Invoke-PSImage.ps1 >> Invoke-PSImage -Script .\Invoke-Mimikatz.ps1 -Out .\evil-kernel.png -Image .\kernel.jpg
Bir görüntü oluşturmak ve web’den çalıştırmak için:
>> Import-Module .\Invoke-PSImage.ps1 >> Invoke-PSImage -Script .\Invoke-Mimikatz.ps1 -Out .\evil-kernel.png -Image .\kernel.jpg -WebRequest