DCSync saldırısı, Microsoft Windows Active Directory (AD) servisinde bulunan bir güvenlik açığından yararlanarak kimlik doğrulama verilerini almayı amaçlayan bir saldırı türüdür. Bu saldırı, yetkilendirilmemiş bir kullanıcının Active Directory’e depolanan parola verilerini çekmeye çalıştığı bir senaryoyu tanımlar.
DCSync saldırısı bir Administrator, Domain ya da Enterprise Admin yetkisiyle veya “DS-Replication-Get-Changes-All” yetkisi olması durumunda gerçekleştirilebilir.
DCSync saldırısı yapabilmek için sahip olunması gereken yetkiler:
- Domain Controller Replication Yetkileri: Saldırgan, Active Directory ortamında bulunan bir Domain Controller’a erişim sağlamalıdır. Bu genellikle bir yönetici hesabıyla veya Domain Controller’ların kullanıcı hesaplarının bulunduğu Organizational Unit’lara yazma yetkisi olan bir hesapla yapılabilir.
- Replication İzni: Saldırgan, nesnelerin replikasyon izinlerine sahip olmalıdır. Bu izinler, kullanıcının Domain Controller’lar arasında nesnelerin replikasyonunu başlatmasına izin verir.
- AdminSDHolder İzni: Bu izin, Active Directory’de kritik güvenlik gruplarına verilen bir erişim kontrolüdür. Eğer bir saldırgan bu izne sahipse, kullanıcı hesaplarının veya grupların parola hash değerlerini alabilir.
DCSync saldırısı sırasında, saldırganın elinde kısmi olarak yetki sahibi (genellikle bir ön saldırı sonucunda elde edilir) olduğu varsayılır. Bu yetki ile saldırgan, Active Directory ortamındaki nesne ve veri erişimine sahip olur.
DCSync Saldırısı Aşamaları:
- Hedef Tespiti ve Toplanan Bilgiler: Saldırgan, hedef sistemi belirler ve hedef hakkında gereken bilgileri toplar. Bu bilgiler, hedef domain adı, IP adresleri, kullanıcı hesapları gibi bilgileri içerebilir.
- Kötü Amaçlı Yazılımların Hazırlanması: Saldırgan, DCSync saldırısını gerçekleştirebilmek için gereken araçları (örneğin, Mimikatz veya Impacket) hazırlar veya temin eder.
- Hedef Sisteme Erişim: Saldırgan, hedef sisteme erişim sağlamak için farklı yöntemler kullanabilir. Bu yöntemler, exploitler, phishing, kötü amaçlı yazılım bulaştırma veya güçlü kimlik doğrulama bilgileri kullanma gibi olabilir.
- DCSync Komutunun Çalıştırılması: Kötü amaçlı araçları kullanarak saldırgan, hedef sistemdeki DCSync komutunu çalıştırarak Active Directory’den kullanıcı hesaplarının parola karmalarını çalmayı amaçlar.
- Parola Hashlerin Elde Edilmesi: DCSync komutu sonucunda, Active Directory’deki kullanıcı hesaplarının parola hash değerlerinin saldırganın kontrolündeki sistemde saklanır.
Dcsync with Mimikatz
Mimikatz aracı ile Dcsync atağı yapılabilmesi için yetkili bir hesap gerekmektedir. Domain Admin yetkisine sahip kullanıcı ile mimikatz aracında lsadump:: /user:<username>
komutu ile DCSync saldırısı yapılabilir.
# Domain adının cybershieldcommunity.com olduğunu varsayılmıştır
# Domain controller'daki tüm hash'leri toplar
lsadump::dcsync /dc:dc001.cybershieldcommunity.com /domain:cybershieldcommunity.com /all /csv
# PowerShell Invoke-Mimikatz
**Invoke-Mimikatz '**lsadump::dcsync /dc:dc001.cybershieldcommunity.com /domain:cybershieldcommunity.com /all /csv'
Dcsync with Impacket
Impacket aracı ile uzak bir makine üzerinde Dcsync atağı yapılabilir, atak için“Replicating Directory Changes All” yetkisine sahip bir aktif dizin kullanıcısının parolasının ele geçirilmesi gerekmektedir.
# Domain adının onuratali.org olduğunu varsayılmıştır
# Parola Doğrulama
secretsdump.py -outputfile 'dcsyncoutput.txt' 'cybershieldcommunity.com/username:userpassword@dc-ip-address'
# Pass the hash
secretsdump.py -outputfile 'dcsyncoutput.txt' -hashes 'lm-hash':'nt-hash' 'cybershieldcommunity.com/username@dc-ip-address'
# Pass the ticket
python getTGT.py -dc-ip domain-controller-ip -hashes lm-hash:nt-hash 'dcsyncoutput/username'
export KRB5CCNAME='username.ccache'
secretsdump.py -k -outputfile 'out' 'dcsyncoutput/username@dc-fqdn'
Prevention
- Aktif dizin kurumlarında varsayılan olarak çeşitli gruplara DCSync yetkisi verilmektedir, bu gruplar Domain Controllers,Enterprise Admins, Domain Admins ve Administrators olarak tanımlanmaktadır.
- Aktif dizin ortamında DCSync için yetkiye (“Replicating Directory Changes All”) sahip olan hesapları bulmak için aşağıdaki komut kullanılabilir. Bu komut çıktısına göre yetki sahibi hesaplar incelenmeli ve gerekli değilse yetkileri kaldırılmalıdır.
dsacls "" | Select-String "Replicating Directory Changes All"
- Aktif dizin ortamında DCSync için yetkiye (“Replicating Directory Changes All”) sahip olan hesapları bulmak için aşağıdaki komut kullanılabilir. Bu komut çıktısına göre yetki sahibi hesaplar incelenmeli ve gerekli değilse yetkileri kaldırılmalıdır.
Detection
Domain içindeki tüm DCSync faaliyetleri, Olay Kimliği (Event ID) 4622 Bir nesne üzerinde bir işlem yapılması ile tespit edilebilir. Bu olaylar sayesinde başarılı ve başarısız DCSync faaliyetleri izlenebilir. DCSync faaliyetlerini filtrelemek için aktif dizin sunucuları üzerinde 4662 numaralı olay kaydında özellikler bölümünde 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 (DS-Replication-Get-Changes-All) kimliğini içeren olaylar filtrelemelidir. Aşağıdaki sigma kuralı ile SIEM üzerinde olay günlüklerinde olası bir DCSync faaliyetini tespit edebilirsiniz.
author: Onur Atali
tags:
- attack.credential_access
- attack.t1003.006
logsource:
product: windows
service: security
detection:
selection:
EventID: 4662
Properties|contains:
- 'Replicating Directory Changes All'
- '1131f6ad-9c07-11d1-f79f-00c04fc2dcd2'
filter1:
SubjectUserName|startswith:
- 'NT AUT'
- 'MSOL_'
filter2:
SubjectUserName|endswith: '$'
condition: selection and not 1 of filter*
Powershell Hunting
Aktif dizin sistemlerinde Powershell aracılığıyla aşağıdaki komut ile 4662 olay günlüğü denetlenebilir ve olası bir DCSync atağına dair iz kaydı aranabilir.
$Events = get-eventlog -LogName security | where {$_.EventId -eq 4662 -and $_.Message -like "*1131f6aa-9c07-11d1-f79f-00c04fc2dcd2*" -and $_.Message -like "*19195a5b-6da0-11d0-afd3-00c04fd930c9*" -and $_.Message -like "*128d83d7-1a6e-4e6d-936a-21579652d757*" -and $_.Message -like "*Object Server:*DS*" };foreach($event in $Events){$Account=$event.ReplacementStrings[1];if($Account -notmatch '\\$$'){write-host "CRITICAL Alert: Possible DCSync Event.",$event.TimeGenerated,$event.MachineName,$event.EventId,$Account}}
Referanslar: