사실 DCSync는 BloodHound에서 표시해주는 용어로 DACL은 아니지만, 편의상 DACL 카테고리로 분류했다.
DCSync?
- AD 환경에는 Domain Controller 간의 데이터 동기화를 위한 과정인 Replication이 존재한다.
- Replication에 사용되는 특별한 권한들이 있는데, 이를 이용하면 NTDS.dit 데이터를 추출할 수 있다.
- 이 특별한 권한들을 통틀어서 BloodHound에서 DCSync라는 Edge로 표시해준다.
⇒ Domain에 대한 DCSync Edge가 있다면 NTDS.dit을 추출할 수 있다.
Replication?
- 여러 Domain Controller로 구성된 AD 환경의 경우, 각 DC 간의 데이터 동기화를 위해 Replication을 수행해야한다.
- 이 때 사용되는 프로토콜은 MS-DRSR이며 DRSUAPI RPC 서비스를 통해 수행된다고 한다.
- 적절한 권한을 가지고 있다면, 공격자는 이 Replication 동작을 모방해, 다른 DC에게 NTDS.dit 데이터를 요청해 NT Hash들을 추출할 수 있다.
- Replication은 AD 환경에서 필수적인 기능이기 때문에 비활성화할 수는 없다.
Privilege
- DCSync는 아래 권한들이 DACL에 모두 포함된 경우 BloodHound가 표시해주는 Edge 명칭이다.
- DS-Replication-Get-Changes (DS-Replication-Get-Changes)
- Replicating Directory Changes All (DS-Replication-Get-Changes-All)
- ⇒ 이 두 권한이 있으면 MS-DRSR의 GetNCCChanges를 성공적으로 호출해 Secret Attribute을 얻을 수 있다고 한다.
여기서 Secret Attribute가 바로 NTDS로 추정된다.
- Replicating Directory Changes In Filtered Set (DS-Replication-Get-Changes-In-Filtered-Set)
⇒ BloodHound docs에는 이 권한이 DCSync Edge의 조건으론 나와있지 않는다.
LAPS와 같이 추가적인(위 두 권한으론 얻을 수 없는) 속성을 가져오기 위해서 필요한 권한인 것 같다.
- Administrators, Domains Admin, Domain Controller에는 기본적으로 위 세 권한이 부여되어 있다.
(test3는 직접 만든 테스트용 계정이니 무시)
Exploit
Required
- DCSync (BloodHound Edge)
⇒ DS-Replication-Get-Changes, DS-Replication-Get-Changes-All 권한 - DS-Replication-Get-Changes-All
Linux
# crackmapexec
$ crackmapexec smb [ip] -u [username] -p [password] --ntds
# impacket-secretdump
$ impacket-secretsdump [username]:[password]@[ip]
Windows
# mimikatz
mimikatz # lsadump::dcsync /domain:[domain] /user:[NT Hash를 추출할 유저]
Reference
https://simondotsh.com/infosec/2022/07/11/dirsync.html
https://bloodhound.readthedocs.io/en/latest/data-analysis/edges.html#dcsync
https://blog.harmj0y.net/redteaming/mimikatz-and-dcsync-and-extrasids-oh-my/
https://book.hacktricks.xyz/v/kr/windows-hardening/active-directory-methodology/dcsync
https://learn.microsoft.com/ko-kr/windows/win32/adschema/r-ds-replication-get-changes
https://www.레드팀.com/credential-access/dcsync
https://wiki.samba.org/index.php/DRSUAPI
https://adsecurity.org/?p=1729
'Red Teaming > Active Directory' 카테고리의 다른 글
[ETC] KRB_AP_ERR_SKEW(Clock skew too great) (0) | 2024.10.07 |
---|---|
[ETC] Powershell로 DACL을 부여하는 방법 (0) | 2024.06.16 |