调用-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.ps1。PS>Invoke-PSImage -Script .Invok-Mimikatz.ps1 -Out .evil-kiwi.png -Image .kiwi.jpg
[从文件中执行Oneliner]
创建一个嵌入了 "Invoke-Mimikatz.ps1 "脚本的图片,并输出一个oneliner从网络上执行(你仍然需要托管图片和编辑URL)。
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