初识PowerShell

PowerShell是微软开发的一款任务自动化和配置管理工具,目的是让管理员高效地完成对系统及应用程序的管理和控制。在信息安全领域的攻防双方,PowerShell已逐步成为最受欢迎的工具之一,有着广阔的发展空间,值得我们探索与学习。

一、介绍

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

PowerShell由命令语言解释器(Shell)和基于.NET Framework\.NET Core 的脚本语言组成。

作为命令解释程序, PowerShell有别于传统基于文本的Shell,它接受与返回的都是.NET对象,是基于面向对象的Shell,具有可扩展性。PowerShell的命令叫做cmdlet(command-let), 采用了“动词-名词”的命名方式,动词部分取自于一个制定的动词集合,名词部分则描述了命令要操作的对象。例如,Get-Command就是指获取PowerShell中所有cmdlet命令。PowerShell提供对COM(组件对象模型)和WMI(Windows管理规范)的完全访问,具有丰富的控制与自动化的系统管理能力,能够轻松地做到实时、大规模的管理系统。

作为一种面向对象的脚本语言,PowerShell构建在.NET平台之上,可以直接调用.NET类库、创建.NET对象,同时支持用于循环、条件、流控制和变量赋值的语言结构,其语法功能和关键字与C# 编程语言中所使用的十分类似。PowerShell脚本文件扩展名为.ps1, 初次执行时,默认安全设置禁用了执行脚本,需要以管理员权限更改执行策略。

二、安装及运行环境。

从Windows 7和Windows Server 2008开始,Windows操作系统默认安装对应版本的Windows PowerShell,目前PowerShell共有6个版本。升级Windows PowerShell需要安装对应的Windows Management Framework(WMF)版本,参考表1。在使用PowerShell之前,确保有.NET及其他依赖环境(Windows系统一般已默认安装),可参考官方说明[1]。Windows10初始版本默认安装了PowerShell 5.0,经过Windows 更新后,则会升级为5.1。PowerShell 6(PowerShell Core 6.0)支持Windows、Linux和macOS操作系统,用户可在GitHub上下载对应操作系统的PS版本,安装步骤可参考对应说明文档[2]。

ps1.png

在Windows操作系统上,PowerShell 有两类环境:交互式运行环境和集成脚本环境(ISE)。Windows 10中,通过“开始”—>“Windows附件”—>“Windows PowerShell”—>“Windows PowerShell”可打开交互式运行环境,如图1所示。在控制台上,可以直接执行PowerShell命令, PowerShell支持Tab键命令自动补全。

ps2.png

     图1 PowerShell 交互式运行环境

通过“开始”—>“ Windows附件”—>“Windows PowerShell” —>“Windows PowerShell ISE”可打开集成脚本环境,如图2所示。

ps3.png

图2 PowerShell 集成脚本环境

PowerShell集成脚本环境支持编辑、运行、测试和调试脚本,编写好的程序可保存为.ps1文件。但Windows系统默认不允许执行.ps1文件,需要以管理员权限修改执行策略,如图3所示,键入set-executionpolicy -executionpolicy unrestricted即可。更改执行策略后,可在控制台上执行.ps1文件,如图4所示。PowerShell脚本执行权限本意是一种安全设置,防止恶意脚本的运行,但仍然有许多方法能绕过执行策略,即使没有管理员权限也可以运行PowerShell脚本,读者可自行探索。

ps4.png

图3 修改执行策略

ps5.png

图4 执行.ps1脚本

三、总结

PowerShell与操作系统深度融合,拥有强大的自动化系统管理能力,让操作系统的可控制程度达到了新的高度,成为运维人员日益青睐的工具。此外,不少安全人员也开发出基于PowerShell的渗透测试与分析工具,例如PowerShell Empire,PowerSploit等。然而,PowerShell丰富的系统控制功能、原生支持Windows操作系统、能够不写入磁盘文件,在内存中直接运行代码等特点,也使它逐渐变为恶意代码的温床。安全公司CaronBlack在2016年研究报告指出,高达38%的复合恶意软件攻击开始将PowerShell作为工具之一,其中61%恶意软件用于与C&C通信。在近年来流行的无文件持久化攻击中,PowerShell也扮演了重要的攻击角色,包括远程下载、进程注入、ShellCode执行与加解密等。在攻防双方,PowerShell已逐步成为最受欢迎的工具之一,有着广阔的发展空间,值得我们探索与学习。

四、参考

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

[2] PowerShell 6下载地址 https://github.com/powershell/powershell#get-powershell

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

取消
Loading...

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php