【权限维持技术】PowerShell基础知识

admin 2023年11月20日15:54:13评论9 views字数 2351阅读7分50秒阅读模式



【权限维持技术】PowerShell基础知识

免责声明

【权限维持技术】PowerShell基础知识

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号不为此承担任何责任。



【权限维持技术】PowerShell基础知识

PowerShell简介

【权限维持技术】PowerShell基础知识

【权限维持技术】PowerShell基础知识

PowerShell是由Microsoft开发的,一种面向任务的命令行接口,旨在帮助系统管理员进行自动化和配置管理。PowerShell具有如下特点:
  • 基于对象:不像其他Shell(如CMD或Bash)那样处理文本或流,PowerShell处理.net对象。这使得数据操作更加直接和丰富。
  • 富有表现力:PowerShell脚本语言是富有表现力的,意味着您可以直接在命令行内使用.net类或重用现有脚本。
  • 共享和重用:在PowerShell中,您可以创建自定义模块,共享和重用代码。
  • 集成脚本环境:PowerShell ISE是一个PowerShell脚本环境,其中包含脚本编辑器,命令行提示符和脚本输出等工具。
  • 工作流程:PowerShell工作流程允许将长期任务作为一组互连的步骤运行,这些步骤可以在一台或多台计算机上执行。


【权限维持技术】PowerShell基础知识

打开PowerShell的方法

【权限维持技术】PowerShell基础知识

PowerShell是Windows自带的接口,正常情况下不需要安装。有四种方法可以打开PowerShell:
1. 输入"Win+R",输入"powershell"后回车:

【权限维持技术】PowerShell基础知识

2. 先打开cmd,然后输入"powershell"命令打开PowerShell

【权限维持技术】PowerShell基础知识

3. 在左下角搜索框中搜索"PowerShell":

【权限维持技术】PowerShell基础知识

4. 在文件管理器上方直接输入"powershell"并回车,这样的好处是PowerShell会自动跳转到当前目录:

【权限维持技术】PowerShell基础知识

【权限维持技术】PowerShell基础知识




【权限维持技术】PowerShell基础知识

Cmdlet

【权限维持技术】PowerShell基础知识

Cmdlet是PowerShell环境中执行任务的关键元素。这些任务可以包括执行具体操作,如管理计算机上的进程,修改注册表等,它们既可以是单独使用,也可以在PowerShell脚本中使用。
每个Cmdlet都由一个动词和一个名词组成,用连字符 - 连接。动词描述了Cmdlet执行的操作,而名词描述了Cmdlet操作的对象。例如,"Get-Help","Get" 是动词,表示获取操作,而 "Help" 是名词,表示帮助信息是对象。其他的Cmdlet实例还包括"Set-Location"、"New-Item"、 "Remove-Item"等。
可以使用"Get-Command"查看系统中所有可用的Cmdlet。如需获取特定Cmdlet的详细帮助信息,你可以使用 Get-Help 后接上cmdlet的名称。例如"Get-Help Get-Process"。

【权限维持技术】PowerShell基础知识

还可以创建自定义Cmdlet以完成特定的任务。自定义Cmdlet通常是用C#编程语言编写的,因此需要.NET编程知识。

【权限维持技术】PowerShell基础知识



【权限维持技术】PowerShell基础知识

Function

【权限维持技术】PowerShell基础知识

在PowerShell中,函数是一种可重复使用的命令序列,您可以在脚本或会话中多次调用。函数通常用于执行特定的任务,通常是那些需要在多个脚本或多次在同一脚本中执行的任务。
函数的声明以Function关键字开始,后跟函数名和大括号{}内的代码块。例如:
function Say-Hello { Write-Output "Hello, PowerShell" }
在此示例中,我们创建了一个名为Say-Hello的函数,当调用该函数时,它将在控制台上显示文本"Hello, PowerShell"。
我们可以通过直接输入其名称来调用PowerShell函数,如下所示:
Say-Hello
给函数传参也非常简单。在大括号内部制定参数名,如下所示:
function Say-Hello($name) { Write-Output "Hello, $name" }
然后在调用这个函数时,我们可以传入一个参数:
Say-Hello "fatmo"
这会输出 "Hello, fatmo"。

【权限维持技术】PowerShell基础知识

函数还可以接收管道输入,并使用特殊变量$Input处理它。例如,以下函数会从管道中接收输入,并表示其为字符串:
function Convert-ToString { process { $_.ToString() } }


【权限维持技术】PowerShell基础知识

Alias

【权限维持技术】PowerShell基础知识

在PowerShell中,别名(Alias)是指向cmdlet或函数的短字符引用。别名创建后,可用于执行cmdlet或函数的全部操作,这可以提高你的效率,减少输入的字符数量。
例如,对于常用的 "Get-Command",存在一个预定义的别名"gcm"。您可以通过键入"gcm" 而不是 "Get-Command" 来执行相同的操作。
让我们看一些常用的内置别名:
  • ls 是 Get-ChildItem 的别名
  • cd 是 Set-Location 的别名
  • rm 是 Remove-Item 的别名
  • echo 是 Write-Output 的别名
  • clc 是 Clear-Content 的别名
  • dir 也是 Get-ChildItem 的别名
别名的一个重要功能是可自定义。你可以通过 "Set-Alias"创建新的别名:
Set-Alias -Name lf -Value Get-ChildItem
上面的命令会创建一个新别名 "lf",它将执行与 "Get-ChildItem" 相同的操作。
你可以通过 "Get-Alias" cmdlet 展示所有可用的别名:
Get-Alias

【权限维持技术】PowerShell基础知识

或者分别搜索一个特定的别名或者指向特定cmdlet或函数的所有别名:
Get-Alias -Name lf
或者
Get-Alias -Definition Get-ChildItem


【权限维持技术】PowerShell基础知识

总结

【权限维持技术】PowerShell基础知识

本文介绍了PowerShell,以及PowerShell中三个重要的概念:Cmdlet、Function和Alias。PowerShell因为其强大的功能被很多场景所使用,在权限维持、内网渗透中更是有着极高的"出勤率",后续将会介绍PowerShell是如何在权限维持中大放异彩的。

【权限维持技术】PowerShell基础知识




原文始发于微信公众号(赛博安全狗):【权限维持技术】PowerShell基础知识

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月20日15:54:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【权限维持技术】PowerShell基础知识https://cn-sec.com/archives/2222501.html

发表评论

匿名网友 填写信息