在 Windows 后渗透过程中,攻击者经常会遇到各种加密字符串或数据,这些数据通常用于存储敏感信息,如凭据、会话票据或配置数据。理解这些加密字符串的类型、加密机制、存储位置以及解密方法,对于权限提升、横向移动和持久化至关重要。本文将详细分析 Windows 系统中常见的加密字符串类型,包括 PSCredential以 01000000d 开头的字符串(通常与 DPAPI 相关)、SecureStringDPAPIGPP,并补充其他类型(如 LSA Secrets、SAM Hashes、Kerberos Tickets 等)。通过优化分类和结合实际后渗透场景,提供一个全面的参考框架。


1. 分类与概述

Windows 系统中的加密字符串通常与凭据存储、身份验证或敏感数据保护相关。这些字符串的加密机制、存储方式和解密条件各不相同。以下是对常见加密字符串的分类:

分类加密机制典型存储位置解密条件后渗透工具标志性特征
PSCredentialDPAPI + SecureStringPowerShell 脚本、内存用户上下文或 SYSTEM 权限Mimikatz, PowerShell 反射System.Management.Automation.PSCredential
SecureStringDPAPI内存、序列化文件用户上下文或 SYSTEM 权限Mimikatz, PowerShell 反射System.Security.SecureString
DPAPI BlobDPAPI文件、注册表、内存、凭据管理器DPAPI 主密钥 + 用户/SYSTEM 权限Mimikatz, SharpDPAPI01000000d 开头的十六进制
GPP (Group Policy Preferences)AES-256 (固定密钥)SYSVOL 的 XML 文件访问 SYSVOL 权限(默认可读)Get-GPPPassword, Metasploitcpassword 的 Base64 编码
LSA SecretsDPAPI + 注册表加密注册表(HKLM\SECURITY)SYSTEM 权限Mimikatz, lsadump注册表中的加密二进制数据
SAM HashesNTLM/SYSKEY 加密注册表(HKLM\SAM)SYSTEM 权限Mimikatz, secretsdumpNTLM 哈希(十六进制)
Kerberos TicketsKerberos 协议加密内存(LSASS 进程)SYSTEM 权限或用户会话Mimikatz, RubeusTGT/TGS 票据(内存中)

2. 详细分析

2.1 PSCredential

定义

PSCredential 是 PowerShell 中的 .NET 对象(System.Management.Automation.PSCredential),用于安全地存储和传递用户名和密码。密码部分以 SecureString 形式存储,底层依赖 Windows 的 DPAPI(Data Protection API)进行加密。

加密机制
  • 加密方式:密码通过 SecureString 加密,DPAPI 使用用户或机器的加密密钥进行保护。
  • 密钥绑定:加密数据与当前用户上下文或机器绑定,只有同一用户在同一机器上才能解密。
  • 序列化:如果 PSCredential 被序列化(如通过 Export-Clixml 保存到文件),会生成 DPAPI 加密的二进制数据。
存储位置
  • 内存:运行中的 PowerShell 进程(如通过 Get-Credential 创建)。
  • 文件:脚本中保存的序列化凭据(如 .xml 文件)。
  • 注册表:某些自动化脚本可能将凭据存储在注册表中。
后渗透利用
  • 提取方法
    • 如果有用户上下文,可以通过 PowerShell 反射直接解密 PSCredential 中的密码。
    • 使用 Mimikatz 的 sekurlsa::logonpasswordsdpapi::cred 模块从内存中提取。
  • 工具
    • Mimikatz
    • PowerShell 脚本(如 Get-DecryptedPSCredential
  • 限制:需要目标用户上下文或 SYSTEM 权限。
标志性特征
  • PowerShell 脚本中出现 Get-CredentialSystem.Management.Automation.PSCredential
  • 序列化后可能以 01000000d 开头的 DPAPI 数据形式存储。

2.2 SecureString

定义

SecureStringSystem.Security.SecureString)是 .NET Framework 中的数据类型,用于在内存中以加密形式存储敏感数据(如密码),减少明文暴露时间。

加密机制
  • 内存加密:数据在输入时逐字符加密,存储在内存中时保持加密状态。
  • DPAPI 依赖:底层使用 DPAPI 加密,密钥与用户或机器绑定。
  • 序列化:通过 ConvertFrom-SecureString 序列化后,生成 DPAPI 加密的字符串(可能以 01000000d 开头)。
存储位置
  • 内存:PowerShell 脚本运行时(如 ConvertTo-SecureString)。
  • 文件:序列化后的文件(如 .txt.xml)。
  • 注册表:某些应用程序可能将序列化的 SecureString 存储在注册表中。
后渗透利用
  • 提取方法
    • 通过反射 API(如 System.Runtime.InteropServices.Marshal)从内存中解密。
    • 如果序列化到文件,结合 DPAPI 主密钥解密。
  • 工具
    • Mimikatz(dpapi::blob
    • SharpDPAPI
  • 限制:需要用户上下文或 SYSTEM 权限。
标志性特征
  • PowerShell 脚本中出现 ConvertTo-SecureStringConvertFrom-SecureString
  • 内存中看到 System.Security.SecureString 类型。

2.3 DPAPI Blob(以 01000000d 开头的字符串)

定义

01000000d 开头的字符串是 DPAPI 加密后的二进制数据(BLOB)的十六进制表示,广泛用于 Windows 系统中的凭据保护。它是 PSCredentialSecureString 和其他凭据(如 Credential Manager)的底层加密格式。

加密机制
  • DPAPI:Windows 提供的加密 API,使用用户或机器的加密密钥。
  • 数据格式01000000d 是 DPAPI 数据块的头部标识符,表示加密数据的版本或格式。
  • 保护级别
    • 用户级别:只有同一用户能解密。
    • 机器级别:同一机器上的所有用户都能解密。
存储位置
  • 文件:序列化的凭据文件(如 .xml)。
  • 注册表:某些应用程序存储的加密数据(如 HKCU\Software)。
  • 凭据管理器:Windows Credential Manager 中的网络凭据、RDP 凭据等。
  • 浏览器:如 Chrome、Edge 的密码数据库。
后渗透利用
  • 提取方法
    • 获取 DPAPI 主密钥(C:\Users\<User>\AppData\Roaming\Microsoft\Protect)。
    • 使用 Mimikatz 的 dpapi::blobdpapi::masterkey 模块解密。
  • 工具
    • Mimikatz
    • SharpDPAPI
    • DPAPIck
  • 限制:需要目标用户的 DPAPI 主密钥或 SYSTEM 权限。
标志性特征
  • 01000000d 开头的长十六进制字符串。
  • 出现在文件、注册表或内存中。

2.4 GPP (Group Policy Preferences)

定义

组策略首选项(GPP)是 Windows 组策略的一部分,允许管理员配置用户或计算机设置(如本地管理员账户、计划任务)。早期版本(Windows Server 2008 及之前)的 GPP 凭据以弱加密形式存储。

加密机制
  • AES-256:使用固定密钥(微软公开的硬编码密钥)加密。
  • 存储格式:加密后的密码以 Base64 编码存储在 XML 文件的 cpassword 属性中。
  • 位置:SYSVOL 共享文件夹(\\<Domain>\SYSVOL)中的 XML 文件,如 Groups.xmlScheduledTasks.xml
存储位置
  • SYSVOL:域控制器上的共享文件夹,默认所有域用户可读。
  • 文件类型.xml 文件,包含 cpassword 属性。
后渗透利用
  • 提取方法
    • 访问 SYSVOL,提取 XML 文件中的 cpassword
    • 使用公开的 AES 密钥解密(无需额外权限)。
  • 工具
    • PowerSploit 的 Get-GPPPassword
    • Metasploit 的 post/windows/gather/credentials/gpp
  • 限制:仅适用于未修补的旧系统(2014 年微软修复了此漏洞,移除了固定密钥)。
标志性特征
  • XML 文件中的 cpassword 属性,值为 Base64 编码的加密字符串。

2.5 LSA Secrets

定义

LSA(Local Security Authority)Secrets 是 Windows 系统存储在注册表中的加密凭据,用于支持系统服务和身份验证(如服务账户密码、自动登录凭据)。

加密机制
  • 加密方式:结合 DPAPI 和系统密钥(SYSKEY)加密。
  • 存储位置HKLM\SECURITY\Policy\Secrets(需要 SYSTEM 权限访问)。
  • 内容
    • 服务账户密码(如用于计划任务或服务的账户)。
    • 自动登录凭据(如 DefaultPassword)。
    • 远程桌面服务的密码。
存储位置
  • 注册表HKLM\SECURITY\Policy\Secrets
  • 内存:LSASS 进程中可能缓存相关数据。
后渗透利用
  • 提取方法
    • 使用 Mimikatz 的 lsadump::secrets 模块直接从注册表提取。
    • 从 LSASS 进程内存中 dump 数据。
  • 工具
    • Mimikatz
    • lsadump
  • 限制:需要 SYSTEM 权限。
标志性特征
  • 注册表中的加密二进制数据。
  • Mimikatz 输出中以 LSA Secrets 标识。

2.6 SAM Hashes

定义

SAM(Security Accounts Manager)存储本地用户账户的 NTLM 哈希,用于本地身份验证。

加密机制
  • NTLM 哈希:用户密码的 NTLM 哈希存储在 SAM 数据库中。
  • SYSKEY 加密:SAM 数据库整体通过 SYSKEY 加密。
  • 存储位置HKLM\SAM\SAM\Domains\Account\Users
存储位置
  • 注册表HKLM\SAM
  • 文件:SAM 文件(C:\Windows\System32\config\SAM)。
后渗透利用
  • 提取方法
    • 使用 Mimikatz 的 lsadump::sam 模块提取。
    • 从注册表或 SAM 文件 dump 哈希。
    • 使用哈希进行 Pass-the-Hash 攻击。
  • 工具
    • Mimikatz
    • secretsdump(Impacket)
  • 限制:需要 SYSTEM 权限。
标志性特征
  • NTLM 哈希格式(十六进制)。
  • 注册表中的加密二进制数据。

2.7 Kerberos Tickets

定义

Kerberos Tickets 是 Windows 域环境中用于身份验证的票据,包括 TGT(Ticket Granting Ticket)和 TGS(Ticket Granting Service)。

加密机制
  • Kerberos 协议:使用域控制器的密钥加密票据。
  • 存储位置:LSASS 进程内存中。
存储位置
  • 内存:LSASS 进程中缓存的票据。
  • 文件:通过导出(如 .kirbi 文件)保存。
后渗透利用
  • 提取方法
    • 使用 Mimikatz 的 sekurlsa::ticketskerberos::list 提取票据。
    • 使用 Rubeus 导出票据或进行 Pass-the-Ticket 攻击。
  • 工具
    • Mimikatz
    • Rubeus
  • 限制:需要 SYSTEM 权限或用户会话。
标志性特征
  • 内存中以 Kerberos 票据格式存储(如 .kirbi 文件)。
  • Mimikatz 输出中以 TGTTGS 标识。

3. 后渗透中的操作建议

3.1 识别加密字符串

  • 文件系统:检查 .xml.ps1.txt 文件,寻找 cpassword01000000dSecureString 相关内容。
  • 注册表:检查 HKLM\SAMHKLM\SECURITYHKCU\Software
  • 内存:dump LSASS 进程或 PowerShell 进程内存。
  • 网络共享:访问 SYSVOL 共享,提取 GPP 相关 XML 文件。

3.2 解密方法

  • PSCredential/SecureString
    • 使用 PowerShell 反射或 Mimikatz 解密内存中的数据。
    • 序列化数据需要 DPAPI 主密钥。
  • DPAPI Blob
    • 获取主密钥(C:\Users\<User>\AppData\Roaming\Microsoft\Protect)。
    • 使用 Mimikatz 或 SharpDPAPI 解密。
  • GPP
    • 提取 SYSVOL 中的 XML 文件,使用公开的 AES 密钥解密。
  • LSA Secrets/SAM Hashes
    • 获取 SYSTEM 权限,dump 注册表或 SAM 文件。
  • Kerberos Tickets
    • 从 LSASS 内存中提取票据,导出为 .kirbi 文件。

3.3 工具推荐

  • Mimikatz:支持 DPAPI、LSA Secrets、SAM Hashes、Kerberos Tickets 提取。
  • SharpDPAPI:轻量级 DPAPI 解密工具。
  • PowerSploitGet-GPPPassword 用于 GPP 密码提取。
  • Rubeus:Kerberos 票据提取和利用。
  • Impacketsecretsdump 用于 SAM Hashes 提取。

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

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

相关文章

腾讯云本地专用集群CDC:混合云架构下的分布式云服务实践

摘要 在数字化转型加速的背景下&#xff0c;企业上云面临数据合规、低时延、运维复杂度等多重挑战。腾讯云本地专用集群CDC&#xff08;Cloud Dedicated Cluster&#xff09;通过融合公有云与本地IDC优势&#xff0c;提供近场云服务解决方案。本文基于IDC行业报告及技术实测数…

wpa_supplicant 源码学习

代码地址&#xff1a;git clone https://w1.fi/hostap.git 我目前学的的版本是 wpa_supplicant 2.12-devel-hostap_2_11-857-g54930b62b 五月份左右的提交&#xff0c;是较新的代码 想做白盒测试。最近开始学习 wpa_supplicant 这个工具。 自学了一个多月吧。 整理了一些代码跳…

[学习] C语言<string.h>中字符串函数全解析

C语言<string.h>中字符串函数全解析 在 C 语言中&#xff0c;字符串处理是程序开发中的重要组成部分。C 标准库 <string.h> 提供了一系列函数用于操作字符数组&#xff08;即字符串&#xff09;。这些函数以 str 开头&#xff0c;功能强大、使用广泛&#xff0c;掌…

OJ搭建:Judge0服务器、DeepSeek服务接入简介

序 各大OJ平台上有很多很好的资源&#xff0c;但作为自己的“备课本”总有各种不便&#xff0c;教学生时间久了总是有一些自己的题目和想法&#xff0c;这在教初学的学生时非常突出。所以&#xff0c;很多年前就搞了一些尝试&#xff0c;包括&#xff1a;在机房搭建ubuntu服务器…

Java的锁机制问题

锁机制 1.锁监视器 在 Java 并发编程中&#xff0c;锁监视器&#xff08;Monitor&#xff09; 是对象内部与锁关联的同步机制&#xff0c;用于控制多线程对共享资源的访问。以下是核心要点&#xff1a; &#x1f512; 监视器的核心组成 独占区&#xff08;Ownership&#xff…

老凤祥的AI智能眼镜:让智慧更近生活

在科技进步的潮流中,人工智能技术不断为我们的生活增添色彩。近日,有关字节跳动旗下的火山引擎与中国珠宝品牌老凤祥合作开发 AI 智能眼镜的消息引发了广泛关注。这款与众不同的眼镜因其独特的功能及技术支持,已经在业内引起了极大反响。 AI眼镜:老年群体的智能好帮手 根…

Kotlin 中为什么没有静态变量和静态方法—不用static?

Kotlin 的设计核心是&#xff1a; 一切皆对象&#xff1a;消除 static 的「非对象」特性&#xff0c;用 companion&#xff08;对象&#xff09;和顶层函数&#xff08;包级对象&#xff09;替代&#xff0c;让代码更统一。避免全局状态滥用&#xff1a;static 成员是全局可见…

VSCode性能调优:从卡顿到丝滑的终极方案

⚡ 核心价值 "这套配置使某金融核心系统VS Code内存占用从8GB降至1.2GB,加载速度提升15倍" —— 2024某银行效能优化报告 🧩 性能瓶颈拆解 一、百万行项目优化方案 🚀 黄金配置参数 // settings.json(核弹级优化) {"files.watcherExclude": {"…

以云织梦,渡数济世:辉瑞与亚马逊云科技共谱医药新乐章

胖头陀科技 编辑&#xff1a;沐由 【导读】“用合规的数据来帮助患者&#xff0c;成为患者回归健康的一味新药。”当下&#xff0c;在数字洪流的浪潮中&#xff0c;这味“良药”正沿着云和AI的脉络&#xff0c;奔向有需求的千家万户…… 如果说到Pfizer&#xff0c;估计十个人…

SpringBoot后端开发知识点总结(持续更新)

目录 1. 常用易混淆注解解释1.1 Resource和Autowired注解的区别1.2 PathVariable和RequestParam注解的区别 2. Mybatis-Plus高级特性2.1 强大的通用CRUD接口2.2 代码生成器 3. IDEA实用快捷键4. 前后端联调关键点4.1 代码示例4.2 联调要点4.3 调试技巧 1. 常用易混淆注解解释 …

电脑商城--用户收货管理

新增收货地址 1 新增收货地址-创建数据表 1.使用use命令先选中store数据库。 USE store; 2.在store数据库中创建t_address用户数据表。 CREATE TABLE t_address (aid INT AUTO_INCREMENT COMMENT 收货地址id,uid INT COMMENT 归属的用户id,name VARCHAR(20) COMMENT 收货人姓…

开发者避坑:接入Flux-Kontext API实现文生图、图生图功能

在数字化浪潮背景下&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;技术正加速重塑图像创作领域。智创聚合API平台近日宣布整合Flux-Kontext系列模型&#xff0c;通过API接口支持图生图和文生图功能&#xff0c;为开发者及创作者提供高效解决方案。此…

.Net Core 获取与bin目录相同文件路径的文件

在 .NET Core 中&#xff0c;您可以使用以下方法来获取与 bin 目录相同的文件路径。通常&#xff0c;bin 目录是应用程序编译后生成的输出目录&#xff0c;您可以使用 AppContext.BaseDirectory 或 Directory.GetCurrentDirectory() 来获取该目录的路径。 以下是一些常用的方法…

RN(React Native)技术应用中常出现的错误及解决办法

React Native 作为跨平台开发框架&#xff0c;在实际应用中可能会遇到一些常见的错误。以下是React Native 技术应用中常出现的错误及解决办法&#xff1a; 1. 网络请求失败&#xff08;Network Request Failed&#xff09; 原因&#xff1a; 请求地址不正确网络权限未配置i…

Java 21 的虚拟线程与桥接模式:构建高性能并发系统

Java 21 的虚拟线程与桥接模式&#xff1a;构建高性能并发系统 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…

HTML5 火焰字体效果教程

HTML5 火焰字体效果教程 这里写目录标题 HTML5 火焰字体效果教程前言项目概述基本原理项目结构详细实现步骤1. HTML结构2. CSS样式3. JavaScript实现 代码详解1. 初始化设置2. 粒子系统3. 生成粒子4. 动画循环5. 交互控制 扩展和优化建议总结完整代码 前言 在这篇教程中&#…

SMOTE-XGBoost实战:金融风控中欺诈检测的样本不平衡解决方案

1. 行业问题背景 &#xff08;1&#xff09;金融欺诈检测的特殊性 在支付风控领域&#xff0c;样本不平衡是核心痛点。Visa 2023年度报告显示&#xff0c;全球信用卡欺诈率约为0.6%&#xff0c;但单笔欺诈交易平均损失高达$500。传统机器学习模型在此场景下表现堪忧&#xff1…

Instagram下载保存 -下载狗解析工具

在日常浏览Instagram时&#xff0c;是否有过这样的烦恼&#xff1a;看到一个精彩的视频&#xff0c;想要保存下来&#xff0c;却不知道如何操作&#xff1f;有时候我们会看到一些特别的旅行视频、搞笑片段&#xff0c;甚至是喜欢的名人分享的内容&#xff0c;简直是舍不得错过。…

flink如何基于Pekko实现RPC调用

摘要 通过阅读flink源码&#xff0c;了解flink是如何基于Pekko实现远程RPC调用的 Pekko实现远程调用 Flink 的 RPC 框架底层是构建在 Pekko 的 actor 模型之上的&#xff0c;了解Pekko如何使用&#xff0c;对后续源码的阅读有帮助。 Apache Pekko&#xff08;原为 Akka 的一…

Kafka节点注册冲突问题分析与解决

一、核心错误分析 ERROR Error while creating ephemeral at /brokers/ids/1, node already exists and owner does not match org.apache.zookeeper.KeeperException$NodeExistsException: KeeperErrorCode NodeExists问题本质&#xff1a;ZooKeeper中已存在ID为1的broker节…