Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/kevin-robertson/powermad
Escalade de PrivilègesReconnaissanceGestion des IdentitésMouvement LatéralTests d'IntrusionAuthentificationRed Teaming
GitHubkevin-robertson/powermad

Powermad

Outils PowerShell d'exploitation de MachineAccountQuota et DNS

Voir le dépôt
1.5k1886il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Powermad_logo

Outils PowerShell pour l'exploitation de MachineAccountQuota et DNS

Wiki

  • https://github.com/Kevin-Robertson/Powermad/wiki

Article de blog

  • Au-delà du spoofing LLMNR/NBNS - Exploitation du DNS intégré à Active Directory

Fonctions

  • Fonctions MachineAccountQuota
  • Fonctions DNS
  • Fonctions de mises à jour dynamiques
  • Fonctions ADIDNS
  • Fonctions diverses

Fonctions MachineAccountQuota

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.

Get-MachineAccountAttribute

Cette fonction peut retourner les valeurs renseignées dans un attribut de compte machine.

Exemple :
  • Obtenir la valeur de 'description' d'un compte machine nommé 'test'.
    Get-MachineAccountAttribute -MachineAccount test -Attribute discription

Get-MachineAccountCreator

Cette 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é.

Exemple :
  • Obtenir une liste de tous les attributs ms-DS-CreatorSID renseignés.
    Get-MachineAccountCreator

Disable-MachineAccount

Cette 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.

Exemple :
  • Désactiver un compte machine nommé test.
    Disable-MachineAccount -MachineAccount test

Enable-MachineAccount

Cette 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.

Exemple :
  • Activer un compte machine nommé test.
    Enable-MachineAccount -MachineAccount test

New-MachineAccount

Cette 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 :

  • objectClass = Computer
  • SamAccountName = Nom du compte machine avec le $ final
  • userAccountControl = 4096
  • DnsHostName = FQDN
  • ServicePrincipalName = 2 SPN HOST et 2 SPN RestrictedKrbHost utilisant à la fois le FQDN et le nom du compte
  • unicodePwd = le mot de passe spécifié

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.

  • https://github.com/PowerShellMafia/PowerSploit/tree/dev/Recon

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.

Exemples :
  • Ajouter un nouveau compte machine
    New-MachineAccount -MachineAccount test

  • Utiliser le compte ajouté avec runas /netonly
    runas /netonly /user:domain\test$ powershell

Remove-MachineAccount

Cette fonction supprime un compte machine avec un compte privilégié.

Exemple :
  • Supprimer un compte machine nommé test avec les identifiants d'un administrateur de domaine
    Remove-MachineAccount -MachineAccount test -Credential $domainadmin

Set-MachineAccountAttribute

Cette 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é :

  • AccountDisabled
  • description
  • displayName
  • DnsHostName
  • ServicePrincipalName
  • userParameters
  • userAccountControl
  • msDS-AdditionalDnsHostName
  • msDS-AllowedToActOnBehalfOfOtherIdentity
  • SamAccountName
Exemples :
  • 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

Invoke-AgentSmith

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 :

  • https://blog.netspi.com/machineaccountquota-transitive-quota

Fonctions DNS

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.

Fonctions de mises à jour dynamiques

Invoke-DNSUpdate

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'.

Exemples :
  • 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

Fonctions ADIDNS

Disable-ADIDNSNode

Cette fonction peut mettre en état de « tombstone » un nœud ADIDNS.

Exemple :
  • Mettre en tombstone un enregistrement wildcard.
    `Disable-ADIDNSNode -Node *

Enable-ADIDNSNode

Cette fonction peut transformer un nœud tombstoné en un enregistrement valide.

Exemple :
  • Activer un enregistrement wildcard.
    Enable-ADIDNSNode -Node *

Get-ADIDNSNodeAttribute

Cette fonction peut retourner les valeurs renseignées dans un attribut de nœud DNS.

Exemple :
  • Obtenir la valeur renseignée de l'attribut dnsRecord d'un nœud nommé test.
    Get-ADIDNSNodeAttribute -Node test -Attribute dnsRecord

Get-ADIDNSNodeOwner

Cette fonction peut retourner le propriétaire d'un nœud ADIDNS.

Exemple :
  • Obtenir le propriétaire d'un nœud nommé test. Get-ADIDNSNodeOwner -Node test

Get-ADIDNSPermission

Cette fonction obtient une DACL d'un nœud ou d'une zone ADIDNS.

Exemples :
  • Obtenir la DACL de la zone Active Directory-Integrated par défaut depuis un système attaché au domaine.
    Get-ADIDNSPermission

  • Obtenir la DACL d'un nœud DNS nommé test depuis un système attaché au domaine.
    Get-ADIDNSPermission -Node test

Get-ADIDNSZone

Cette fonction peut retourner les zones ADIDNS.

Exemples :
  • Obtenir toutes les zones ADIDNS.
    Get-ADIDNSZone

Grant-ADIDNSPermission

Cette fonction ajoute une ACE à la DACL d'un nœud ou d'une zone DNS.

Exemple :
  • Ajouter un accès complet à un enregistrement wildcard pour « Utilisateurs authentifiés ».
  • Ajouter un accès complet à un enregistrement wildcard pour « Utilisateurs authentifiés ».
    Grant-ADIDNSPermission -Node * -Principal "authenticated users"

New-ADIDNSNode

Cette fonction ajoute un nœud DNS à une zone DNS intégrée à Active Directory (ADIDNS) via une requête d'ajout LDAP cryptée.

Exemple :
  • Ajouter un enregistrement wildcard à une zone ADIDNS et mettre le nœud en tombstone.
    New-ADIDNSNode -Node * -Tombstone

New-DNSRecordArray

Cette fonction crée un tableau d'octets valide pour l'attribut dnsRecord.

Exemple :
  • Créer un tableau dnsRecord pour un enregistrement A pointant vers 192.168.0.1.
    New-DNSRecordArray -Data 192.168.0.1

New-SOASerialNumberArray

Cette fonction obtient le numéro de série SOA actuel d'une zone DNS et l'incrémente de la valeur définie.

Exemple :
  • Générer un tableau d'octets à partir du numéro de série SOA actuel incrémenté de un.
    New-SOASerialNumberArray

Rename-ADIDNSNode

Cette fonction peut renommer un nœud DNS.

Exemple :
  • Renommer un nœud DNS nommé test en test2.
    Rename-ADIDNSNode -Node test -NodeNew test2

Remove-ADIDNSNode

Cette fonction peut supprimer un nœud DNS.

Exemple :
  • Supprimer un nœud wildcard.
    Remove-ADIDNSNode -Node *

Revoke-ADIDNSPermission

Cette fonction supprime une ACE de la DACL d'un nœud ou d'une zone DNS.

Exemple :
  • Supprimer l'ACE GenericAll associée au compte user1.
    Revoke-ADIDNSPermission -Node * -Principal user1 -Access GenericAll

Set-ADIDNSNodeAttribute

Cette fonction peut ajouter, renseigner ou écraser des valeurs dans un attribut de nœud DNS.

Exemple :
  • Définir l'attribut description inscriptible sur un nœud nommé test.
    Set-ADIDNSNodeAttribute -Node test -Attribute description -Value "ne pas supprimer"

Set-ADIDNSNodeOwner

Cette fonction peut définir le propriétaire d'un nœud DNS. Notez qu'un jeton avec le privilège SeRestorePrivilege est requis.

Exemple :
  • Définir le propriétaire d'un nœud nommé test sur user1.
    Set-ADIDNSNodeOwner -Node test -Principal user1

Fonctions diverses

Get-KerberosAESKey

Cette fonction peut générer des clés Kerberos AES 256 et 128 à partir d'un nom d'utilisateur et d'un mot de passe connus. Cela peut être utilisé pour tester le pass-the-hash dans invoke-DNSUpdate.

Exemple :
  • Générer des clés pour un utilisateur AD valide nommé [email protected].
    Get-KerberosAESKey -Salt TEST.LOCALuser
Télécharger l’outil