AdminSDHolder
本次安全科普為大家介紹AD域中的AdminSDHolder,與AdminSDHolder相關(guān)的特性頻繁被攻擊者利用來(lái)進(jìn)行留后門等操作,在檢查AD域安全時(shí)AdminSDHolder相關(guān)屬性也是排查的重點(diǎn)。
0x00 域內(nèi)受保護(hù)的用戶和組
在Active Directory中,一些高權(quán)限的用戶和組被視為受保護(hù)的對(duì)象
通常對(duì)于受保護(hù)的用戶和組,權(quán)限的設(shè)置和修改是由一個(gè)自動(dòng)過(guò)程來(lái)完成的,這樣才能保證在對(duì)象移動(dòng)到其他目錄時(shí),對(duì)象的權(quán)限也始終保持一致
不同系統(tǒng)版本的域控制器上受保護(hù)的用戶和組也不同,具體可以參考微軟文檔:
也可以使用adfind來(lái)查詢
Adfind.exe -f "&(objectcategory=group)(admincount=1)" -dn
Adfind.exe -f "&(objectcategory=user)(admincount=1)" -dn

1. AdminSDHolder
AdminSDHolder對(duì)象的目的是為域內(nèi)受保護(hù)的用戶和組提供權(quán)限的“模板”,其在LDAP上的路徑為:CN=AdminSDHolder,CN=System,DC=<domain_component>,DC=<domain_component>


SDProp是一個(gè)進(jìn)程,該進(jìn)程每60分鐘(默認(rèn)情況下)在包含域的PDC模擬器(PDCE)的域控制器上運(yùn)行
SDProp將域的AdminSDHolder對(duì)象的權(quán)限與域中受保護(hù)的帳戶和組的權(quán)限進(jìn)行比較。如果任何受保護(hù)帳戶和組的權(quán)限與AdminSDHolder對(duì)象的權(quán)限不匹配,則將受保護(hù)帳戶和組的權(quán)限重置為與域的AdminSDHolder對(duì)象的權(quán)限匹配
0x01 利用
既然默認(rèn)每60分鐘SDProp會(huì)將受保護(hù)帳戶和組的權(quán)限重置為與域的AdminSDHolder對(duì)象的權(quán)限匹配,那么我們完全可以對(duì)AdminSDHolder添加ACL來(lái)留后門
利用權(quán)限:
對(duì)AdminSDHolder有
WriteDACL
權(quán)限的賬戶
1. 添加ACL
(1) Admod
.\Admod.exe -b "CN=AdminSDHolder,CN=System,DC=testad,DC=local" "SD##ntsecuritydescriptor::{GETSD}{+D=(A;;GA;;;testad\test1)}"

這里有一個(gè)坑點(diǎn),PowerView在github的主分支中很多功能是沒(méi)有的,所以推薦使用Dev分支
Import-Module .\PowerView.ps1
Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -PrincipalSamAccountName test1 -Verbose -Rights All
2. 執(zhí)行SDProp
除了等待默認(rèn)的60分鐘后SDProp自動(dòng)執(zhí)行,我們還可以用以下兩種方法來(lái)更快速的執(zhí)行SDProp
(1) 修改默認(rèn)時(shí)間
如果需要修改60min的執(zhí)行時(shí)間間隔,只需要在HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
中添加或修改AdminSDProtectFrequency
的值
該值的范圍是從60到7200,單位為秒,鍵類型為DWORD
可以直接使用命令行更改:
reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 600
如果需要恢復(fù)為默認(rèn)的60min,則可以在注冊(cè)表中刪除AdminSDProtectFrequency
這一項(xiàng)
(2) 手動(dòng)執(zhí)行
首先啟動(dòng)Ldp.exe,然后選擇菜單欄中“連接” ---> “連接”

輸入擁有PDC模擬器(PDCE)角色的DC的FQDN或IP:

選擇菜單欄菜單欄中“連接” ---> “綁定”

在綁定窗口中輸入有權(quán)修改rootDSE對(duì)象的用戶帳戶的憑據(jù),或者直接已當(dāng)前已登錄的用戶身份綁定

選擇菜單欄菜單欄中“瀏覽” ---> “修改”

在修改窗口這里針對(duì)不同版本的域控制器有不同的情況:
域控為Windows Server 2008: 將“DN”字段留空。在“編輯條目屬性”字段中,輸入FixUpInheritance,在“值”字段中,輸入Yes。單擊輸入填充條目列表
域控為Windows Server 2008 R2或Windows Server 2012: 將“DN”字段留空。在“編輯條目屬性”字段中,輸入RunProtectAdminGroupsTask,在“值”字段中,輸入1。單擊輸入填充條目列表

最后在“修改”對(duì)話框中點(diǎn)擊“運(yùn)行”即可
3. 添加特權(quán)
SDProp執(zhí)行后,這些受保護(hù)的用戶和組就被同步與AdminSDHolder一樣的ACL

現(xiàn)在我們已經(jīng)對(duì)這些特權(quán)組/用戶擁有FC權(quán)限了,以添加域管組成員為例:

該攻擊手法的核心點(diǎn)在于需要修改AdminSDHolder的ACL,因此我們只需要檢測(cè)對(duì)AdminSDHolder的ACL的修改行為即可,可以通過(guò)5136日志來(lái)監(jiān)控
