将PowerShell脚本编码到PNG文件

  • A+
所属分类:安全文章


调用-PSImage



        Invoke-PSImage接收一个PowerShell脚本,并将脚本的字节编码为PNG图像的像素。它生成一个oneliner,用于从文件或从网络上执行。


        它可以只使用有效载荷数据创建一个新的图像,也可以将有效载荷嵌入到现有图像的最不重要的字节中,使其看起来像一张实际的图片。图像被保存为PNG,并且可以无损压缩而不影响执行有效载荷的能力,因为数据存储在颜色本身。在创建新的图片时,普通的PowerShell脚本实际上被大大压缩了,通常生成的png的文件大小约为原始脚本的50%。


        使用嵌入方法,每个像素中的2个颜色值中最不重要的4位被用来存放有效载荷。图像质量会因此受到影响,但看起来还是不错的。它可以接受大多数图像类型作为输入,但输出将始终是一个PNG,因为它需要无损。图像的每一个像素都用来容纳一个字节的脚本,所以你需要的图像的像素数至少与你脚本中的字节数相同。这很容易--例如,Invoke-Mimikatz适合放在1920x1200的图像中。


使用方法:


-Script [filepath] 要嵌入到图片中的脚本的路径。


-Out [filepath] 保存图片的文件(图片为PNG格式)。


-Image [filepath] 要嵌入脚本的图片。(可选) -图片 [文件路径] 要嵌入脚本的图片。


-WebRequest 使用 Net.WebClient 输出一个从网上读取图像的命令。你需要托管图像并将URL插入到命令中。


-使用 System.Windows.Forms.PictureBox 输出一个命令,用于从 Web 中读取图像。您需要托管图像并将URL插入到命令中。



例子


创建一个嵌入了脚本 "Invoke-Mimikatz.ps1 "的镜像,并输出一个oneliner从磁盘上执行。


PS>Import-Module .Invok-PSImage.ps1PS>Invoke-PSImage -Script .Invok-Mimikatz.ps1 -Out .evil-kiwi.png -Image .kiwi.jpg


   [从文件中执行Oneliner]


创建一个嵌入了 "Invoke-Mimikatz.ps1 "脚本的图片,并输出一个oneliner从网络上执行(你仍然需要托管图片和编辑URL)。


PS>Import-Module .Invok-PSImage.ps1PS>Invoke-PSImage -Script .Invok-Mimikatz.ps1 -Out .evil-kiwi.png -Image .kiwi.jpg -WebRequest

  

 [从网络上执行的Oneliner]


项目地址:


https://github.com/peewpw/Invoke-PSImage


将PowerShell脚本编码到PNG文件


本文始发于微信公众号(Khan安全团队):将PowerShell脚本编码到PNG文件

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: