Windows 后滲透中可能會遇到的加密字符串分析

在 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節…