[w0lff4ng@site]: ~/cheat-sheets$ ./info
File: /home/w0lff4ng/cheat-sheets/enumeracion-dominio
Access: (0644/-rw-r--r--) Uid: (1000/w0lff4ng) Gid: (100/users)
Modify: 2026-10-21
[w0lff4ng@site]: ~/cheat-sheets$ cd enumeracion-dominio/█

Enumeración del dominio

techniqueenumeraciónwindows← índice
Éxito

Módulo ActiveDirectory (sin dependencias de RSAT): github.com/samratashok/ADModule.

Advertencia

Para reutilizar el módulo AD en sesiones futuras, dejar la DLL Microsoft.ActiveDirectory.Management.dll en C:\Windows\Microsoft.NET\assembly\GAC_64\Microsoft.ActiveDirectory.Management\ y el módulo ActiveDirectory.psd1 en C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ActiveDirectory\.

Tip

Permisos y tipos de objeto de AD interesantes para un atacante:

  • GenericAll: derechos completos sobre el objeto (agregar usuarios a un grupo o restablecer la contraseña).
  • GenericWrite: actualizar atributos del objeto (p. ej. el script de inicio de sesión).
  • WriteOwner: cambiar el propietario del objeto a un principal controlado para tomar control de él.
  • WriteDACL: modificar las ACEs del objeto y obtener control total sobre él.
  • AllExtendedRights: agregar usuarios a un grupo o restablecer contraseñas.
  • ForceChangePassword: cambiar la contraseña del usuario.
  • Self (Self-Membership): agregarse a un grupo.
Tip

Existen dos tipos de ACL:

  • DACL (Discretionary Access-Control List): define los permisos que un usuario o grupo tiene sobre un objeto.
  • SACL (System Access-Control List): registra los mensajes de auditoría de éxito y error al acceder a un objeto.

PowerView

Cargar el módulo:

. .\PowerView.ps1

Información del dominio:

Get-Domain

Enumeración de los usuarios:

Get-DomainUser -Properties samaccountname,serviceprincipalname,description,logonCount

Grupos del dominio:

Get-DomainGroup | select Name

Grupos del usuario actual:

Get-DomainGroup -UserName $env:username

Equipos del dominio:

Get-DomainComputer -Domain <DOMAIN> | select -ExpandProperty dnshostname

Sistemas operativos de los equipos:

Get-DomainComputer | select name, operatingsystem

Equipos con delegación sin restricciones (descartar los DC):

Get-DomainComputer -TrustedForDelegation
Get-DomainComputer -TrustedForDelegation | Select-Object Name, DistinguishedName, OperatingSystem

Controladores de dominio:

Get-DomainController | select name

Miembros del grupo Domain Admins (recursivo):

Get-DomainGroupMember -Identity "Domain Admins" -Recurse

Nombre y SID de los miembros de Domain Admins:

Get-DomainGroupMember -Identity "Domain Admins" -Recurse -Domain <DOMAIN> | select membername,membersid

Miembros del grupo Enterprise Admins:

Get-DomainGroupMember -Name "Enterprise Admins" -Domain <DOMAIN> | select membername,membersid

Recursos compartidos en el dominio actual:

Invoke-ShareFinder -Verbose

Archivos sensibles en hosts del dominio:

Invoke-FileFinder -Verbose

Fileservers del dominio:

Get-NetFileServer

Listar las OUs (nombre):

Get-DomainOU -Properties Name

Equipos dentro de una OU:

$OU = Get-DomainOU -Identity "<OU_NAME>" -Properties DistinguishedName
Get-DomainComputer -SearchBase $OU.DistinguishedName -Properties *

Nombres de las GPOs:

Get-DomainGPO | select displayname

GPOs aplicadas a un equipo:

Get-DomainGPO -ComputerName <SERVER_NAME>

GPO aplicada a una OU:

$string = (Get-DomainOU -Identity <OU_NAME>).gplink; $gpoIdentity = [regex]::Match($string, '({.*?})').Value; Get-DomainGPO -Identity $gpoIdentity

ACLs configuradas para Domain Admins:

Get-DomainObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs

Permisos de modificación del usuario actual:

Get-DomainObjectAcl -SamAccountName $env:username -ResolveGUIDs

ACEs con permiso GenericAll sobre un usuario:

Get-DomainObjectAcl -SamAccountName <USERNAME> -ResolveGUIDs | ? {$_.ActiveDirectoryRights -eq "GenericAll"}

ACLs interesantes asociadas a un grupo o usuario:

Find-InterestingDomainAcl -ResolveGUIDs | ?{$_.IdentityReference -match '<GROUP/USERNAME>'} | select ObjectDN,ActiveDirectoryRights,IdentityReferenceName

Usuarios con permisos de replicación (DCSync):

Get-DomainObjectAcl -SearchBase "DC=<CHILD_DOMAIN>,DC=<PARENT_DOMAIN>,DC=local" -SearchScope Base -ResolveGUIDs | ?{($_.ObjectAceType -match 'replication-get') -or ($_.ActiveDirectoryRights -match 'GenericAll')} | ForEach-Object {$_ | Add-Member NoteProperty 'IdentityName' $(Convert-SidToName $_.SecurityIdentifier);$_} | ?{$_.IdentityName -match "<USERNAME>"}

Módulo ActiveDirectory

Cargar el módulo (archivos en C:\Temp):

Set-Location C:\Temp
Import-Module .\Microsoft.ActiveDirectory.Management.dll
Import-Module .\ActiveDirectory.psd1

Información del dominio:

Get-ADDomain

Información básica de todos los usuarios:

Get-ADUser -Filter * -Properties * | Select-Object SamAccountName, UserPrincipalName, ServicePrincipalName, SID

Usuarios con “password” en la descripción de la cuenta:

Get-ADUser -Filter {Description -like "*password*"} -Properties * | Select-Object SamAccountName, Description

Usuarios con un SID conocido (RID 500):

Get-ADUser -Filter * | Where-Object {$_.SID -like "*-500"}

Grupos del dominio:

Get-ADGroup -Filter * | select Name

Grupos del usuario actual:

Get-ADPrincipalGroupMembership -Identity $env:username

Equipos y sus sistemas operativos:

Get-ADComputer -Filter * -Properties * | select name, operatingsystem

Equipos con delegación sin restricciones:

Get-ADComputer -Filter {TrustedForDelegation -eq $true}

Controladores de dominio:

Get-ADDomainController

Miembros del grupo Domain Admins (recursivo):

Get-ADGroupMember -Identity "Domain Admins" -Recursive

Listar las OUs:

Get-ADOrganizationalUnit -Filter * | Select-Object DistinguishedName, Name

Equipos dentro de una OU:

Get-ADComputer -Filter * -Properties * -SearchBase "ou=<OU_NAME>,dc=<CHILD_DOMAIN>,dc=<PARENT_DOMAIN>,dc=local" | Select-Object CanonicalName

Nombres de las GPOs:

Get-GPO -All | select displayname

Enlace de GPO aplicado a una OU:

(Get-ADOrganizationalUnit "ou=<OU_NAME>,dc=<PARENT_DOMAIN>,dc=local" -Properties *).gpLink

ACEs del dominio:

(Get-Acl (Get-ADObject -Filter *)).Access