【THM】offensive-Hacking with PowerShell

2025-04-25 1 0

介绍

了解 PowerShell 和 PowerShell 脚本的基础知识

了解一些基础知识。例如,CMD、PS 和某些语法之间的差异。涵盖以下内容:

  • 什么是 Powershell
  • 基本 Powershell 命令
  • Windows 枚举技能
  • Powershell 脚本

可使用远程桌面

xfreerdp /v:IP /u:Administrator /p:123456 /dynamic-resolution

什么是powershell

Powershell 是使用 .NET 框架构建的 Windows 脚本语言和 shell 环境。

这也允许 Powershell 直接从其 shell 执行 .NET 函数。大多数 Powershell 命令(称为 cmdlet)都是用 .NET 编写的。与其他脚本语言和 shell 环境不同,这些 cmdlet 的输出是对象——这使得 Powershell 在某种程度上具有面向对象的特性。这也意味着运行 cmdlet 允许您对输出对象执行操作(这使得将输出从一个 cmdlet 传递到另一个 cmdlet 变得非常方便)。cmdlet 的常规格式使用动词-名词表示;例如,用于列出命令的 cmdlet 称为Get-Command。

常用的动词包括:

  • Get
  • Start
  • Stop
  • Read
  • Write
  • New
  • Out

要获取已批准动词的完整列表,请访问此链接。https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/approved-verbs-for-windows-powershell-commands?view=powershell-7

获取新对象的命令是Get-New

基本PowerShell命令

现在已经了解了 cmdlet 的工作原理 - 让我们来探索如何使用它们!这里要记住的是,Get-Command 和 Get-Help 是你最好的朋友!

使用 Get-Help

Get-Help 显示有关 cmdlet 的信息。要获取有关特定命令的帮助,请运行以下命令:

Get-Help Command-Name

您还可以通过传入-examples标志来了解如何精确使用该命令。这将返回如下输出:

【THM】offensive-Hacking with PowerShell插图

使用 Get-Command

Get-Command 获取当前计算机上安装的所有 cmdlet。此 cmdlet 的优点在于它允许进行模式匹配,如下所示

Get-Command Verb-*或者Get-Command *-Noun

运行 Get-Command New-* 来查看动词 new 的所有 cmdlet,显示以下内容:

【THM】offensive-Hacking with PowerShell插图1

对象操作

在上一个任务中,我们看到每个 cmdlet 的输出都是一个对象。如果我们想要真正操作输出,需要弄清楚以下几点:

  • 将输出传递给其他 cmdlet
  • 使用特定对象 cmdlet 来提取信息

管道 (|) 用于将输出从一个 cmdlet 传递到另一个 cmdlet。与其他 shell 相比,一个主要区别在于,PowerShell 不是将文本或字符串传递给管道后的命令,而是将对象传递给下一个 cmdlet。与面向对象框架中的每个对象一样,对象包含方法和属性。您可以将方法视为可应用于 cmdlet 输出的函数,而将属性视为 cmdlet 输出中的变量。要查看这些详细信息,请将 cmdlet 的输出传递给 Get-Member cmdlet

Verb-Noun | Get-Member

运行此命令来查看 Get-Command 的成员的示例如下:

Get-Command | Get-Member -MemberType Method

【THM】offensive-Hacking with PowerShell插图2

从命令中的上述标志,您可以看到您还可以在方法和属性之间进行选择。

从以前的 cmdlet 创建对象

操作对象的一种方法是从 cmdlet 的输出中提取属性并创建新对象。这可以通过Select-Objectcmdlet 完成。

以下是列出目录并仅选择模式和名称的示例:

【THM】offensive-Hacking with PowerShell插图3

您还可以使用以下标志来选择特定信息:

  • first - 获取第一个 x 对象
  • last - 获取最后一个 x 对象
  • unique - 显示独特的对象
  • skip - 跳过 x 个对象

过滤对象

检索输出对象时,您可能希望选择与特定值匹配的对象。您可以使用 Where-Object 根据属性值进行筛选。

使用此 cmdlet 的一般格式是

Verb-Noun | Where-Object -Property PropertyName -operator Value

Verb-Noun | Where-Object {$_.PropertyName -operator Value}

第二个版本使用 $_ 运算符来遍历传递给 Where-Object cmdlet 的每个对象。

Powershell 非常敏感,因此请确保不要在命令周围加上引号!

其中-operator是以下运算符的列表:

  • -Contains:如果属性值中的任何项与指定值完全匹配
  • -EQ:如果属性值与指定值相同
  • -GT:如果属性值大于指定值

有关运算符的完整列表,请使用此链接。https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/where-object?view=powershell-6

以下是检查已停止进程的示例:

【THM】offensive-Hacking with PowerShell插图4

排序对象

当 cmdlet 输出大量信息时,您可能需要对其进行排序,以便更高效地提取信息。您可以通过将 cmdlet 的输出通过管道传输到Sort-Objectcmdlet 来实现此目的。

该命令的格式为

Verb-Noun | Sort-Object

以下是对目录列表进行排序的示例:

【THM】offensive-Hacking with PowerShell插图5

文件 “interesting-file.txt” 的位置是什么

1.Get-ChildItem -Path C:\ -Include interesting-file.* -File -Recurse -ErrorAction SilentlyContinue

-Recurse:递归搜索

-ErrorAction SilentlyContinue:忽略错误

-File 仅文件

-Path:我们要查找的路径。C;\ 表示整个磁盘

-Include:文件的名称。

Get-ChildItem这个cmdlet来获取目录下的文件列表

2.Get-ChildItem “*interesting-file*” -Path C:\ -Recurse -ErrorAction SilentlyContinue

【THM】offensive-Hacking with PowerShell插图6

指定此文件的内容Get-Content -Path 'C:\Program Files\interesting-file.txt.txt'

Get-ChildItem “*interesting-file*” -Path C:\ -Recurse -ErrorAction SilentlyContinue | Get-Content

【THM】offensive-Hacking with PowerShell插图7


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

实现另一个“编程语言” – 记第四届伏魔挑战赛恶意脚本免杀
浏览器为何成为拦截钓鱼攻击的最佳防线:三大核心优势
[Meachines] [Hard] OneTwoSeven SFTP-Symlinks+SWP+SSH-forward+apt-get-PE+Tyrant
打靶日记–Misdirection
MCP协议安全:沟通外部攻击者与LLM的桥梁
全球40余位CISO联名呼吁OECD与G7加强网络安全法规协同性

发布评论