那些從未聽過的高危用戶權(quán)限
前言
我發(fā)現(xiàn)Windows用戶權(quán)限非常有趣。獨(dú)立于計(jì)算機(jī)/域?qū)ο驞ACL,用戶權(quán)限主要負(fù)責(zé)“通過什么方式可以讓特定的用戶登錄到一個(gè)特定的系統(tǒng) ”,它被組策略中的用戶權(quán)限分配所管理。我最近利用Get-ProcessTokenPrivilege函數(shù)中將枚舉到的特權(quán)整合到PowerUp,尤其是特殊的權(quán)限。
SeEnableDelegationPrivilege
SeEnableDelegationPrivilege被我忽略了。這項(xiàng)權(quán)限負(fù)責(zé)一個(gè)用戶帳戶是否可以“允許計(jì)算機(jī)和用戶帳戶被信任為委派”,我忽略了它的權(quán)限是因?yàn)橐?guī)定的文檔:“沒有任何理由將此用戶權(quán)限分配給成員服務(wù)器上的任何人和屬于域的工作站,因?yàn)樗谶@些上下文中沒有意義; 它僅與域控制器和獨(dú)立計(jì)算機(jī)相關(guān)。“所以這個(gè)權(quán)利適用于域,而不是本地域加入的機(jī)器。
我們一開始都認(rèn)為這個(gè)權(quán)限只負(fù)責(zé)TRUSTED_FOR_DELEGATION和TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION標(biāo)志的修改-這將建立一個(gè)漂亮的攻擊。不幸的是,對(duì)我們的攻擊者,看來這種權(quán)限也控制msDS-AllowedToDelegateTo屬性的修改,它包含受限制的委派目標(biāo)。
如果我們沒有SeEnableDelegationPrivilege 權(quán)限,我們就不能修改授權(quán)特定的用戶帳戶控制設(shè)置,也不能修改目標(biāo)msDS-AllowedToDelegateTo 字段(即使我們有對(duì)象的完全控制權(quán)):
現(xiàn)在的問題是:我們?nèi)绾未_定哪些用戶在域中擁有這項(xiàng)權(quán)限?由于SeEnableDelegationPrivilege僅適用于域控制器本身,我們需要檢查應(yīng)用于域控制器的任何組策略對(duì)象是否修改了給定DC的用戶權(quán)限分配。在大多數(shù)情況下,這將是“默認(rèn)域控制器策略”(GUID={6AC1786C-016F-11D2-945F-00C04FB984F9})。這也正是 Get-DomainPolicy -Source DC PowerView函數(shù)所做的:
因此,默認(rèn)情況下,只有BUILTIN\Administrators(即域管理員/企業(yè)管理員等)的成員才有權(quán)修改這些授權(quán)設(shè)置。但是,如果我們可以編輯這個(gè)GPO或者應(yīng)用于域控制器的任意一個(gè)GPO會(huì)發(fā)生什么?
為什么關(guān)心
在給予足夠的權(quán)限下,有一百萬種方法開啟Active Directory后門。Sean Metcalf把這些叫作“Sneaky Active Directory Persistence Tricks”。其中的一些涉及到ACL后門,這些我在過去已經(jīng)介紹過一些。其他的方法可能需要惡意修改的組策略。還有一些可能涉及修改用戶對(duì)象。SeEnableDelegationPrivilege 的這種方法比以上所說的都高明。
如果我們?cè)谟蛑锌刂屏艘粋€(gè)擁有SeEnableDelegationPrivilege權(quán)限的對(duì)象,這表明對(duì)象在域中的任何用戶對(duì)象上都有GenericAll/GenericWrite權(quán)限,我們可以無限期的,隨意攻擊域。
由于在默認(rèn)域控制器GPO上提升域權(quán)限或編輯權(quán)限只需幾分鐘,你可以對(duì)給定的GPO進(jìn)行單一的修改來實(shí)現(xiàn)這個(gè)后門。這GPO位于\\DOMAIN\sysvol\testlab.local\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf 。通過將任何用戶SID或用戶名添加到[Privilege Rights]節(jié)的SeEnableDelegationPrivilege行中,當(dāng)用戶/當(dāng)前電腦的DC重啟或刷新其組策略時(shí),設(shè)置就會(huì)生效:
如果惡意用戶在域中擁有任意用戶的完整的權(quán)限,我們可以修改用戶的msDS-AllowedToDelegateTo的值為我們想要攻擊的任何目標(biāo)。如果需要,我們還可以修改TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION UAC標(biāo)志。在這種情況下,讓我們利用ldap/DOMAIN_CONTROLLER來隨意使用DCSyncing:
如果惡意用戶對(duì)任何目標(biāo)受害都有GenericAll權(quán)限,那么我們甚至不必知道受害用戶的密碼。我們可以使用Set-DomainUserPassword將密碼強(qiáng)制重置為一個(gè)已知值,然后執(zhí)行asktgt.exe/s4u.exe攻擊流。
很顯然,從防守端,我們可以通過PowerView或其他方式來了解哪些用戶在域控制器中擁有SeEnableDelegationPrivilege特權(quán)。這個(gè)權(quán)限會(huì)賦予用戶完整的域控制權(quán),這是一個(gè)偉大的“微妙”的權(quán)限,但是可以很簡單的檢測(如果你知道你在找什么)出AD后門。有明顯的方法,你可以破壞域控制器中已經(jīng)被賦予的SYSTEM權(quán)限,在未來幾周,我會(huì)詳細(xì)介紹檢測特定DACL修改的方法,但是,在組策略中審查這些應(yīng)用是一個(gè)好的開始。