
Herramientas de explotación de MachineAccountQuota y DNS en PowerShell

La configuración predeterminada del atributo ms-DS-MachineAccountQuota de Active Directory permite que todos los usuarios del dominio agreguen hasta 10 cuentas de máquina a un dominio. Powermad incluye un conjunto de funciones para explotar ms-DS-MachineAccountQuota sin adjuntar un sistema real a AD.
Esta función puede devolver valores poblados en un atributo de cuenta de máquina.
Get-MachineAccountAttribute -MachineAccount test -Attribute discriptionEsta función aprovecha la propiedad ms-DS-CreatorSID en las cuentas de máquina para devolver una lista de nombres de usuario o SIDs y la cuenta de máquina asociada. La propiedad ms-DS-CreatorSID solo se completa cuando un usuario no privilegiado crea una cuenta de máquina.
Get-MachineAccountCreatorEsta función puede deshabilitar una cuenta de máquina que se agregó mediante New-MachineAccount. Esta función debe usarse con el mismo usuario que creó la cuenta de máquina.
Disable-MachineAccount -MachineAccount testEsta función puede habilitar una cuenta de máquina que fue deshabilitada mediante Disable-MachineAccount. Esta función debe usarse con el mismo usuario que creó la cuenta de máquina.
Enable-MachineAccount -MachineAccount testEsta función puede agregar una nueva cuenta de máquina directamente a través de una solicitud de agregado LDAP a un controlador de dominio y no afectando el estado de conexión del sistema host a Active Directory.
La solicitud de agregado LDAP está modelada según la solicitud de agregado utilizada al unir un sistema a un dominio. Se establecen los siguientes atributos (mayormente validados por el DC):
Una nueva cuenta de máquina puede usarse para tareas como aprovechar el privilegio otorgado al grupo 'Domain Computers' o como una cuenta adicional para enumeración del dominio, exploits de DNS, etc. Por defecto, las cuentas de máquina no tienen permiso de inicio de sesión local. Puede usar herramientas/clientes que acepten credenciales de red directamente o mediante el uso de 'runas /netonly' o Invoke-UserImpersonation/Invoke-RevertToSelf de @harmj0y incluido con PowerView.
Las cuentas de máquina creadas con usuarios estándar tendrán el atributo mS-DS-CreatorSID poblado con el SID del usuario estándar.
Tenga en cuenta que ms-DS-MachineAccountQuota no proporciona la capacidad a los usuarios autenticados de eliminar las cuentas de máquina agregadas de AD. Se necesitarán privilegios elevados para eliminar la cuenta si desea evitar pasar la tarea a su cliente.
Agregar una nueva cuenta de máquina
New-MachineAccount -MachineAccount test
Usar la cuenta agregada con runas /netonly
runas /netonly /user:domain\test$ powershell
Esta función elimina una cuenta de máquina con una cuenta privilegiada.
Remove-MachineAccount -MachineAccount test -Credential $domainadminEsta función puede poblar algunos atributos para una cuenta que se agregó mediante New-MachineAccount, si un usuario tiene acceso de escritura. Esta función debe usarse con el mismo usuario que creó la cuenta de máquina.
Aquí hay una lista de algunos de los atributos habituales con acceso de escritura habilitado:
Eliminar el '$' al final del atributo SamAccountName
Set-MachineAccountAttribute -MachineName test -Attribute SamAccountName -Value test
Usar la cuenta modificada con runas /netonly
runas /netonly /user:domain\test powershell
Esta función aprovecha New-MachineAccount para crear recursivamente tantas cuentas de máquina como sea posible desde una sola cuenta no privilegiada a través de MachineAccountQuota. Consulte la siguiente entrada de blog para más detalles:
Por defecto, los usuarios autenticados tienen el permiso 'Crear todos los objetos secundarios' en la zona DNS integrada en Active Directory (ADIDNS). La mayoría de los registros que no existen actualmente en una zona de AD pueden agregarse/eliminarse.
Esta función puede usarse para agregar/eliminar registros DNS dinámicos si la configuración predeterminada de actualizaciones dinámicas seguras habilitadas está configurada en un controlador de dominio. Actualmente se admiten registros A, AAAA, CNAME, MX, PTR, SRV y TXT. Invoke-DNSUpdate está modelado según la herramienta nsupdate de BIND cuando se usan las opciones '-g' o 'gsstsig'.
Agregar un registro A
Invoke-DNSUpdate -DNSType A -DNSName www -DNSData 192.168.100.125
Eliminar un registro A
Invoke-DNSUpdate -DNSType A -DNSName www.test.local
Agregar un registro SRV
Invoke-DNSUpdate -DNSType SRV -DNSName _autodiscover._tcp.test.local -DNSData system.test.local -DNSPriority 100 -DNSWeight 80 -DNSPort 443
Esta función puede marcar como eliminado (tombstone) un nodo ADIDNS.
Esta función puede convertir un nodo marcado como eliminado de nuevo en un registro válido.
Enable-ADIDNSNode -Node *Esta función puede devolver valores poblados en un atributo de nodo DNS.
Get-ADIDNSNodeAttribute -Node test -Attribute dnsRecordEsta función puede devolver el propietario de un nodo ADIDNS.
Get-ADIDNSNodeOwner -Node testEsta función obtiene una DACL de un nodo o zona ADIDNS.
Obtener la DACL para la zona predeterminada integrada en Active Directory desde un sistema unido al dominio.
Get-ADIDNSPermission
Obtener la DACL para un nodo DNS llamado test desde un sistema unido al dominio.
Get-ADIDNSPermission -Node test
Esta función puede devolver zonas ADIDNS.
Get-ADIDNSZoneEsta función agrega una ACE a una DACL de nodo o zona DNS.
Grant-ADIDNSPermission -Node * -Principal "authenticated users"Esta función agrega un nodo DNS a una zona DNS integrada en Active Directory (ADIDNS) mediante una solicitud de agregado LDAP cifrada.
New-ADIDNSNode -Node * -TombstoneEsta función crea una matriz de bytes válida para el atributo dnsRecord.
New-DNSRecordArray -Data 192.168.0.1Esta función obtiene el número de serie SOA actual para una zona DNS y lo incrementa en la cantidad establecida.
New-SOASerialNumberArrayEsta función puede renombrar un nodo DNS.
Rename-ADIDNSNode -Node test -NodeNew test2Esta función puede eliminar un nodo DNS.
Remove-ADIDNSNode -Node *Esta función elimina una ACE de una DACL de nodo o zona DNS.
Revoke-ADIDNSPermission -Node * -Principal user1 -Access GenericAllEsta función puede añadir, poblar o sobrescribir valores en un atributo de nodo DNS.
Set-ADIDNSNodeAttribute -Node test -Attribute description -Value "do not delete"Esta función puede establecer el propietario de un nodo DNS. Tenga en cuenta que se requiere un token con SeRestorePrivilege.
Set-ADIDNSNodeOwner -Node test -Principal user1Esta función puede generar claves Kerberos AES de 256 y 128 bits a partir de un nombre de usuario y contraseña conocidos. Esto puede usarse para probar pass-the-hash en invoke-DNSUpdate.
Get-KerberosAESKey -Salt TEST.LOCALuser