
Outils PowerShell d'exploitation de MachineAccountQuota et DNS

Le paramètre par défaut ms-DS-MachineAccountQuota d'Active Directory permet à tous les utilisateurs du domaine d'ajouter jusqu'à 10 comptes machine à un domaine. Powermad inclut un ensemble de fonctions pour exploiter ms-DS-MachineAccountQuota sans attacher un système réel à AD.
Cette fonction peut retourner les valeurs renseignées dans un attribut de compte machine.
Get-MachineAccountAttribute -MachineAccount test -Attribute discriptionCette fonction utilise la propriété ms-DS-CreatorSID des comptes machine pour retourner une liste de noms d'utilisateurs ou de SIDs ainsi que le compte machine associé. La propriété ms-DS-CreatorSID n'est renseignée que lorsqu'un compte machine est créé par un utilisateur non privilégié.
Get-MachineAccountCreatorCette fonction peut désactiver un compte machine ajouté via New-MachineAccount. Cette fonction doit être utilisée avec le même utilisateur qui a créé le compte machine.
Disable-MachineAccount -MachineAccount testCette fonction peut activer un compte machine qui a été désactivé via Disable-MachineAccount. Cette fonction doit être utilisée avec le même utilisateur qui a créé le compte machine.
Enable-MachineAccount -MachineAccount testCette fonction peut ajouter un nouveau compte machine directement via une requête d'ajout LDAP vers un contrôleur de domaine, sans impacter l'état de rattachement du système hôte à Active Directory.
La requête d'ajout LDAP est calquée sur celle utilisée lors de l'adhésion d'un système à un domaine. Les attributs suivants (principalement validés par le DC) sont définis :
Un nouveau compte machine peut être utilisé pour des tâches telles que l'exploitation des privilèges accordés au groupe « Domain Computers » ou comme compte supplémentaire pour l'énumération du domaine, les exploits DNS, etc. Par défaut, les comptes machine n'ont pas la permission d'ouverture de session locale. Vous pouvez soit utiliser des outils/clients qui acceptent directement des identifiants réseau, soit utiliser 'runas /netonly' ou Invoke-UserImpersonation/Invoke-RevertToSelf de @harmj0y inclus dans PowerView.
Les comptes machine créés avec des utilisateurs standard auront l'attribut mS-DS-CreatorSID renseigné avec le SID de l'utilisateur standard.
Notez que ms-DS-MachineAccountQuota ne permet pas aux utilisateurs authentifiés de supprimer les comptes machine ajoutés d'AD. Il faudra obtenir des privilèges élevés pour supprimer le compte si vous souhaitez éviter de passer la tâche à votre client.
Ajouter un nouveau compte machine
New-MachineAccount -MachineAccount test
Utiliser le compte ajouté avec runas /netonly
runas /netonly /user:domain\test$ powershell
Cette fonction supprime un compte machine avec un compte privilégié.
Remove-MachineAccount -MachineAccount test -Credential $domainadminCette fonction peut renseigner certains attributs pour un compte ajouté via New-MachineAccount, si un utilisateur dispose d'un accès en écriture. Cette fonction doit être utilisée avec le même utilisateur qui a créé le compte machine.
Voici une liste de certains attributs pour lesquels l'accès en écriture est généralement activé :
Supprimer le '$' final de l'attribut SamAccountName
Set-MachineAccountAttribute -MachineName test -Attribute SamAccountName -Value test
Utiliser le compte modifié avec runas /netonly
runas /netonly /user:domain\test powershell
Cette fonction utilise New-MachineAccount pour créer récursivement autant de comptes machine que possible à partir d'un seul compte non privilégié via MachineAccountQuota. Voir l'article de blog suivant pour les détails :
Par défaut, les utilisateurs authentifiés disposent de l'autorisation « Créer tous les objets enfants » sur la zone DNS intégrée à Active Directory (ADIDNS). La plupart des enregistrements qui n'existent pas actuellement dans une zone AD peuvent être ajoutés/supprimés.
Cette fonction peut être utilisée pour ajouter/supprimer des enregistrements DNS dynamiques si le paramètre par défaut de mises à jour dynamiques sécurisées activées est configuré sur un contrôleur de domaine. Les enregistrements A, AAAA, CNAME, MX, PTR, SRV et TXT sont actuellement pris en charge. Invoke-DNSUpdate est calquée sur l'outil nsupdate de BIND lorsqu'il utilise les options '-g' ou 'gsstsig'.
Ajouter un enregistrement A
Invoke-DNSUpdate -DNSType A -DNSName www -DNSData 192.168.100.125
Supprimer un enregistrement A
Invoke-DNSUpdate -DNSType A -DNSName www.test.local
Ajouter un enregistrement SRV
Invoke-DNSUpdate -DNSType SRV -DNSName _autodiscover._tcp.test.local -DNSData system.test.local -DNSPriority 100 -DNSWeight 80 -DNSPort 443
Cette fonction peut mettre en état de « tombstone » un nœud ADIDNS.
Cette fonction peut transformer un nœud tombstoné en un enregistrement valide.
Enable-ADIDNSNode -Node *Cette fonction peut retourner les valeurs renseignées dans un attribut de nœud DNS.
Get-ADIDNSNodeAttribute -Node test -Attribute dnsRecordCette fonction peut retourner le propriétaire d'un nœud ADIDNS.
Get-ADIDNSNodeOwner -Node testCette fonction obtient une DACL d'un nœud ou d'une zone ADIDNS.