# Enumeración de usuarios, grupos y computadoras

## Linux/Unix

### CrackMapExec

Enumeración de usuarios.

```shell
crackmapexec smb <IP-address-DC> -u <user> -p <password> --users
```

Enumeración de grupos.

```shell
crackmapexec smb <IP-address-DC> -u <user> -p <password> --groups
```

Enumeración de usuarios conectados.

```shell
crackmapexec smb <IP-address-DC> -u <user> -p <password> --loggedon-users
```

### LDAPDomainDump

```shell
mkdir ldapdomaindump
ldapdomaindump <IP-address-DC> -u "<ACME.LOCAL>/<user>" -p "<password>" --no-json --no-grep -o ldapdomaindump
```

### rpcclient <a href="#rpcclient" id="rpcclient"></a>

```shell
rpcclient -U <user>%<password> <IP-address-DC>

# Consultar información del dominio
querydominfo
# Consultar información de visualización del dominio
querydispinfo
# Obtener información de política de contraseñas del dominio
getdompwinfo
# Enumerar usuarios
enumdomusers
# Enumerar grupos
enumdomgroups
# Obtener información de un usuario
queryuser <rid-user>
# Obtener información de un grupo
querygroup <rid-group>
# Obtener grupos de un usuario
queryusergroups <rid-user>
# Obtener miembros de un grupo
querygroupmem <rid-group>
```

### windapsearch

Enumerar miembros del grupo "domain admins".

```shell
windapsearch.py --dc-ip <IP-address-DC> -u <user>@<ACME.LOCAL> -p <password> --da
```

Buscar usuarios privilegiados.

```shell
windapsearch.py --dc-ip <IP-address-DC> -u <user>@<ACME.LOCAL> -p <password> --PU
```

## Windows

### Comandos nativos

Enumeración de usuarios.

```powershell
# Enumeración de usuarios
net user /domain
dsquery user
# Obtener información de un usuario
net user "<user-name>" /domain
```

Enumeración de grupos.

```powershell
# Enumeración de grupos
net group /domain
dsquery group
# Obtener miembros de un grupo
net group "<group-name>" /domain
net group "Domain Admins" /domain
```

### Módulo ActiveDirectory PowerShell

Enumeración de usuarios.

```powershell
# Enumeración de usuarios del dominio actual
Get-ADUser -Filter *
Get-ADUser -Filter * | Select SamAccountName, Name
Get-ADUser -Filter * | Select-Object -ExpandProperty SamAccountName > users.txt
# Obtener usuarios de un dominio
Get-DomainUser -Domain <ACME.LOCAL> | Select SamAccountName
# Obtener información de un usuario
Get-ADUser -Identity "<user-name>"
# Obtener fecha y hora en que se cambió por última vez la contraseña de cada usuario
Get-ADUser -Filter * -Properties * | select name,@{expression={[datetime]::fromFileTime($_.pwdlastset)}}
# Obtener cuentas con Service Principal Name (SPN)
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName
```

Enumeración de grupos.

```powershell
# Enumeración de grupos
Get-ADGroup -Filter *
Get-ADGroup -Filter * | Select Name
# Obtener todos los grupos que contengan la palabra "admin" en el nombre del grupo
Get-ADGroup -Filter 'Name -like "*admin*"' | Select Name
# Obtener información de un grupo
Get-ADGroup -Identity "<group-name>"
# Obtener miembros de un grupo
Get-ADGroupMember -Identity "<group-name>"
Get-ADGroupMember -Identity "Domain Admins"
```

Enumeración de computadoras.

```powershell
# Enumeración de computadoras
Get-ADComputer -Filter * | Select Name
Get-ADComputer -Filter * -Properties *
# Filtro de computadoras por sistema operativo
Get-ADComputer -Filter 'OperatingSystem -like "*<operating-system>*"' -Properties OperatingSystem | Select Name, OperatingSystem
# Obtención de computadoras activos 
Get-ADComputer -Filter * -Properties DNSHostName | %{Test-Connection -Count 1 -ComputerName $_.DNSHostName}
```

### PowerView

Enumeración de usuarios.

```powershell
# Enumeración de usuarios
Get-DomainUser
Get-DomainUser | Select SamAccountName, LastLogonTimestamp | Sort-Object SamAccountName
Get-DomainUser | Select -ExpandProperty SamAccountName | Out-File -FilePath .\domain-users.txt
# Obtener información de un usuario
Get-DomainUser -Identity "<user-name>"
Get-DomainUser -Identity "<user-name>" | Select SamAccountName, ObjectsId, MemberOf, UserAccountControl | fl
# Obtener fecha y hora en que se cambió por última vez la contraseña de cada usuario
Get-DomainUser | Select SamAccountName, PWDLastSet | Sort-Object PWDLastSet
# Obtener cantidad de veces que el usuario intentó iniciar sesión con una contraseña incorrecta
Get-DomainUser | Select SamAccountName, BadPWDCount | Sort-Object BadPWDCount -Descending
# Obtener el número de veces que cada cuenta ha iniciado sesión correctamente
Get-DomainUser | Select SamAccountName, LogonCount | Sort-Object LogonCount -Descending
# Obtener cuentas con Service Principal Name (SPN)
Get-DomainUser -SPN -Properties SamAccountName, ServicePrincipalName
```

Enumeración de grupos.

```powershell
# Enumeración de grupos
Get-DomainGroup
Get-DomainGroup | Select SamAccountName | Sort-Object SamAccountName
# Obtener todos los grupos que contengan la palabra "admin" en el nombre del grupo
Get-DomainGroup "*admin*"
# Obtener información de un grupo
Get-DomainGroup -Identity "<group-name>"
# Obtener miembros de un grupo
Get-DomainGroupMember -Identity "<group-name>"
Get-DomainGroupMember -Identity "Domain Admins"
Get-DomainGroupMember -Identity "Enterprise Admins" -Domain <ACME.LOCAL>
# Obtener miembros de un grupo recursivamente
Get-DomainGroupMember -Identity "<group-name>" -Recurse
```

Enumeración de computadoras.

```powershell
# Enumeración de computadoras
Get-DomainComputer
Get-DomainComputer | Select Name, DNSHostName, OperatingSystem | Sort-Object Name
# Filtro de computadoras por sistema operativo
Get-DomainComputer -OperatingSystem "*<operating-system>*" | Select Name, OperatingSystem | Sort-Object Name
# Obtención de computadoras activos
Get-DomainComputer -Ping | Select Name, DNSHostName | Sort-Object Name
```

### SharpView

Enumeración de usuarios.

```powershell
# Enumeración de usuarios
.\SharpView.exe Get-DomainUser *
# Obtener información de un usuario
.\SharpView.exe Get-DomainUser -Identity "<user-name>"
# Obtener cuentas con Service Principal Name (SPN)
.\SharpView.exe Get-DomainUser -SPN -Properties samaccountname,ServicePrincipalName
```

Enumeración de grupos.

```powershell
# Enumeración de grupos
.\SharpView.exe Get-DomainGroup *
# Obtener información de un grupo
.\SharpView.exe Get-DomainGroup -Identity "<group-name>"
# Obtener miembros de un grupo
.\SharpView.exe Get-DomainGroupMember -Identity "<group-name>"
.\SharpView.exe Get-DomainGroupMember -Identity "Domain Admins"
# Obtener miembros de un grupo recursivamente
.\SharpView.exe Get-DomainGroupMember -Identity "<group-name>" -Recurse
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://activedirectory.mrw0l05zyn.cl/recoleccion-de-informacion-y-enumeracion/enumeracion-autenticada/enumeracion-de-usuarios-grupos-y-computadoras.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
