【THM】offensive-Hacking with PowerShell
字数 1459 2025-08-29 22:41:38

PowerShell 攻击性黑客技术指南

1. PowerShell 简介

PowerShell 是微软开发的基于 .NET 框架的脚本语言和 shell 环境,具有以下特点:

  • 使用 .NET 框架构建,可直接执行 .NET 函数
  • 大多数 PowerShell 命令(称为 cmdlet)都是用 .NET 编写的
  • 输出是对象而非文本,具有面向对象特性
  • 支持将输出从一个 cmdlet 传递到另一个 cmdlet
  • cmdlet 命名采用"动词-名词"格式(如 Get-Command)

常用动词

  • Get:获取信息
  • Start:启动
  • Stop:停止
  • Read:读取
  • Write:写入
  • New:新建
  • Out:输出

完整动词列表参考:微软官方文档

2. 基本 PowerShell 命令

2.1 Get-Help

获取 cmdlet 的帮助信息:

Get-Help Command-Name

查看使用示例:

Get-Help Command-Name -Examples

2.2 Get-Command

获取当前计算机上安装的所有 cmdlet,支持模式匹配:

Get-Command Verb-*
Get-Command *-Noun

示例:查看所有以"New"开头的 cmdlet

Get-Command New-*

3. 对象操作

3.1 管道(|)

将对象从一个 cmdlet 传递到另一个 cmdlet:

Verb-Noun | Get-Member

查看对象成员:

Get-Command | Get-Member -MemberType Method

3.2 Select-Object

从 cmdlet 输出中提取属性创建新对象:

Get-ChildItem | Select-Object Mode, Name

常用标志:

  • -first:获取前x个对象
  • -last:获取最后x个对象
  • -unique:显示唯一对象
  • -skip:跳过x个对象

3.3 Where-Object

基于属性值筛选对象:

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

常用运算符:

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

完整运算符列表参考:微软官方文档

示例:检查已停止的进程

Get-Process | Where-Object {$_.Status -eq "Stopped"}

3.4 Sort-Object

对 cmdlet 输出进行排序:

Verb-Noun | Sort-Object

示例:对目录列表排序

Get-ChildItem | Sort-Object

4. 文件系统操作

4.1 查找文件

查找特定文件(如"interesting-file.txt"):

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

参数说明:

  • -Recurse:递归搜索
  • -ErrorAction SilentlyContinue:忽略错误
  • -File:仅搜索文件
  • -Path:搜索路径(C:\表示整个磁盘)
  • -Include:文件名模式

替代方法:

Get-ChildItem "*interesting-file*" -Path C:\ -Recurse -ErrorAction SilentlyContinue

4.2 读取文件内容

读取文件内容:

Get-Content -Path 'C:\Program Files\interesting-file.txt.txt'

或结合查找:

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

5. Windows 枚举技术

5.1 系统信息收集

获取系统信息:

Get-WmiObject Win32_OperatingSystem | Select-Object *

5.2 用户账户枚举

列出本地用户:

Get-LocalUser

5.3 网络信息

获取网络配置:

Get-NetIPConfiguration

6. PowerShell 脚本基础

6.1 脚本执行策略

查看当前执行策略:

Get-ExecutionPolicy

设置执行策略(需要管理员权限):

Set-ExecutionPolicy RemoteSigned

6.2 基本脚本结构

示例脚本:

# 注释以#开头
param(
    [string]$param1 = "default value"
)

Write-Output "Hello, $param1"

# 函数定义
function Get-SystemInfo {
    Get-WmiObject Win32_OperatingSystem | Select-Object Caption, Version
}

# 调用函数
Get-SystemInfo

7. 远程管理

7.1 远程桌面连接

使用 xfreerdp 连接远程桌面:

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

7.2 PowerShell 远程会话

建立远程会话:

Enter-PSSession -ComputerName RemotePC -Credential (Get-Credential)

8. 安全注意事项

  1. PowerShell 脚本可能被恶意利用,企业环境应监控 PowerShell 活动
  2. 避免在生产环境中使用不受信任的脚本
  3. 定期更新 PowerShell 版本以获取安全补丁
  4. 限制 PowerShell 远程访问权限

9. 进阶学习资源

  1. 微软 PowerShell 文档
  2. PowerShell 内置帮助系统:Get-Help about_*
  3. PowerShell 社区资源:GitHub、PowerShell Gallery

通过掌握这些 PowerShell 基础知识和技术,您将能够有效地进行系统管理、自动化任务和安全评估工作。

PowerShell 攻击性黑客技术指南 1. PowerShell 简介 PowerShell 是微软开发的基于 .NET 框架的脚本语言和 shell 环境,具有以下特点: 使用 .NET 框架构建,可直接执行 .NET 函数 大多数 PowerShell 命令(称为 cmdlet)都是用 .NET 编写的 输出是对象而非文本,具有面向对象特性 支持将输出从一个 cmdlet 传递到另一个 cmdlet cmdlet 命名采用"动词-名词"格式(如 Get-Command) 常用动词 Get:获取信息 Start:启动 Stop:停止 Read:读取 Write:写入 New:新建 Out:输出 完整动词列表参考: 微软官方文档 2. 基本 PowerShell 命令 2.1 Get-Help 获取 cmdlet 的帮助信息: 查看使用示例: 2.2 Get-Command 获取当前计算机上安装的所有 cmdlet,支持模式匹配: 示例:查看所有以"New"开头的 cmdlet 3. 对象操作 3.1 管道(|) 将对象从一个 cmdlet 传递到另一个 cmdlet: 查看对象成员: 3.2 Select-Object 从 cmdlet 输出中提取属性创建新对象: 常用标志: -first :获取前x个对象 -last :获取最后x个对象 -unique :显示唯一对象 -skip :跳过x个对象 3.3 Where-Object 基于属性值筛选对象: 常用运算符: -Contains :属性值中任何项与指定值完全匹配 -EQ :属性值与指定值相同 -GT :属性值大于指定值 完整运算符列表参考: 微软官方文档 示例:检查已停止的进程 3.4 Sort-Object 对 cmdlet 输出进行排序: 示例:对目录列表排序 4. 文件系统操作 4.1 查找文件 查找特定文件(如"interesting-file.txt"): 参数说明: -Recurse :递归搜索 -ErrorAction SilentlyContinue :忽略错误 -File :仅搜索文件 -Path :搜索路径(C:\表示整个磁盘) -Include :文件名模式 替代方法: 4.2 读取文件内容 读取文件内容: 或结合查找: 5. Windows 枚举技术 5.1 系统信息收集 获取系统信息: 5.2 用户账户枚举 列出本地用户: 5.3 网络信息 获取网络配置: 6. PowerShell 脚本基础 6.1 脚本执行策略 查看当前执行策略: 设置执行策略(需要管理员权限): 6.2 基本脚本结构 示例脚本: 7. 远程管理 7.1 远程桌面连接 使用 xfreerdp 连接远程桌面: 7.2 PowerShell 远程会话 建立远程会话: 8. 安全注意事项 PowerShell 脚本可能被恶意利用,企业环境应监控 PowerShell 活动 避免在生产环境中使用不受信任的脚本 定期更新 PowerShell 版本以获取安全补丁 限制 PowerShell 远程访问权限 9. 进阶学习资源 微软 PowerShell 文档 PowerShell 内置帮助系统: Get-Help about_* PowerShell 社区资源:GitHub、PowerShell Gallery 通过掌握这些 PowerShell 基础知识和技术,您将能够有效地进行系统管理、自动化任务和安全评估工作。