tryhackme-网络安全基础-命令行- Windows PowerShell-22

news/2025/10/29 2:17:38/文章来源:https://www.cnblogs.com/sec875/p/19173033

tryhackme-Cyber Security 101-Command Line-Windows PowerShell
房间地址:https://tryhackme.com/room/windowspowershell
这是网络安全入门的基础模块的计算机科学基础知识:Windows PowerShell,序号 01 表示第一篇文章,当你不知道从哪里开始的时候,你可以按照数字顺序来进行参考即可。

Windows PowerShell

Task 1 Introduction

嗨!如果您来到这里,要么是因为听说过 PowerShell 的神奇之处,想要了解更多;要么是因为您刚刚从命令行模块的第一个房间——Windows 命令行——过来了。无论哪种方式,您都将踏上探索这个强大 Shell 的奇妙之旅,学习如何使用它来揭开任何 Windows 系统的秘密。Avast,那就上船吧!
https://tryhackme.com/r/room/windowscommandline

学习目标
这是命令行模块的第二个单元。它是 PowerShell 的入门单元,PowerShell 是历史上仅有的第二个为 Windows 操作系统构建的命令行实用程序。
https://tryhackme.com/module/command-line

了解 PowerShell 是什么及其功能。
理解 PowerShell 语言的基本结构。
学习并运行一些基本的 PowerShell 命令。
了解 PowerShell 在网络安全行业的众多应用。

房间先决条件
在进入此房间之前,建议您先了解“Windows 和 AD 基础知识”模块以及“Windows 命令行”房间中的概念。
https://tryhackme.com/module/windows-and-active-directory-fundamentals
https://tryhackme.com/r/room/windowscommandline

Task 2 What Is PowerShell

来自微软官方页面:“PowerShell 是一个由命令行 shell、脚本语言和配置管理框架组成的跨平台任务自动化解决方案。”
https://learn.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.4

PowerShell 是微软专为任务自动化和配置管理而设计的一款强大工具。它结合了命令行界面和基于 .NET 框架构建的脚本语言。与传统的基于文本的命令行工具不同,PowerShell 是面向对象的,这意味着它可以处理复杂的数据类型并更有效地与系统组件交互。PowerShell 最初仅适用于 Windows,最近已扩展到支持 macOS 和 Linux,使其成为跨不同操作系统的 IT 专业人员的多功能选择。

  • PowerShell简史

PowerShell 的开发是为了克服 Windows 中现有命令行工具和脚本环境的局限性。21 世纪初,随着 Windows 在复杂的企业环境中日益普及,cmd.exe 和批处理文件等传统工具在自动化和管理这些系统方面显得力不从心。微软需要一款能够处理更复杂的管理任务并与 Windows 现代 API 交互的工具。

微软工程师 Jeffrey Snover 意识到 Windows 和 Unix 处理系统操作的方式不同——Windows 使用结构化数据和 API,而 Unix 则将所有内容视为文本文件。这种差异使得将 Unix 工具移植到 Windows 变得不切实际。Snover 的解决方案是开发一种面向对象的方法,将脚本的简便性与 .NET 框架的强大功能相结合。PowerShell 于 2006 年发布,它允许管理员通过操作对象更有效地自动化任务,并提供与 Windows 系统的更深入集成。

随着 IT 环境不断发展,涵盖各种操作系统,对多功能自动化工具的需求也日益增长。 2016 年,微软做出了回应,发布了 PowerShell Core,这是一个可在 Windows、macOS 和 Linux 上运行的开源跨平台版本。

  • PowerShell 的强大功能

要充分理解 PowerShell 的强大功能,我们首先需要理解对象的含义。

在编程中,对象代表具有属性(特性)和方法(操作)的事物。例如,汽车对象可能具有 Color、Model 和 FuelLevel 等属性,以及 Drive()、HonkHorn() 和 Refuel() 等方法。

同样,在 PowerShell 中,对象是封装数据和功能的基本单元,使信息管理和操作更加便捷。PowerShell 中的对象可以包含文件名、用户名或大小作为数据(属性),并执行诸如复制文件或停止进程之类的函数(方法)。

传统 Command Shell 的基本命令是基于文本的,这意味着它们以纯文本形式处理和输出数据。而当在 PowerShell 中运行 cmdlet(发音为 command-let)时,它会返回保留其属性和方法的对象。由于这些对象不需要额外的文本解析,因此可以实现更强大、更灵活的数据操作。

我们将在接下来的部分中进一步探讨有关 PowerShell 的 cmdlet 及其功能。

Task 3 PowerShell Basics

在继续我们的 PowerShell 之旅之前,让我们先连接到实验环境。按下“Start Machine”按钮,然后按下页面顶部的“Start AttackBox”按钮启动 AttackBox。AttackBox 机器将以分屏视图启动。如果看不到,请使用页面顶部的蓝色“Show Split View”按钮。

您可以按照以下步骤使用 Remmina 客户端通过 SSH 连接到目标虚拟机。

点击“应用程序”(如下图所示,编号为 1)。选择“Internet”(编号为 2),然后选择“Remmina”(编号为 3)。

image

将会弹出一个窗口,提示您输入密码以解锁 AttackBox 的密钥环。点击“取消”即可忽略该提示。
image

从下拉菜单中选择 SSH 选项(下图中的数字 1),然后在顶部的栏中粘贴目标 IP:MACHINE_IP(数字 2)。最后,点击 Enter。
image

在下一个窗口中,输入下面卡片中的凭据,然后单击“确定”。

Username	captain
Password	JollyR0ger#
IP	MACHINE_IP
  • 启动 PowerShell

您可以通过多种方式启动 PowerShell,具体取决于您的需求和环境。如果您在 Windows 系统上使用图形界面 (GUI),以下是一些可行的启动方式:

“开始”菜单:在 Windows“开始”菜单搜索栏中输入“powershell”,然后在搜索结果中点击“Windows PowerShell”或“PowerShell”。
“运行”对话框:按 Win + R 打开“运行”对话框,输入“powershell”,然后按 Enter。
“文件资源管理器”:导航到任意文件夹,在地址栏中输入“powershell”,然后按 Enter。这将在该特定目录中打开 PowerShell。
“任务管理器”:打开“任务管理器”,依次选择“文件”>“运行新任务”,输入“powershell”,然后按 Enter。

或者,也可以通过输入 powershell 并按 Enter 键从命令提示符 (cmd.exe) 启动 PowerShell。

在我们的例子中,我们只能访问目标 VM 的命令提示符,这是我们将使用的方法。

captain@THEBLACKPEARL C:\Users\captain>powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindowsPS C:\Users\captain> 

PowerShell 启动后,我们会在当前工作目录中看到 PS(代表 PowerShell)提示符。

  • 基本语法:动词-名词 Verb-Noun

如前所述,PowerShell 命令被称为 cmdlet(发音为 command-lets)。它们比传统的 Windows 命令功能强大得多,并且允许进行更高级的数据操作。

Cmdlet 遵循一致的动词-名词命名约定。这种结构使每个 cmdlet 的功能易于理解。动词描述操作,名词指定执行操作的对象。例如:

Get-Content:检索(获取)文件内容并将其显示在控制台中。
Set-Location:更改(设置)当前工作目录。

  • 基本 Cmdlet

要列出当前 PowerShell 会话中可执行的所有可用 cmdlet、函数、别名和脚本,我们可以使用 Get-Command。它是发现可用命令的重要工具。

PS C:\Users\captain> Get-CommandCommandType     Name                                               Version    Source 
-----------     ----                                               -------    ------ Alias           Add-AppPackage                                     2.0.1.0    Appx                                                                                                                                       
Alias           Add-AppPackageVolume                               2.0.1.0    Appx                                                                                                                                       
Alias           Add-AppProvisionedPackage                          3.0        Dism                                                                                                                                       
[...]
Function        A:
Function        Add-BCDataCacheExtension                           1.0.0.0    BranchCache                                                                                                                                
Function        Add-DnsClientDohServerAddress                      1.0.0.0    DnsClient
[...]
Cmdlet          Add-AppxPackage                                    2.0.1.0    Appx
Cmdlet          Add-AppxProvisionedPackage                         3.0        Dism                                                                                                                                       
Cmdlet          Add-AppxVolume                                     2.0.1.0    Appx
[...]

对于 cmdlet 检索到的每个 CommandInfo 对象,控制台上都会显示一些基本信息(属性)。可以根据显示的属性值过滤命令列表。例如,如果我们只想显示“function”类型的可用命令,可以使用 -CommandType "Function",如下所示:

PS C:\Users\captain> Get-Command -CommandType "Function"CommandType     Name                                               Version    Source                                                                                                                                     
-----------     ----                                               -------    ------
Function        A:
Function        Add-BCDataCacheExtension                           1.0.0.0    BranchCache
Function        Add-DnsClientDohServerAddress                      1.0.0.0    DnsClient
Function        Add-DnsClientNrptRule                              1.0.0.0    DnsClient
[...]

我们将在接下来的任务中学习更高效的 cmdlet 输出过滤方法。

另一个值得我们随时掌握的必备 cmdlet 是 Get-Help:它提供了有关 cmdlet 的详细信息,包括用法、参数和示例。它是学习如何使用 PowerShell 命令的必备 cmdlet。

PS C:\Users\captain> Get-Help Get-DateNAMEGet-DateSYNOPSISGets the current date and time.SYNTAXGet-Date [[-Date] <System.DateTime>] [-Day <System.Int32>] [-DisplayHint {Date | Time | DateTime}] [-Format <System.String>] [-Hour <System.Int32>] [-Millisecond <System.Int32>] [-Minute <System.Int32>] [-Month <System.Int32>] [-Second <System.Int32>] [-Year <System.Int32>] [<CommonParameters>]Get-Date [[-Date] <System.DateTime>] [-Day <System.Int32>] [-DisplayHint {Date | Time | DateTime}] [-Hour <System.Int32>] [-Millisecond <System.Int32>] [-Minute <System.Int32>] [-Month <System.Int32>] [-Second <System.Int32>] [-UFormat <System.String>] [-Year <System.Int32>] [<CommonParameters>]DESCRIPTIONThe `Get-Date` cmdlet gets a DateTime object that represents the current date or a date that you specify. `Get-Date` can format the date and time in several .NET and UNIX formats. You can use `Get-Date` to generate a date or time character string, and then send the string to other cmdlets or programs.`Get-Date` uses the current culture settings of the operating system to determine how the output is formatted. To view your computer's settings, use `(Get-Culture).DateTimeFormat`.RELATED LINKSOnline Version: https://learn.microsoft.com/powershell/module/microsoft.powershell.utility/get-date?view=powershell-5.1&WT.mc_id=ps-gethelpForEach-ObjectGet-CultureGet-MemberNew-ItemNew-TimeSpanSet-DateSet-Culture xref:International.Set-CultureREMARKSTo see the examples, type: "get-help Get-Date -examples".For more information, type: "get-help Get-Date -detailed".For technical information, type: "get-help Get-Date -full".For online help, type: "get-help Get-Date -online".

如上图所示,Get-Help 告诉我们,通过在基本语法后附加一些选项,我们可以检索有关 cmdlet 的其他有用信息。例如,通过在上面显示的命令后附加 -examples,我们将看到所选 cmdlet 的常用使用方法列表。

为了让 IT 专业人员更轻松地过渡,PowerShell 为许多传统 Windows 命令提供了别名(即 cmdlet 的快捷方式或替代名称)。对于熟悉其他命令行工具的用户来说,Get-Alias 功能必不可少,它会列出所有可用的别名。例如,dir 是 Get-ChildItem 的别名,cd 是 Set-Location 的别名。

PS C:\Users\captain> Get-AliasCommandType     Name                                               Version    Source 
-----------     ----                                               -------    ------
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           asnp -> Add-PSSnapin
Alias           cat -> Get-Content
Alias           cd -> Set-Location
Alias           CFS -> ConvertFrom-String                          3.1.0.0    Microsoft.PowerShell.Utility
Alias           chdir -> Set-Location 
Alias           clc -> Clear-Content
Alias           clear -> Clear-Host
[...]
  • 在哪里查找和下载 Cmdlet

PowerShell 的另一个强大功能是可以通过从在线存储库下载其他 cmdlet 来扩展其功能。

注意:请注意,本节列出的 cmdlet 需要有效的互联网连接才能查询在线存储库。连接的计算机无法访问互联网,因此这些命令在此环境下无法运行。

要在 PowerShell 库等在线存储库中搜索模块(cmdlet 集合),我们可以使用 Find-Module。有时,如果我们不知道模块的确切名称,搜索名称相似的模块会很有用。我们可以通过筛选 Name 属性并在模块的部分名称后附加通配符 (*) 来实现,使用以下标准 PowerShell 语法:Cmdlet -Property "pattern*"

PS C:\Users\captain> Find-Module -Name "PowerShell*"   Version    Name                                Repository           Description 
-------    ----                                ----------           ----------- 
0.4.7      powershell-yaml                     PSGallery            Powershell module for serializing and deserializing YAML2.2.5      PowerShellGet                       PSGallery            PowerShell module with commands for discovering, installing, updating and publishing the PowerShell artifacts like Modules, DSC Resources, Role Capabilities and Scripts.                                                   
1.0.80.0   PowerShell.Module.InvokeWinGet      PSGallery            Module to Invoke WinGet and parse the output in PSOjects0.17.0     PowerShellForGitHub                 PSGallery            PowerShell wrapper for GitHub API  

一旦识别,就可以使用 Install-Module 从存储库下载并安装模块,从而使模块中包含的新 cmdlet 可供使用。

PS C:\Users\captain> Install-Module -Name "PowerShellGet"Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from 'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): 

有了这些必备工具,我们现在可以开始探索 PowerShell 的功能。

Task 4 Navigating the File System and Working with Files

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/949245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ESP32 在线语音】音频接收的缓存机制和网络发送机制

首先是初始化 I2S 设备中,可能用到了缓存 //初始化 I2S 设备 INMP441Serial.println("Setup I2S ...");i2s_install();i2s_setpin();esp_err_t err = i2s_start(I2S_PORT_0);其中的 i2s_install() 配置了 …

XCPC英语学习day2

2024ICPC昆明 A. Antivicus 在介绍网络流的时候,几乎还没开始讲,pet chicken指出如何解决这个问题。老师惊呼:我们的禽流感太棒了。 ——Roasted-chicken Htrule进入了流感季。 Hyrule由n个城市组成,由m条有向道路…

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体阀门专业制造商,精选PFA/四氟阀门优质品牌解析

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体阀门专业制造商,精选PFA/四氟阀门优质品牌解析 行业背景与发展现状 在半导体制造、生物医药、精细化工等高技术领域,高纯流体输送系统的可靠性与洁净度直接关系到产品…

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体专用阀门,PTFE/FEP/PFA材质隔膜阀源头企业综合评测

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体专用阀门,PTFE/FEP/PFA材质隔膜阀源头企业综合评测 在半导体制造、生物医药、精细化工等高技术领域,高纯流体输送系统的稳定性和可靠性直接关系到生产质量和工艺安全。…

【ESP32 在线语音】音频接收的缓存机制

首先是初始化 I2S 设备中,可能用到了缓存 //初始化 I2S 设备 INMP441Serial.println("Setup I2S ...");i2s_install();i2s_setpin();esp_err_t err = i2s_start(I2S_PORT_0);其中的 i2s_install() 配置了 …

我在iOS/Swift工程中成功编译了HarfBuzz!

我在iOS/Swift工程中成功编译了HarfBuzz!https://github.com/HusterYP/HarfBuzziOS/tree/main 跨端渲染又进一步!!

Python access mysql and insert data batch by batch

pip install mysql-connector or pip install mysql-connector-python -i https://pypi.tuna.tsinghua.edu.cn/simple/create table t2(id bigint primary key auto_increment,firstname varchar(100) not null defaul…

CodeForces-2153D Not Alone

tag: 结论题,一维线性 DPCodeForces-2153D Not Alone tag: 结论题,一维线性 DP给定一个环形序列 \(b\),长度为 \(m\),每次操作可以将一个数加一或减一。 问最少需要多少次操作,可以使序列 \(b\) 中每一个元素至少…

Codeforces Round 1062 (Div. 4)

A. Square?点击查看代码 #include <bits/stdc++.h>using i64 = long long;void solve() {int a, b, c, d;std::cin >> a >> b >> c >> d;if (a == b && b == c && c =…

一文吃透银行账务打通体系闭环 - 智慧园区

银行体系的复杂性,往往源于“账务、账户、会计、科目”之间的模糊边界。本文将系统拆解这四者的逻辑关系,从业务流、资金流到会计流,构建一套可理解、可复用的认知框架,帮助产品人真正打通银行产品设计的底层闭环。…

uups 逻辑合约也增加了升级函数,那总体不是也费gas吗?

这是一个很好的问题!虽然 UUPS 逻辑合约确实增加了升级函数,但它仍然比透明代理更省 Gas。以下是详细的原因和解释:1. UUPS 的升级函数对 Gas 的影响在 UUPS 模式中,升级逻辑(如 upgradeTo)确实存在于逻辑合约中…

【URP】Unity[纹理压缩]算法多平台对比

纹理压缩技术发展节点 ‌早期阶段 2000年代初‌ DXT/S3TC成为PC和主机平台主流,采用44像素块压缩,但移动端支持有限。 PVRTC(2008年)专为PowerVR GPU设计,要求纹理尺【从UnityURP开始探索游戏渲染】专栏-直达纹理…

AI元人文构想:三值纠缠模型

AI元人文构想:三值纠缠模型 作者:岐金兰 日期:2025年10月29日 引言: 观照个体欲望,尊重个体自感,于白箱化的价值博弈舞台,共同涌现集体客观——此三值纠缠模型,正是AI元人文构想跳动的心脏。 这精准道破,并庄…

EDK2环境搭建以及HelloWorld编译实现

本文简单介绍了Linux环境下搭建EDK2开发环境的关键步骤和命令。EDK2环境搭建以及HelloWorld编译实现 TianoCore的官方介绍 Welcome to TianoCore, the community supporting an open source implementation of the Uni…

谁生?谁死?从引用计数到可达性分析,洞悉GC的决策逻辑

谁生?谁死?从引用计数到可达性分析,洞悉GC的决策逻辑引用计数与可达性分析:谁死了,谁还活着? 垃圾回收,顾名思义,便是将已经分配出去的,但却不再使用的内存回收回来,以便能够再次分配。在Java虚拟机的语境下…

P1561 [USACO12JAN] Mountain Climbing S

Solution 简单看题容易得到一个错误的贪心: \[ans=max\{\Sigma_{k=1}^n + down_{min}, \Sigma_{k=1}^n +up_{min}\} \]然后你将可以把他 hack 掉,因为最初的方法认为第一个牛上山后,所有上下山是一起进行的,其实有…

六、阅读笔记六:保障软件可靠性的防线

《程序员修炼之道:从小工到专家》围绕软件测试与质量保障展开,系统阐述了如何通过科学的测试方法和质量管控策略,构建可靠的软件产品。在软件开发生命周期中,测试与质量保障是不可或缺的环节,它能够及时发现潜在问…

以此贴作别算法

以此贴作别算法def lcs(i, j):if i == m or j == n: return 0if s[i] == t[j]: return 1 + lcs(i+1, j+1)return max(lcs(i, j+1), lcs(i+1, j))def lcs2(i, j):if i >= m or j >= n: returni0 = i; j0 = jwhile…

五、阅读笔记五 应对复杂系统的挑战

《程序员修炼之道:从小工到专家》聚焦于并发编程与系统性能优化,为应对复杂系统的技术挑战提供了全面的解决方案。随着软件系统的规模不断扩大,用户量持续增长,并发处理能力和系统性能成为衡量软件质量的重要指标。…

P3988 [SHOI2013] 发牌

Solution 容易发现,答案就是维护当前序列的第 k 大值,而且只有删除,这个时候就可以使用权值线段树来维护。这颗树的每一个叶子表示一张牌,然后线段树记录改节点为根的子树的节点个数,接着进行查询即可,代码见下…