将PowerShell脚本编码到PNG文件

2021-03-10 15:43:26 浏览数 (1)

调用-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从磁盘上执行。

代码语言:javascript复制
PS>Import-Module .Invok-PSImage.ps1。PS>Invoke-PSImage -Script .Invok-Mimikatz.ps1 -Out .evil-kiwi.png -Image .kiwi.jpg

[从文件中执行Oneliner]

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

代码语言:javascript复制
PS>Import-Module .Invok-PSImage.ps1。PS>Invoke-PSImage -Script .Invok-Mimikatz.ps1 -Out .evil-kiwi.png -Image .kiwi.jpg -WebRequest

[从网络上执行的Oneliner]

项目地址:

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

0 人点赞