溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Windows Token九種權(quán)限的利用分別是怎么樣的

發(fā)布時間:2021-10-22 17:33:04 來源:億速云 閱讀:175 作者:柒染 欄目:系統(tǒng)運(yùn)維

今天就跟大家聊聊有關(guān)Windows Token九種權(quán)限的利用分別是怎么樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

0x00 前言

普通用戶(或者LocalService用戶)的特殊Token有哪些可利用方法呢?能否提權(quán)?如何判斷?

本文將要結(jié)合自己的經(jīng)驗(yàn),參考多個開源工具和資料,嘗試對這個技巧做總結(jié),分享學(xué)習(xí)心得。

參考的開源工具和資料:

  • Hot Potato: https://github.com/foxglovesec/Potato

  • powershell版本Hot Potato: https://github.com/Kevin-Robertson/Tater

  • Rotten Potato: https://github.com/breenmachine/RottenPotatoNG

  • lonelypotato: https://github.com/decoder-it/lonelypotato

  • Juicy Potato: https://github.com/ohpe/juicy-potato

  • https://github.com/hatRiot/token-priv

  • https://foxglovesecurity.com/2017/08/25/abusing-token-privileges-for-windows-local-privilege-escalation/

  • https://foxglovesecurity.com/2016/01/16/hot-potato/

  • https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/

  • https://foxglovesecurity.com/2017/08/25/abusing-token-privileges-for-windows-local-privilege-escalation/

0x01 簡介

本文將要介紹以下內(nèi)容:

  • 簡要利用思路

  • SeImpersonatePrivilege權(quán)限對應(yīng)的利用思路和開源代碼

  • SeAssignPrimaryPrivilege權(quán)限對應(yīng)的利用思路和開源代碼

  • SeTcbPrivilege權(quán)限對應(yīng)的利用思路和開源代碼

  • SeBackupPrivilege權(quán)限對應(yīng)的利用思路和開源代碼

  • SeRestorePrivilege權(quán)限對應(yīng)的利用思路和開源代碼

  • SeCreateTokenPrivilege權(quán)限對應(yīng)的利用思路和開源代碼

  • SeLoadDriverPrivilege權(quán)限對應(yīng)的利用思路和開源代碼

  • SeTakeOwnershipPrivilege權(quán)限對應(yīng)的利用思路和開源代碼

  • SeDebugPrivilege權(quán)限對應(yīng)的利用思路和開源代碼

Windows Token九種權(quán)限的利用分別是怎么樣的

0x02 簡要利用思路

1、取得了目標(biāo)的訪問權(quán)限后,查看可用權(quán)限

whoami /priv

例如,普通用戶具有的權(quán)限如下圖。

Windows Token九種權(quán)限的利用分別是怎么樣的

管理員用戶具有的權(quán)限如下圖。

Windows Token九種權(quán)限的利用分別是怎么樣的

iis用戶具有的權(quán)限如下圖。

Windows Token九種權(quán)限的利用分別是怎么樣的

Privilege Name項(xiàng)表示具有的權(quán)限,State表示權(quán)限的狀態(tài),我們可以通過WinAPI  AdjustTokenPrivileges將權(quán)限設(shè)置為Disabled或者Enabled

可供參考的實(shí)現(xiàn)代碼:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnablePrivilegeandGetTokenInformation.cpp

代碼實(shí)現(xiàn)了開啟指定權(quán)限(SeDebugPrivilege),并且查看當(dāng)前用戶名稱和具有的權(quán)限

2、如果包含以下九個權(quán)限,我們就可以對其進(jìn)一步利用

  • SeImpersonatePrivilege

  • SeAssignPrimaryPrivilege

  • SeTcbPrivilege

  • SeBackupPrivilege

  • SeRestorePrivilege

  • SeCreateTokenPrivilege

  • SeLoadDriverPrivilege

  • SeTakeOwnershipPrivilege

  • SeDebugPrivilege

注:

  • iis或者sqlserver的用戶通常具有SeImpersonatePrivilege和SeAssignPrimaryPrivilege權(quán)限

  • Backup service用戶通常具有SeBackupPrivilege和SeRestorePrivilege權(quán)限

0x03 SeImpersonatePrivilege權(quán)限的利用思路

參考資料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L327

SeImpersonatePrivilege

身份驗(yàn)證后模擬客戶端(Impersonatea client after authentication)

擁有該權(quán)限的進(jìn)程能夠模擬已有的token,但不能創(chuàng)建新的token

以下用戶具有該權(quán)限:

  • 本地管理員組成員和本地服務(wù)帳戶

  • 由服務(wù)控制管理器啟動的服務(wù)

  • 由組件對象模型 (COM) 基礎(chǔ)結(jié)構(gòu)啟動的并配置為在特定帳戶下運(yùn)行的COM服務(wù)器

通常,iis或者sqlserver用戶具有該權(quán)限

利用思路

  • 利用NTLM Relay to Local Negotiation獲得System用戶的Token 可使用開源工具Rotten  Potato、lonelypotato或者Juicy Potato

  • 通過WinAPI CreateProcessWithToken創(chuàng)建新進(jìn)程,傳入System用戶的Token  具有SeImpersonatePrivilege權(quán)限才能創(chuàng)建成功

  • 該Token具有System權(quán)限

可供參考的測試代碼:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeImpersonatePrivilege.cpp

代碼實(shí)現(xiàn)了開啟當(dāng)前進(jìn)程的SeImpersonatePrivilege權(quán)限,調(diào)用CreateProcessWithToken,傳入當(dāng)前進(jìn)程的Token,創(chuàng)建一個進(jìn)程,配合RottenPotato,可用來從LocalService提權(quán)至System權(quán)限。

0x04 SeAssignPrimaryPrivilege權(quán)限的利用思路

參考資料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L359

SeAssignPrimaryPrivilege

向進(jìn)程(新創(chuàng)建或者掛起的進(jìn)程)分配token

通常,iis或者sqlserver用戶具有該權(quán)限

利用思路1

· 利用NTLM Relay to Local Negotiation獲得System用戶的Token

· 通過WinAPI CreateProcessAsUser創(chuàng)建新進(jìn)程,傳入System用戶的Token

· 該Token具有System權(quán)限

可供參考的測試代碼:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeAssignPrimaryTokenPrivilege.cpp

代碼實(shí)現(xiàn)了開啟當(dāng)前進(jìn)程的SeAssignPrimaryTokenPrivilege權(quán)限,調(diào)用CreateProcessAsUser,傳入當(dāng)前進(jìn)程的Token,創(chuàng)建一個進(jìn)程,配合RottenPotato,可用來從LocalService提權(quán)至System權(quán)限。

利用思路2

  • 利用NTLM Relay to Local Negotiation獲得System用戶的Token

  • 通過WinAPI CreateProcess創(chuàng)建一個掛起的新進(jìn)程,參數(shù)設(shè)置為CREATE_SUSPENDED

  • 通過WinAPI NtSetInformationProcess將新進(jìn)程的Token替換為System用戶的Token

  • 該Token具有System權(quán)限

0x05 SeTcbPrivilege權(quán)限的利用思路

參考資料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L418

SeTcbPrivilege

等同于獲得了系統(tǒng)的***權(quán)限

利用思路

· 調(diào)用LsaLogonUser獲得Token

  • 將該Token添加至Local System account組

  • 該Token具有System權(quán)限

可供參考的測試代碼:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeTcbPrivilege.cpp

代碼實(shí)現(xiàn)了開啟當(dāng)前進(jìn)程的SeTcbPrivilege權(quán)限,登錄用戶test1,將其添加至Local System  account組,獲得System權(quán)限,創(chuàng)建注冊表項(xiàng)HKEY_LOCAL_MACHINE\SOFTWARE\testtcb

0x06 SeBackupPrivilege權(quán)限的利用思路

參考資料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L495

SeBackupPrivilege

用來實(shí)現(xiàn)備份操作,對當(dāng)前系統(tǒng)任意文件具有讀權(quán)限

利用思路

 讀取注冊表HKEY_LOCAL_MACHINE\SAM、HKEY_LOCAL_MACHINE\SECURITY和HKEY_LOCAL_MACHINE\SYSTEM

導(dǎo)出當(dāng)前系統(tǒng)的所有用戶hash mimikatz的命令如下:

lsadump::sam /sam:SamBkup.hiv /system:SystemBkup.hiv

可供參考的測試代碼:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeBackupPrivilege.cpp

代碼實(shí)現(xiàn)了開啟當(dāng)前進(jìn)程的SeBackupPrivilege權(quán)限,讀取注冊表,將其保存成文件C:\\test\\SAM、C:\\test\\SECURITY和C:\\test\\SYSTEM

0x07 SeRestorePrivilege權(quán)限的利用思路

參考資料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L528

SeRestorePrivilege

用來實(shí)現(xiàn)恢復(fù)操作,對當(dāng)前系統(tǒng)任意文件具有寫權(quán)限

利用思路1

  • 獲得SeRestorePrivilege權(quán)限,修改注冊表HKLM\SOFTWARE\Microsoft\Windows  NT\CurrentVersion\Image File Execution Options

  • 劫持exe文件的啟動

  • 實(shí)現(xiàn)提權(quán)或是作為后門

利用思路2

  • 獲得SeRestorePrivilege權(quán)限,向任意路徑寫入dll文件

  • 實(shí)現(xiàn)dll劫持

  • 實(shí)現(xiàn)提權(quán)或是作為后門

可供參考的測試代碼:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeRestorePrivilege.cpp

代碼實(shí)現(xiàn)了開啟當(dāng)前進(jìn)程的SeRestorePrivilege權(quán)限,創(chuàng)建注冊表項(xiàng)HKEY_LOCAL_MACHINE\SOFTWARE\testrestore

0x08 SeCreateTokenPrivilege權(quán)限的利用思路

參考資料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L577

SeCreateTokenPrivilege

用來創(chuàng)建Primary Token

利用思路

 通過WinAPI ZwCreateToken創(chuàng)建Primary Token

  • 將Token添加至local administrator組

  • 該Token具有System權(quán)限

可供參考的測試代碼:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeCreateTokenPrivilege.cpp

代碼實(shí)現(xiàn)了開啟當(dāng)前進(jìn)程的SeCreateTokenPrivilege權(quán)限,創(chuàng)建Primary Token,將其添加至local  administrator組,開啟SeDebugPrivilege和SeTcbPrivilege權(quán)限

0x09 SeLoadDriverPrivilege權(quán)限的利用思路

參考資料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L626

SeLoadDriverPrivilege

用來加載驅(qū)動文件

利用思路

  • 創(chuàng)建驅(qū)動文件的注冊表

reg add hkcu\System\CurrentControlSet\CAPCOM /v ImagePath /t REG_SZ /d "\??\C:\test\Capcom.sys" reg add hkcu\System\CurrentControlSet\CAPCOM /v Type /t REG_DWORD /d 1
  • 加載驅(qū)動文件Capcom.sys

  • Capcom.sys存在漏洞,系統(tǒng)加載后,可從普通用戶權(quán)限提升至System權(quán)限,利用代碼可參考:https://github.com/tandasat/ExploitCapcom

  • 獲得System權(quán)限

可供參考的測試代碼:  https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeLoadDriverPrivilege.cpp

代碼實(shí)現(xiàn)了開啟當(dāng)前進(jìn)程的SeLoadDriverPrivilege權(quán)限,讀取注冊表項(xiàng)hkcu\System\CurrentControlSet\CAPCOM,加載驅(qū)動文件Capcom.sys

0x0A SeTakeOwnershipPrivilege權(quán)限的利用思路

參考資料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L688

SeTakeOwnershipPrivilege

同SeRestorePrivilege類似,對當(dāng)前系統(tǒng)任意文件具有寫權(quán)限

利用思路1

  • 獲得SeTakeOwnershipPrivilege權(quán)限,修改注冊表HKLM\SOFTWARE\Microsoft\Windows  NT\CurrentVersion\Image File Execution Options

  • 劫持exe文件的啟動

  • 實(shí)現(xiàn)提權(quán)或是作為后門

利用思路2

  • 獲得SeTakeOwnershipPrivilege權(quán)限,向任意路徑寫入dll文件

  • 實(shí)現(xiàn)dll劫持

  • 實(shí)現(xiàn)提權(quán)或是作為后門

可供參考的測試代碼:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeTakeOwnershipPrivilege.cpp

代碼實(shí)現(xiàn)了開啟當(dāng)前進(jìn)程的SeTakeOwnershipPrivilege權(quán)限,修改注冊表項(xiàng)hklm\SOFTWARE\Microsoft\Windows  NT\CurrentVersion\Image File Execution Options的權(quán)限,普通用戶權(quán)限對其具有完整操作權(quán)限

后續(xù)的寫操作:

reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File  Execution Options" /v takeownership /t REG_SZ /d  "C:\\Windows\\System32\\calc.exe"

0x0B SeDebugPrivilege權(quán)限的利用思路

參考資料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L736

SeDebugPrivilege

用來調(diào)試指定進(jìn)程,包括讀寫內(nèi)存,常用作實(shí)現(xiàn)dll注入

利用思路

  • 找到System權(quán)限的進(jìn)程

  • dll注入

  • 獲得System權(quán)限

可供參考的測試代碼:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeDebugPrivilege.cpp

代碼實(shí)現(xiàn)了開啟當(dāng)前進(jìn)程的SeDebugPrivilege權(quán)限,向指定進(jìn)程注入dll

0x0C 小結(jié)

本文總結(jié)了普通用戶(或者LocalService用戶)Token中九種權(quán)限的利用方法,分析利用思路,完善實(shí)現(xiàn)代碼。

看完上述內(nèi)容,你們對Windows Token九種權(quán)限的利用分別是怎么樣的有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI