> For the complete documentation index, see [llms.txt](https://wiki.securiters.com/securiters-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.securiters.com/securiters-wiki/certificaciones/repaso-oscp/1.-enumeracion.md).

# 1. Enumeración

### 1.1. Enumeración automática

BloodHound - SharpHound.ps1

```powershell
Invoke-BloodHound -CollectionMethod All
Invoke-BloodHound -CollectionMethod All -ExcludeDC
```

### 1.2. Enumeración manual - PowerView

#### **1.2.1. Enumeración del dominio**

Dominio actual

```powershell
Get-Domain | select Name,Parent,Forest,DomainControllers | fl
Get-DomainSID
```

Políticas del dominio (Password Policy)

```powershell
(Get-DomainPolicyData).systemaccess
```

Domain controllers

```powershell
 Get-DomainController | select Name,OSversion,IPAddress |fl
```

#### 1.2.2. Users enum

Usuarios actuales del dominio

```powershell
Get-DomainUser | select name,logoncount,description,memberof,useraccountcontrol
```

Todos los datos de todos los usuarios

```powershell
 Get-DomainUser -Identity <USER> -Properties *
```

#### 1.2.3. Enumeración de los equipos&#x20;

Equipos del dominio

```powershell
Get-DomainComputer | select name,logoncount,descreption,operatingsystem
```

Servidores del dominio

```powershell
Get-DomainComputer –OperatingSystem "*Server*"
```

Equipos a los que se puede hacer ping

```powershell
Get-DomainComputer -Ping  | select name,logoncount,descreption,operatingsystem
```

#### 1.2.4. Enumeración de grupos&#x20;

Grupos del dominio&#x20;

```powershell
Get-DomainGroup | select Name
```

Grupos del dominio que contienen "Admin”

```powershell
 Get-DomainGroup *admin* | select name,Description
```

Miembros de los grupos del dominio&#x20;

```powershell
Get-DomainGroupMember -Identity "Domain Admins" | select MemberName,MemberObjectClass,MemberSID
```

Grupos locales de una máquina&#x20;

```powershell
Get-NetLocalGroup -ComputerName <HOST>
```

Miembros de un grupo local&#x20;

```powershell
Get-LocalGroupMember -Group Administrators
```

Miembros de equipos de otra máquina&#x20;

```powershell
Get-NetLocalGroupMember -ComputerName <HOST> -GroupName Administrators | select MemberName,IsGroup,IsDomain
```

#### 1.2.5. Usuarios autenticados

Usuarios locales autenticados&#x20;

```powershell
Get-NetLoggedon | select username
```

Usuarios locales autenticados en un equipo determinado

```powershell
Get-LoggedonLocal -ComputerName <HOST>
```

Último usuario autenticado en una máquina&#x20;

```powershell
Get-LastLoggedOn –ComputerName <HOST>
```

#### 1.2.6. Políticas de Grupo (GPO)

GPOs del dominio

```powershell
Get-DomainGPO | select displayname,name
```

GPOs de una máquina del dominio&#x20;

```powershell
/coGet-DomainGPO -ComputerIdentity <HOST> | select displayname,name
```

GPOs de un grupo de usuarios locales

```powershell
 Get-DomainGPOComputerLocalGroupMapping –ComputerIdentity
 Get-DomainGPOUserLocalGroupMapping -Identity <USER>
```

GPOs que aplican a una OU determinada

```powershell
Get-DomainGPO -Identity "{3E04167E-C2B6-4A9A-8FB7-C811158DC97C}"
```

#### 1.2.7. Unidades Organizativas (OU)

OUs actuales del dominio

```powershell
Get-DomainOU | select name,gplink
```

Equipos que afectan a una OU específica

```powershell
(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

```powershell
Get-DomainObjectAcl -SamAccountName <USER> –ResolveGUIDs
```

ACLs para un grupo del dominio&#x20;

```powershell
Get-DomainObjectAcl -SearchBase "LDAP://CN=Domain Admins,CN=Users,DC=example,DC=domain,DC=com" -ResolveGUIDs | select ObjectDN,AceType,ActiveDirectoryRights
```

ACLs interesantes

```powershell
Find-InterestingDomainAcl -ResolveGUIDs | select IdentityReferenceName,AceType,ActiveDirectoryRights -Unique
```

Rutas de ACLs

```powershell
Get-PathAcl -Path "\\\\<HOST>.<full.domain>\\sysvol"
```

#### 1.2.9. Relaciones de confianza (Trust)

Relaciones de confianza del dominio

```powershell
 Get-DomainTrust | select  SourceName,TrustAttributes,TargetName,TrustDirection
```

Forest actuales

```powershell
Get-Forest | select Name,SchemaRoleOwner,RootDomainSid | fl
```

Forest del dominio

```powershell
Get-ForestDomain | select Name,PdcRoleOwner
```

Catálogo de Forest Global&#x20;

```powershell
Get-ForestGlobalCatalog | select Forest,Domain,IPAddress,OSVersion,Name
```

Relaciones de confianza entre Forest&#x20;

```powershell
Get-ForestTrust
```

Relaciones de confianza entre Forest externos

```powershell
Get-ForestDomain | %{Get-DomainTrust -Domain $_.Name} | ?{$_.TrustAttributes -eq "FILTER_SIDS"}
```

Enumeración de relaciones de confianza externas

```powershell
Get-DomainTrust | ?{$_.TrustAttributes -eq "FILTER_SIDS"}
```

#### 1.2.10. Otros

Listado de todos los recursos compartidos

```powershell
Invoke-ShareFinder 
```

Listado de los recursos compartidos del dominio accesibles

```powershell
 Invoke-ShareFinder -CheckShareAccess
```

Enumeración de ficheros sensibles

```powershell
Invoke-FileFinder
```

Listar los servidores de ficheros del dominio&#x20;

```powershell
Get-NetFileServer
```

### 1.3. Enumeración del dominio avanzada

Acceso de Admin Local

```powershell
Find-LocalAdminAccess –Verbose
Find-WMILocalAdminAccess.ps1
Find-PSRemotingLocalAdminAccess.ps1
```

Password Hardening

{% code overflow="wrap" %}

```powershell
$FormatEnumerationLimit=-1;Get-DomainUser -LDAPFilter '(userPassword=*)' -Properties samaccountname,memberof,userPassword | % {Add-Member -InputObject $_ NoteProperty 'Password' "$([System.Text.Encoding]::ASCII.GetString($_.userPassword))" -PassThru} | fl
```

{% endcode %}

Kerberoasting

```powershell
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

```powershell
Get-DomainUser -PreauthNotRequired -Verbose
impacket-GetNPUsers -request -dc-ip IP <Full.Domain>/<USER>:<PASSWORD>

#ASREPRoast.ps1
Invoke-ASREPRoast -Verbose
```
