PowerShell

作者:{XJ, Anice}@ArkTeam

一、介绍

PowerShell是微软开发的一款任务自动化和配置管理工具,目的是让管理员高效地完成对系统及应用程序的管理和控制。在设计之初,PowerShell仅作为Windows组件存在,即Windows PowerShell;2016年8月18日,微软将PowerShell开源,并发布PowerShell Core,实现了跨平台,可在Linux上和macOS系统上安装使用。

PowerShell由命令语言解释器(Shell)和基于.NET Framework/.NET Core 的脚本语言组成。作为命令解释程序, PowerShell有别于传统基于文本的Shell(例如命令提示符),它接受与返回的都是.NET对象,是基于面向对象的Shell。同时提供对COM(组件对象模型)和WMI(Windows管理规范)的完全访问,具有可扩展性和丰富的系统控制功能;作为一种面向对象的脚本语言,PowerShell构建在.NET平台之上,可以直接调用.NET类库、创建.NET对象,支持用于循环、条件、流控制和变量赋值的语言结构。PowerShell脚本文件扩展名为.ps1, 初次执行时,默认安全设置禁用了执行脚本,需要以管理员权限更改执行策略。

二、安装及运行环境

从Windows 7和Windows Server 2008开始,Windows操作系统默认安装对应版本的Windows PowerShell。目前,PowerShell共有6个版本,升级Windows PowerShell需要安装对应的Windows Management Framework(WMF)版本,参考表1。PowerShell 6支持Windows、Linux和macOS操作系统,用户可在GitHub上下载[1]。在使用PowerShell之前,确保有.NET及其他依赖环境(Windows系统一般已默认安装),可参考官方说明[2]。

表1 PowerShell默认版本及升级说明

在Windows操作系统上,PowerShell 有两类环境:交互式运行环境和集成脚本环境(ISE)。Windows 10中,通过“开始”->“Windows附件”->“Windows PowerShell”->“Windows PowerShell”可打开交互式运行环境,在控制台上输入命令,操作类似于命令提示符。如图1所示。

图1 PowerShell 交互式运行环境

通过“开始”->“Windows附件”->“Windows PowerShell”->“Windows PowerShell ISE”可打开集成脚本环境,用于编写、调试、运行.ps1脚本。如图2所示。

图2 PowerShell 集成脚本环境

三、总结

PowerShell与操作系统深度融合,让操作系统的可控制程度达到了新的高度,不少安全人员开发出基于PowerShell的渗透测试与分析工具,例如PowerShell Empire,PowerSploit等。然而,PowerShell丰富的系统控制功能、原生支持Windows操作系统、能够不写入磁盘文件,在内存中直接运行代码等特点,也使它逐渐变为恶意代码的温床。例如,在近年来流行的无文件持久化攻击中,PowerShell就扮演了重要的角色,包括远程下载、进程注入、ShellCode执行与加解密等。在攻防双方,PowerShell已逐步成为最受欢迎的工具之一,有着广阔的发展空间,值得我们探索与学习。

四、参考

[1]https://github.com/powershell/powershell#get-powershell

[2]https://docs.microsoft.com/en-us/powershell/scripting/setup/windows-powershell-system-requirements?view=powershell-5.1

[3]https://docs.microsoft.com/en-us/powershell/index?view=powershell-5.1

发表评论

电子邮件地址不会被公开。 必填项已用*标注