
Uno strumento per distribuire Shadow Credentials in un intero dominio nella speranza di abusare di DACL GenericWrite/GenericAll dimenticate da tempo su altri oggetti nel dominio.
Uno strumento per spruzzare Shadow Credentials su un intero dominio nella speranza di abusare di DACL GenericWrite/GenericAll dimenticate da tempo su altri oggetti nel dominio.
In molti impegni vedo (in BloodHound) che il gruppo "Everyone" / "Authenticated Users" / "Domain Users" o qualche altro gruppo ampio, che contiene quasi tutti gli utenti del dominio, ha alcune DACL GenericWrite/GenericAll su altri oggetti nel dominio.

Questi diritti possono essere abusati per aggiungere Shadow Credentials sull'oggetto target e ottenere il suo TGT e NT Hash.
Mi è venuto in mente che possiamo semplicemente provare a spruzzare shadow credentials su tutto il dominio e vedere cosa funziona (ovviamente questo approccio è più adatto a impegni non stealth, non usatelo in un red team dove è richiesta la furtività). Quando uno Shadow Credentials viene aggiunto con successo, facciamo semplicemente tutto il balletto PKINIT + UnPACTheHash e voilà - otteniamo gli NT Hash.
Poiché il processo è estremamente veloce, può essere usato proprio all'inizio dell'impegno, e si spera di avere alcuni utenti e computer compromessi prima ancora di iniziare.
Nota: Ho riciclato molto codice dal mio strumento precedente quindi AV/EDR potrebbero segnalarlo come KrbRelayUp...
Funziona più o meno così:
ShadowSpray supporta CTRL+C quindi se in qualsiasi momento desideri fermare l'esecuzione premi CTRL+C e ShadowSpray mostrerà gli NT Hash recuperati finora prima di uscire (come mostrato nella demo qui sotto).
__ __ __ __ __ __
/__` |__| /\ | \ / \ | | /__` |__) |__) /\ \ /
.__/ | | /~~\ |__/ \__/ |/\| .__/ | | \ /~~\ |
Usage: ShadowSpray.exe [-d FQDN] [-dc FQDN] [-u USERNAME] [-p PASSWORD] [-r] [-re] [-cp CERT_PASSWORD] [-ssl]
-r (--RestoreShadowCred) Ripristina l'attributo "msDS-KeyCredentialLink" dopo l'attacco. (Opzionale)
-re (--Recursive) Esegui l'attacco ShadowSpray ricorsivamente. (Opzionale)
-cp (--CertificatePassword) Password del certificato. (predefinito = password casuale)
General Options:
-u (--Username) Nome utente per l'autenticazione LDAP iniziale. (Opzionale)
-p (--Password) Password per l'autenticazione LDAP iniziale. (Opzionale)
-d (--Domain) FQDN del dominio. (Opzionale)
-dc (--DomainController) FQDN del controller di dominio. (Opzionale)
-ssl Usa LDAP su SSL. (Opzionale)
-y (--AutoY) Non chiedere conferma per avviare l'attacco ShadowSpray. (Opzionale)
Tratto dal post del blog di Elad Shamir su Shadow Credentials:
Se l'autenticazione PKINIT non è comune nell'ambiente o non è comune per l'account di destinazione, l'evento "Richiesto ticket di autenticazione Kerberos (TGT)" (4768) può indicare un comportamento anomalo quando gli attributi delle informazioni sul certificato non sono vuoti.
Se un SACL è configurato per controllare le modifiche agli oggetti di Active Directory per l'account di destinazione, l'evento "L'oggetto del servizio directory è stato modificato" (5136) può indicare un comportamento anomalo se il soggetto che modifica msDS-KeyCredentialLink non è l'account di sincronizzazione di Azure AD Connect o l'account del servizio ADFS, che tipicamente agiscono come Key Provisioning Server e modificano legittimamente questo attributo per gli utenti.
Un controllo preventivo più specifico è l'aggiunta di una voce di controllo di accesso (ACE) per NEGARE al principale EVERYONE la modifica dell'attributo msDS-KeyCredentialLink per qualsiasi account non destinato all'adesione all'autenticazione senza password Key Trust, e in particolare per gli account privilegiati.
Rilevare UnPACing e shadowed credentials di Henri Hambartsumyan di FalconForce
Rilevamenti specifici di ShadowSpray: